public bool IsSubstateOf(TState state)
        {
            if (_superstate is null)
            {
                return(false);
            }

            if (state.Equals(_superstate.State))
            {
                return(true);
            }

            return(_superstate.IsSubstateOf(state));
        }
        public void AddSuperstate(IStateConfigurationAsyncInternal <T, TState, TTrigger> superStateConfiguration)
        {
            if (IsSubstateOf(superStateConfiguration.State))
            {
                throw new ArgumentOutOfRangeException($"{State} is already a sub-state of {superStateConfiguration.State}.");
            }

            if (superStateConfiguration.IsSubstateOf(State))
            {
                throw new ArgumentOutOfRangeException($"{superStateConfiguration.State} is already a sub-state of {State}.");
            }

            _superstate = superStateConfiguration;
        }