Track Change in C# RhinoCommon


I was wondering what is the best way to do the following (and I would appreciate some help):

Let’s say I want to create my own Point class - MyPoint - that has the Point3d information plus some other metadata. And I want the user to be able to draw MyPoint. That means the user would draw a normal point and I would create an instance of the MyPoint class and save the GUID of the Point Object there. (And I would try to serialize MyPoint using the custom UserData).

Now…the problem is when the user moves or deletes the original point. I want to be able to detect this action immediately and update my MyPoint instance accordingly. (Maybe I have some information displayed in the Conduit that I want to be moved to the new place, or delete the instance if the original point is deleted, handle the Undo appropriately, etc.)

Can I detect this automatically? When the user moves or deletes geometry in the document? Or when the user uses Undo maybe? Was there an EventWatcher example?