public static IFunction Call(this IFunction function, IFunction[] arguments, string output, CompilationContext info, CallSite?callSite = null) { if (function == null) { throw new ArgumentNullException(nameof(function)); } if (callSite.HasValue) { info.Push(callSite.Value); } var retval = function.CallInternal(arguments, output, info); if (callSite.HasValue) { info.Pop(); } return(retval); }