public StateMachineSafeEnumerator(
     IStateMachineEnumerator <TContext, TStateId, TStatefulTask> realEnumerator,
     bool continueExecutionOnFailed,
     Action <Exception> handler)
 {
     _realEnumerator            = realEnumerator.ThrowIfNull(nameof(realEnumerator));
     _continueExecutionOnFailed = continueExecutionOnFailed;
     _handler = handler.ThrowIfNull(nameof(handler));
 }
        public StateMachineWithRollbackEnumerator(
            IStateMachineEnumerator <TContext, TStateId, TStatefulTaskWithRollback> realEnumerator,
            bool continueRollbackOnFailed)
        {
            _realEnumerator = realEnumerator.ThrowIfNull(nameof(realEnumerator));

            _rollbackScope = new RollbackScope <TContext>(
                continueRollbackOnFailed, realEnumerator.Context
                );
        }