original_string: protected function _addExpressions($conditions, $values, $types)
      {
          $rawValues = array_values($values);
          $keyValues = array_keys($values);
  
          foreach ($conditions as $k => $c) {
              $numericKey = is_numeric($k);
  
              if ($numericKey && empty($c)) {
                  continue;
              }
  
              if (!$c instanceof ExpressionInterface) {
                  continue;
              }
  
              $this->_conditions[] = $c;
              $value = isset($rawValues[$k]) ? $rawValues[$k] : 1;
  
              if ($value === 'literal') {
                  $value = $keyValues[$k];
                  $this->_values[] = $value;
                  continue;
              }
  
              if ($value === 'identifier') {
                  $value = new IdentifierExpression($keyValues[$k]);
                  $this->_values[] = $value;
                  continue;
              }
  
              $type = isset($types[$k]) ? $types[$k] : null;
  
              if ($type !== null && !$value instanceof ExpressionInterface) {
                  $value = $this->_castToExpression($value, $type);
              }
  
              if ($value instanceof ExpressionInterface) {
                  $this->_values[] = $value;
                  continue;
              }
  
              $this->_values[] = ['value' => $value, 'type' => $type];
          }
      }
code: protected function _addExpressions($conditions, $values, $types)
      {
          $rawValues = array_values($values);
          $keyValues = array_keys($values);
  
          foreach ($conditions as $k => $c) {
              $numericKey = is_numeric($k);
  
              if ($numericKey && empty($c)) {
                  continue;
              }
  
              if (!$c instanceof ExpressionInterface) {
                  continue;
              }
  
              $this->_conditions[] = $c;
              $value = isset($rawValues[$k]) ? $rawValues[$k] : 1;
  
              if ($value === 'literal') {
                  $value = $keyValues[$k];
                  $this->_values[] = $value;
                  continue;
              }
  
              if ($value === 'identifier') {
                  $value = new IdentifierExpression($keyValues[$k]);
                  $this->_values[] = $value;
                  continue;
              }
  
              $type = isset($types[$k]) ? $types[$k] : null;
  
              if ($type !== null && !$value instanceof ExpressionInterface) {
                  $value = $this->_castToExpression($value, $type);
              }
  
              if ($value instanceof ExpressionInterface) {
                  $this->_values[] = $value;
                  continue;
              }
  
              $this->_values[] = ['value' => $value, 'type' => $type];
          }
      }
code_tokens: protected function _addExpressions ( $ conditions , $ values , $ types ) { $ rawValues = array_values ( $ values ) ; $ keyValues = array_keys ( $ values ) ; foreach ( $ conditions as $ k => $ c ) { $ numericKey = is_numeric ( $ k ) ; if ( $ numericKey && empty ( $ c ) ) { continue ; } if ( ! $ c instanceof ExpressionInterface ) { continue ; } $ this -> _conditions [ ] = $ c ; $ value = isset ( $ rawValues [ $ k ] ) ? $ rawValues [ $ k ] : 1 ; if ( $ value === 'literal' ) { $ value = $ keyValues [ $ k ] ; $ this -> _values [ ] = $ value ; continue ; } if ( $ value === 'identifier' ) { $ value = new IdentifierExpression ( $ keyValues [ $ k ] ) ; $ this -> _values [ ] = $ value ; continue ; } $ type = isset ( $ types [ $ k ] ) ? $ types [ $ k ] : null ; if ( $ type !== null && ! $ value instanceof ExpressionInterface ) { $ value = $ this -> _castToExpression ( $ value , $ type ) ; } if ( $ value instanceof ExpressionInterface ) { $ this -> _values [ ] = $ value ; continue ; } $ this -> _values [ ] = [ 'value' => $ value , 'type' => $ type ] ; } }
docstring: Iterates over the passed in conditions and ensures that there is a matching true value for each.
  If no matching true value, then it is defaulted to '1'.
  
  @param array|\Cake\Database\ExpressionInterface $conditions Must be a ExpressionInterface instance, or an array of ExpressionInterface instances.
  @param array|\Cake\Database\ExpressionInterface $values associative array of values of each condition
  @param array $types associative array of types to be associated with the values
  
  @return void
docstring_tokens: Iterates over the passed in conditions and ensures that there is a matching true value for each . If no matching true value then it is defaulted to 1 .