public function visitFunctionCall(O\FunctionCallExpression $expression)
{
$nameExpression = $expression->getName();
$this->walk($nameExpression);
$this->walkAll($expression->getArguments());
if ($nameExpression instanceof O\ValueExpression) {
$function = $this->typeSystem->getFunction($nameExpression->getValue());
$this->metadata[$expression] = $function;
$this->analysis[$expression] = $function->getReturnType();
} else {
throw new TypeException('Invalid function expression: dynamic function calls are not allowed');
}
}