Deleting Custom Nodes with Custom User Objects

I have a question about the deletion of nodes as it relates to custom properties of a node.

I have a custom node type derived from GoBasicNode. Inside of CustomGoBasic Node, I have a property called DataObject() as MyDataObjectClass.
When the DataObject property gets set, I hook into MyDataObjectClass.MyEvent by doing an AddHandler, and when the DataObject is set to nothing, I remove said handler
Public Property DataObject() As MyDataObjectClass
Return _dataObject
End Get
Set(ByVal value As MyDataObjectClass)
If value IsNot _dataObject Then
If _DataObject IsNot Nothing Then
RemoveHandler _DataObject.MyEvent , AddressOf OnMyEvent
End If
_DataObject = value
If _dataObject IsNot Nothing Then
AddHandler _DataObject.MyEvent , AddressOf OnMyEvent OnPropertyChanged
Text = ""
End If
End If
End Set
End Property
My first question is this: Is there a method that I can override, or an event handler that I can intercept that will ALWAY fire when a node is deleted so that I can make sure that I explicitly set my DataObject = nothing? As you can see, not setting the Dataobject to nothing is going to leave the EventHandler hanging around for my object and therefore my object will not get destroyed.
Second Question: When the form is closed that contains the document that has all of these nodes, are the nodes explicitly deleted by the GoDiagram library or do I need to worry about making an explicit call at that time to free my DataObjects?
Hope this makes sense...

No one? Somebody please help me hereā€¦

If I was not clear tell me what you do not understand and I will be more explicit.

<SPAN =281130819-22102007>Override GoObject.OnLayerChanged in your Node and it will be called when the node is removed from the Layer or Document (and would be called for each Node on a GoDocument.Clear).

But to catch a user closing the Form, you have to override the protected Control.Dispose(bool) method.