public void Undo ()
{
if (undoStack.Count <= 0)
return;
OnBeforeUndoOperation (EventArgs.Empty);
isInUndo = true;
var operation = undoStack.Pop ();
redoStack.Push (operation);
operation.Undo (this);
isInUndo = false;
OnUndone (new UndoOperationEventArgs (operation));
}