code: protected function getDialectStatement(
          /*# string */ $method,
          /*# bool */ $setTable = true
      )/*# StatementInterface */ {
          // dialect
          $dialect = $this->getDialect();
  
          // check method
          if (!method_exists($dialect, $method)) {
              throw new BadMethodCallException(
                  Message::get(Message::BUILDER_UNKNOWN_METHOD, $method),
                  Message::BUILDER_UNKNOWN_METHOD
              );
          }
  
          /* @var $statement StatementInterface */
          $statement = call_user_func([$dialect, $method], $this);
  
          // prevous statement like in UNION
          if ($this->hasPrevious()) {
              $statement->setPrevious($this->getPrevious());
              $this->setPrevious(null);
  
          // set tables
          } elseif ($setTable && count($this->tables)) {
              if (method_exists($statement, 'from')) {
  
                  // FROM all tables
                  $statement->from($this->tables);
              } else {
  
                  // INTO the first table
                  $statement->into($this->tables[array_keys($this->tables)[0]]);
              }
          }
  
          return $statement;
      }
docs: Get the statement object
  
  @param  string $method
  @param  bool $setTable set with builder tables
  @return StatementInterface
  @throws BadMethodCallException if no method found for this dialect
  @access protected