public virtual void Remove(DockPaneLayoutEngine pane)
        {
            if (pane.Children.Count > 0)
            {
                var newParent = pane.Children.Last();
                pane._children.Remove(newParent);
                ChildReplace(pane, newParent);
                newParent._children.InsertRange(0, pane.Children);
                newParent.Initialize(this, pane.Owner, pane.Align);
            }
            else
                _children.Remove(pane);

            RemoveEngine(pane);
            pane._ownNodes.Clear();
            pane._ownNodes.Add(pane);
            pane.Top = null;
            pane.Bottom = null;
            pane.Left = null;
            pane.Right = null;
            pane._children.Clear();
            //Initializeは実行前にChildrenをClearしないと子要素が巻き添え食らう
            pane.Initialize(null, null, DockDirection.None);
            pane.OnRemoved(new EventArgs());
            OnPaneRemoved(new LayoutEngineEventArgs(pane));
        }