original_string: public function withParameter(string $key, $parameter): self
      {
          $clause = $this->clauses->last();
  
          if (!$clause instanceof Clause\Parametrable) {
              throw new NonParametrableClause;
          }
  
          $clause = $clause->withParameter($key, $parameter);
          $query = new self;
          $query->clauses = $this
              ->clauses
              ->dropEnd(1)
              ->add($clause);
  
          return $query;
      }
code: public function withParameter(string $key, $parameter): self
      {
          $clause = $this->clauses->last();
  
          if (!$clause instanceof Clause\Parametrable) {
              throw new NonParametrableClause;
          }
  
          $clause = $clause->withParameter($key, $parameter);
          $query = new self;
          $query->clauses = $this
              ->clauses
              ->dropEnd(1)
              ->add($clause);
  
          return $query;
      }
code_tokens: public function withParameter ( string $ key , $ parameter ) : self { $ clause = $ this -> clauses -> last ( ) ; if ( ! $ clause instanceof Clause \ Parametrable ) { throw new NonParametrableClause ; } $ clause = $ clause -> withParameter ( $ key , $ parameter ) ; $ query = new self ; $ query -> clauses = $ this -> clauses -> dropEnd ( 1 ) -> add ( $ clause ) ; return $ query ; }
docstring: Attach the given parameter to the last clause
  
  @param string $key
  @param mixed $parameter
  
  @throws NonParametrableClause
  
  @return self
docstring_tokens: Attach the given parameter to the last clause