/// <summary>
        /// Resets the automaton to the initial state.
        /// </summary>
        public void Reset()
        {
            if (CurrentStep == null)
            {
                CurrentStep = InitialState;
            }

            CurrentStep?.Reset();
        }