/**
  * Assemble the segment
  *
  * @return string
  */
 public function assemble()
 {
     if ($this->_segment instanceof FieldExpression) {
         return $this->assembleFieldExpression($this->_segment);
     } else {
         if ($this->_segment instanceof TableExpression) {
             return $this->assembleTableExpression($this->_segment);
         } else {
             if ($this->_segment instanceof NumericExpression) {
                 return $this->assembleNumericExpression($this->_segment);
             } else {
                 if ($this->_segment instanceof StringExpression) {
                     return $this->assembleStringExpression($this->_segment);
                 } else {
                     if ($this->_segment instanceof ArrayExpression) {
                         return $this->assembleArrayExpression($this->_segment);
                     } else {
                         if ($this->_segment instanceof ValueExpression) {
                             return $this->assembleValueExpression($this->_segment);
                         } else {
                             if ($this->_segment instanceof CaseExpression) {
                                 return $this->assembleCaseExpression($this->_segment);
                             } else {
                                 if ($this->_segment instanceof IfExpression) {
                                     return $this->assembleIfExpression($this->_segment);
                                 } else {
                                     if ($this->_segment instanceof AbstractArithmeticExpression) {
                                         return $this->assembleArithmeticExpression($this->_segment);
                                     } else {
                                         if ($this->_segment instanceof CounterExpression) {
                                             return $this->assembleCounterExpression($this->_segment);
                                         } else {
                                             if ($this->_segment instanceof NowExpression) {
                                                 return $this->_segment->getFunction();
                                             } else {
                                                 if ($this->_segment instanceof UnixTimestampExpression) {
                                                     return $this->_segment->getFunction();
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return parent::assemble();
 }
 /**
  * Assemble the segment
  *
  * @return string
  */
 public function assemble()
 {
     if ($this->_segment instanceof AllSelectExpression) {
         return $this->assembleAllSelectExpression($this->_segment);
     } else {
         if ($this->_segment instanceof ConcatSelectExpression) {
             return $this->assembleConcatSelectExpression($this->_segment);
         } else {
             if ($this->_segment instanceof SubQuerySelectExpression) {
                 return $this->assembleSubQueryExpression($this->_segment);
             } else {
                 if ($this->_segment instanceof NowSelectExpression) {
                     return $this->assembleNowSelectExpression($this->_segment);
                 } else {
                     if ($this->_segment instanceof SubStringSelectExpression) {
                         return $this->assembleSubStringSelectExpression($this->_segment);
                     } else {
                         if ($this->_segment instanceof FormatSelectExpression) {
                             return $this->assembleFormatSelectExpression($this->_segment);
                         } else {
                             if ($this->_segment instanceof CountSelectExpression) {
                                 return $this->assembleCountFunction($this->_segment);
                             } else {
                                 if ($this->_segment instanceof FunctionSelectExpression) {
                                     return $this->assembleFunction($this->_segment);
                                 } else {
                                     if ($this->_segment instanceof ExpressionSelectExpression) {
                                         return $this->assembleExpressionSelect($this->_segment);
                                     } else {
                                         if ($this->_segment instanceof CustomSelectExpression) {
                                             return $this->assembleCustomSelect($this->_segment);
                                         } else {
                                             if ($this->_segment instanceof FieldSelectExpression) {
                                                 return $this->assembleField($this->_segment);
                                             } else {
                                                 if ($this->_segment instanceof TableSelectExpression) {
                                                     return $this->assembleTable($this->_segment);
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return parent::assemble();
 }
 /**
  * Assemble the segment
  *
  * @return string
  */
 public function assemble()
 {
     if ($this->_segment instanceof EqualPredicate) {
         return $this->assembleEqualPredicate($this->_segment);
     }
     if ($this->_segment instanceof NotEqualPredicate) {
         return $this->assembleNotEqualPredicate($this->_segment);
     } else {
         if ($this->_segment instanceof PredicateSet) {
             return $this->assemblePredicateSet($this->_segment);
         } else {
             if ($this->_segment instanceof BetweenPredicate) {
                 return $this->assembleBetweenPredicate($this->_segment);
             } else {
                 if ($this->_segment instanceof AbstractOperatorPredicate) {
                     return $this->assembleOperator($this->_segment);
                 }
             }
         }
     }
     return parent::assemble();
 }
 public function assemble()
 {
     if ($this->_segment instanceof ValuesClause) {
         return $this->assembleValuesClause($this->_segment);
     } else {
         if ($this->_segment instanceof SelectClause) {
             return $this->assembleSelectClause($this->_segment);
         } else {
             if ($this->_segment instanceof OrderByClause) {
                 return $this->assembleOrderByClause($this->_segment);
             } else {
                 if ($this->_segment instanceof LimitClause) {
                     return $this->assembleLimitClause($this->_segment);
                 } else {
                     if ($this->_segment instanceof JoinClause) {
                         return $this->assembleJoinClause($this->_segment);
                     } else {
                         if ($this->_segment instanceof InsertClause) {
                             return $this->assembleInsertClause($this->_segment);
                         } else {
                             if ($this->_segment instanceof AbstractPredicateClause) {
                                 return $this->assemblePredicateClause($this->_segment);
                             } else {
                                 if ($this->_segment instanceof AbstractTableClause) {
                                     return $this->assembleAbstractTableClause($this->_segment);
                                 } else {
                                     if ($this->_segment instanceof AbstractFieldClause) {
                                         return $this->assembleAbstractFieldClause($this->_segment);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return parent::assemble();
 }