private void DrawItem(TreeItem item)
        {
            if (Event.current.type == EventType.Repaint)
            {
                GUIStyle rowStyle = m_NextRowIndex % 2 == 0 ? BackgroundStyleEven : BackgroundStyleOdd;
                bool     selected = false;
                if (item == m_SelectedItem)
                {
                    //rowStyle = LabelStyle;
                    selected = true;
                }

                rowStyle.Draw(m_NextItemRect, false, false, selected, selected);
            }


            GUIContent label = item.Content;

            Rect labelRect = m_NextItemRect;

            labelRect.xMin += item.Depth * kIndent;
            GUI.enabled     = item.OnSelected != null;
            if (Event.current.type == EventType.Repaint)
            {
                GUIStyle style = LabelStyle;
                if (item.PartiallyTicked)
                {
                    style = MixedLabelStyle;
                }
                bool showTick = item.Ticked | item.PartiallyTicked;
                style.Draw(labelRect, label, false, showTick, showTick, false);
            }
            if ((Event.current.type == EventType.MouseDown) && labelRect.Contains(Event.current.mousePosition))
            {
                //if (GUI.Button(labelRect, label, LabelStyle)) {
                m_SelectedItem = item;
                if (m_SelectedItem.OnSelected != null)
                {
                    m_SelectedItem.OnSelected(item);
                }
                EditorWindow.Close();
            }
            GUI.enabled       = true;
            m_NextItemRect.y += EditorGUIUtility.singleLineHeight;
            m_NextRowIndex   += 1;
        }