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