private void ChangeState()
        {
            if (NextState is null)
            {
                return;
            }
            if (NextState == CurrentState)
            {
                return;
            }
            if (!NextState.HasLoaded)
            {
                NextState.Load();
            }

            CurrentState = NextState;
            NextState    = null;
        }