/**
  * @param Optional $expression
  *
  * @return boolean
  */
 public function endVisitOptional(Optional $expression)
 {
     /** @var Expression[]|array $children */
     $children = array_pop($this->stackOfChildren);
     $optionalExpression = array_pop($children);
     $newNonTerminal = $this->createNewNonTerminal();
     $expression = ExpressionSymbol::createAdapterForSymbol($newNonTerminal);
     $this->setAsRootOrAddSibling($expression);
     $this->addEpsilonAlternativeForItem($newNonTerminal, $optionalExpression);
 }