public static NeuOperation Call(
        this NeuInterpreter interpreter,
        String name,
        IEnumerable <Node> rawArgs)
    {
        var evalArguments = new List <NeuArgument>();

        ///

        foreach (var rawArg in rawArgs)
        {
            var argValue = interpreter.Execute(rawArg);

            ///

            var arg = new NeuArgument(null, argValue);

            ///

            evalArguments.Add(arg);
        }

        ///

        switch (true)
        {
        case var _ when IsNeuPrimitive(name):

            return(interpreter.CallPrimitive(name, rawArgs, evalArguments));

        ///

        default:

            return(interpreter.CallVTable(name, rawArgs, evalArguments));
        }
    }