original_string: public function join(string $fromAlias, string $join, string $alias, string $condition = null): self
      {
          return $this->innerJoin($fromAlias, $join, $alias, $condition);
      }
code: public function join(string $fromAlias, string $join, string $alias, string $condition = null): self
      {
          return $this->innerJoin($fromAlias, $join, $alias, $condition);
      }
code_tokens: public function join ( string $ fromAlias , string $ join , string $ alias , string $ condition = null ) : self { return $ this -> innerJoin ( $ fromAlias , $ join , $ alias , $ condition ) ; }
docstring: Creates and adds a join to the query
  
  Example
  <code>
  $sb = new Select();
  $sb
  ->select('u.name')
  ->from('users', 'u')
  ->join('u', 'phone', 'p', 'p.is_primary = 1');
  </code>
  
  @param  string $fromAlias The alias that points to a from clause
  @param  string $join      The table name to join
  @param  string $alias     The alias of the join table
  @param  string $condition The condition for the join
  
  @return $this
docstring_tokens: Creates and adds a join to the query