public void AddChild(TObject parent, TObject child)
        {
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent));
            }
            if (child == null)
            {
                throw new ArgumentNullException(nameof(child));
            }

            if (!TryGet(parent, out ObjectRelativeCollection <TObject> collection))
            {
                collection = new ObjectRelativeCollection <TObject>();

                Add(parent, collection);
            }

            collection.Add(child);
        }
        protected override bool OnRemove(TObject id, ObjectRelativeCollection <TObject> entry)
        {
            m_entries.Remove(id);

            return(base.OnRemove(id, entry));
        }
        protected override void OnAdd(TObject id, ObjectRelativeCollection <TObject> entry)
        {
            base.OnAdd(id, entry);

            m_entries.Add(id, entry);
        }