/// <summary>Undo an action. Calls IHistoryAction.Undo().</summary>
        /// <remarks>Does nothing if there is no action to undo.</remarks>
        public void Undo()
        {
            if (undo.Count == 0)
            {
                return;
            }

            IHistoryAction action = undo.Pop();

            redo.Push(action);
            action.Undo();
        }
        public void Undo()
        {
            if (_history.Count == 0)
            {
                throw new NothingToUndoException();
            }

            IHistoryAction action = _history.Pop();

            _future.Push(action);
            _acceptNew = false;
            action.Undo();
            _acceptNew = true;

            CanUndo = _history.Count > 0;
            CanRedo = true;
        }