UndoManager : make this an abstract class (interface) with factory ctor that returns a new _UndoManagerProxy