public Task InvokeStackState()
        {
            if (AnyStackState)
            {
                return(_stackedStates.Pop().Invoke().ContinueWith(task => StackStateChanged?.Invoke()));
            }

            return(Task.CompletedTask);
        }
        public Task ClearStack()
        {
            if (AnyStackState)
            {
                _stackedStates.Clear();
                StackStateChanged?.Invoke();
            }

            return(Task.CompletedTask);
        }
 public Task PushStackState(Func <Task> act)
 {
     _stackedStates.Push(act);
     StackStateChanged?.Invoke();
     return(Task.CompletedTask);
 }