protected void UpdateHoverEditor(MouseEventArgs e)
        {
            PropertyEditor lastHoverEditor = this.hoverEditor;

            this.hoverEditor = this.PickEditorAt(e.X, e.Y, true);
            if (this.hoverEditor == this)
            {
                this.hoverEditor = null;
            }

            if (lastHoverEditor != this.hoverEditor && lastHoverEditor != null)
            {
                lastHoverEditor.OnMouseLeave(EventArgs.Empty);
            }
            if (lastHoverEditor != this.hoverEditor && this.hoverEditor != null)
            {
                // Indent expand button
                if (this.UseIndentChildExpand)
                {
                    int curY = this.headerHeight;
                    foreach (PropertyEditor child in this.propertyEditors)
                    {
                        this.IndentChildExpandOnMouseLeave(EventArgs.Empty, child as GroupedPropertyEditor, curY);
                        curY += child.Height;
                    }
                }

                this.hoverEditor.OnMouseEnter(EventArgs.Empty);
            }
        }
        protected internal override void OnMouseLeave(EventArgs e)
        {
            base.OnMouseLeave(e);
            if (this.hoverEditor != null)
            {
                PropertyEditor lastHoverEditor = this.hoverEditor;
                this.hoverEditor = null;

                if (lastHoverEditor != this.hoverEditor && lastHoverEditor != null)
                {
                    lastHoverEditor.OnMouseLeave(EventArgs.Empty);
                }
            }

            if (this.expandCheckHovered)
            {
                this.Invalidate();
            }
            if (this.activeCheckHovered)
            {
                this.Invalidate();
            }
            this.expandCheckHovered = false;
            this.expandCheckPressed = false;
            this.activeCheckHovered = false;
            this.activeCheckPressed = false;

            // Indent expand button
            if (this.UseIndentChildExpand)
            {
                int curY = this.headerHeight;
                foreach (PropertyEditor child in this.propertyEditors)
                {
                    this.IndentChildExpandOnMouseLeave(e, child as GroupedPropertyEditor, curY);
                    curY += child.Height;
                }
            }
        }