private protected ScriptBlockEnumerator(
     ScriptBlock scriptBlock,
     Closure closure,
     IEnumerator source)
 {
     _pipe        = Unstable.CreateNewPipe(_output = SpanEnabledCollection <PSObject> .Create());
     _scriptBlock = scriptBlock;
     _closure     = closure;
     _source      = source;
 }
        private void Invoke(object dollarUnder = null)
        {
            var current = _source.Current;

            var thisClosure = _closure.With(
                dollarUnder: GetDollarUnder(current),
                args: GetArgs(current));

            Unstable.InvokeWithPipe(
                _scriptBlock,
                useLocalScope: false,
                AutomationNull.Value,
                AutomationNull.Value,
                AutomationNull.Value,
                _pipe,
                invocationInfo: null,
                propagateAllExceptionsToTop: true,
                variablesToDefine: null,
                functionsToDefine: null,
                new object[] { thisClosure });
        }