protected override void OnExecute(Engine engine)
 {
     if (Prototype != null)
     {
         var func = Prototype;
         var open = func.IndexOf('(');
         var close = func.LastIndexOf(')');
         if (open == -1 || close == -1) engine.Throw("missing parentheses: " + func);
         FunctionName = func.Substring(0, open);
         var fields = func.Substring(open + 1, close - (open + 1)).Split(',');
         Parameters.AddRange(fields.Select(field => ParseParameter(engine, field.Trim())));
     }
     engine.DefineFunction(FunctionName, this);
 }
 protected override void OnExecute(Engine engine)
 {
     engine.DefineFunction(FunctionName, this);
 }