public JavaScriptReduceOperation(ArrowFunctionInstance reduce, ArrowFunctionInstance key, Engine engine, JintPreventResolvingTasksReferenceResolver resolver)
        {
            Reduce    = reduce ?? throw new ArgumentNullException(nameof(reduce));
            Key       = key ?? throw new ArgumentNullException(nameof(key));
            Engine    = engine;
            _resolver = resolver;
            GetReduceFieldsNames();

            _groupedItems = null;
        }
        protected override object EvaluateInternal()
        {
            var funcEnv = LexicalEnvironment.NewDeclarativeEnvironment(_engine, _engine.ExecutionContext.LexicalEnvironment);

            var closure = new ArrowFunctionInstance(
                _engine,
                _function,
                funcEnv,
                _function.Strict);

            return(closure);
        }
 public RecursiveJsFunction(Engine engine, JsValue item, ArrowFunctionInstance func)
 {
     _engine = engine ?? throw new ArgumentNullException(nameof(engine));
     _item   = item;
     _func   = func ?? throw new ArgumentNullException(nameof(func));
 }