private function parseClosureDeclaration()
{
$this->tokenStack->push();
if (Tokens::T_FUNCTION === $this->tokenizer->peek()) {
$this->consumeToken(Tokens::T_FUNCTION);
}
$closure = $this->builder->buildAstClosure();
$closure->setReturnsByReference($this->parseOptionalByReference());
$closure->addChild($this->parseFormalParameters());
$closure = $this->parseOptionalBoundVariables($closure);
$closure = $this->parseCallableDeclarationAddition($closure);
$closure->addChild($this->parseScope());
return $this->setNodePositionsAndReturn($closure);
}