private void Do(IUndoOperation operation, bool clearUndone) { operation.Do(); operations.Enqueue(operation); if(clearUndone) operationsUndone.Clear(); OperationDone(this, operation); }