public StepTransitionResult Back()
        {
            if (!CanGoBack)
            {
                return(StepTransitionResult.Failure("This is the first step"));
            }

            _currentIndex--;
            return(StepTransitionResult.Success());
        }
        public StepTransitionResult Next(Node node)
        {
            if (node == null)
            {
                throw new ArgumentNullException(nameof(node));
            }

            if (!CanGoForward)
            {
                return(StepTransitionResult.Failure("This is the last step"));
            }

            StepTransitionResult result = _steps[_currentIndex].Next(node);

            if (result.CanTransition)
            {
                _currentIndex++;
            }
            return(result);
        }