bool IUndoEngineOperations.UndoCore()
        {
            bool succeeded = false;

            if (undoBuffer.Count > 0)
            {
                UndoUnit unitToUndo = undoBuffer.Last();
                undoBuffer.RemoveAt(undoBuffer.Count - 1);
                unitToUndo.Undo();
                redoBuffer.Add(unitToUndo);
                NotifyUndoExecuted(unitToUndo);
                succeeded = true;
            }
            return(succeeded);
        }
            bool IUndoEngineOperations.UndoCore()
            {
                //if there is anything to undo
                bool succeeded = false;

                if (this.containerUndoUnit.DoList.Count > 0)
                {
                    //get the last element done
                    UndoUnit unitToUndo = this.containerUndoUnit.DoList.Last();
                    //remove it
                    this.containerUndoUnit.DoList.RemoveAt(this.containerUndoUnit.DoList.Count - 1);
                    //undo it
                    unitToUndo.Undo();
                    //and insert to the head of redo list
                    this.containerUndoUnit.RedoList.Insert(0, unitToUndo);
                    succeeded = true;
                }
                return(succeeded);
            }