public Tree RemoveTree(object owner)
        {
            Tree t = this.SearchParentByOwner(owner);

            if (t != null)
            {
                foreach (Tree t0 in t)
                {
                    if (_map.IsSameInstance(t0.Owner, owner))
                    {
                        t.Remove(t0);
                        break;
                    }
                }
            }
            return(t);
        }
        public virtual Tree SearchParentByOwner(object owner)
        {
            ObjectIDmap map = Root.Map;

            foreach (Tree t in this)
            {
                if (map.IsSameInstance(t.Owner, owner))
                {
                    return(this);
                }
                else
                {
                    Tree t0 = t.SearchParentByOwner(owner);
                    if (t0 != null)
                    {
                        return(t0);
                    }
                }
            }
            return(null);
        }
        public Tree GetChildByOwner(object owner)
        {
            ObjectIDmap map = Root.Map;

            foreach (Tree t in this)
            {
                if (map.IsSameInstance(t.Owner, owner))
                {
                    return(t);
                }
                else
                {
                    Tree t0 = t.GetChildByOwner(owner);
                    if (t0 != null)
                    {
                        return(t0);
                    }
                }
            }
            return(null);
        }