internal override void OnRemovedFromDocument(Document.DocumentEventArgs e)
        {
            base.OnRemovedFromDocument(e);

            foreach (var child in children.Values)
            {
                e.Document.DeleteElement(child);
            }
        }
        internal override void OnAddedToDocument(Document.DocumentEventArgs e)
        {
            base.OnAddedToDocument(e);

            foreach (var child in children.Values)
            {
                e.Document.AddElement(child);

                if (child is ILabelElement)
                {
                    (child as ILabelElement).Label.PositionBySite(child);
                }

                if (child is NodeElement)
                {
                    (child as NodeElement).UpdateConnectorsPosition();
                }
            }

            Label.PositionBySite(this);
        }