protected virtual void Dispose(bool disposing)
{
if (Defunct)
return;
if (parent != null) {
Desktop.RaiseChildRemoved (parent, this);
if (parent.children != null)
parent.children.Remove (this);
}
if (children is List<Accessible>)
children.Clear ();
if (stateSet == null)
Defunct = true;
if (ObjectEvents != null) {
ObjectEvents.PropertyChange -= OnPropertyChange;
ObjectEvents.ChildrenChanged -= OnChildrenChanged;
ObjectEvents.StateChanged -= OnStateChanged;
}
}