public TypeNode VisitAnonymousFunction(AnonymousFunctionExpression node, List <TypeNode> parameterTypes)
        {
            List <TypeNode> newScope = new List <TypeNode>();

            newScope.AddRange(parameterTypes);
            newScope.AddRange(node.Types);

            TypeNode returnType = _getType(node.ReturnValue, newScope);

            FunctionTypeNode functionType = new FunctionTypeNode(returnType, newScope, 0, 0);

            int           line      = node.LineNumber;
            int           letter    = node.LineNumber;
            ConditionNode condition = new ConditionNode(node.ReturnValue, line, letter);
            FunctionNode  function  = new FunctionNode(functionType.ToString(), condition,
                                                       node.Identifiers, functionType, line, letter);

            node.Reference = _functions.Count;
            _functions.Add(function);
            return(new FunctionTypeNode(returnType, node.Types, 0, 0));
        }