//-------------------------------------------------
            public void Notify(NodeNotification Notification_in)
            {
                // Notify on this node.
                if ((this._Listener != null))
                {
                    this._Listener.Notify(Notification_in);
                    return;
                }

                if (Notification_in is NodeUpdateNotification)
                {
                    this.Fire_NodeUpdate(new NodeUpdate_EventArgs((NodeUpdateNotification)Notification_in));
                }
                else if (Notification_in is NodeClearChildrenNotification)
                {
                    this.Fire_NodeClearChildren(new NodeClearChildren_EventArgs((NodeClearChildrenNotification)Notification_in));
                }
                else if (Notification_in is NodeAddChildNotification)
                {
                    this.Fire_NodeAddChild(new NodeAddChild_EventArgs((NodeAddChildNotification)Notification_in));
                }
                else if (Notification_in is NodeRemoveChildNotification)
                {
                    this.Fire_NodeRemoveChild(new NodeRemoveChild_EventArgs((NodeRemoveChildNotification)Notification_in));
                }

                // Propogate notification upwards
                GenericNode <T> parent = this.ParentNode;

                if ((parent != null))
                {
                    parent.Notify(Notification_in);
                }
                return;
            }