original_string: public function andWhere(...$conditions): self
      {
          $condition = $this->prepareCondition($conditions);
  
          if ($this->where instanceof CompositeBuilder
              && $this->where->getType() === 'AND') {
              $this->where->addPart($condition);
          } else {
              $this->where = new CompositeBuilder([$this->where, $condition]);
          }
          return $this;
      }
code: public function andWhere(...$conditions): self
      {
          $condition = $this->prepareCondition($conditions);
  
          if ($this->where instanceof CompositeBuilder
              && $this->where->getType() === 'AND') {
              $this->where->addPart($condition);
          } else {
              $this->where = new CompositeBuilder([$this->where, $condition]);
          }
          return $this;
      }
code_tokens: public function andWhere ( ... $ conditions ) : self { $ condition = $ this -> prepareCondition ( $ conditions ) ; if ( $ this -> where instanceof CompositeBuilder && $ this -> where -> getType ( ) === 'AND' ) { $ this -> where -> addPart ( $ condition ) ; } else { $ this -> where = new CompositeBuilder ( [ $ this -> where , $ condition ] ) ; } return $ this ; }
docstring: Add WHERE .. AND .. condition
  
  Adds one or more restrictions to the query results, forming a logical
  conjunction with any previously specified restrictions.
  <code>
  $sb = new SelectBuilder();
  $sb
  ->select('u')
  ->from('users', 'u')
  ->where('u.username LIKE ?', '%Smith%')
  ->andWhere('u.is_active = ?', 1);
  </code>
  
  @param  string[] $conditions Optional the query restriction predicates
  
  @return $this
docstring_tokens: Add WHERE .. AND .. condition