public bool MovePrevious() { if (undoStack.Count == 0) return false; do { redoStack.AddLast(undoStack.Last.Value); undoStack.RemoveLast(); } while (undoStack.Count > 0 && undoStack.Last.Value.PreviousAction == null); return undoStack.Count > 0; }