void CellGUI(Rect cellRect, DataStreamEntry item, int column)
        {
            switch (column)
            {
            case 0:
            {
                var maximized = IsItemMaximized(item.id);
                if (UnityEngine.GUI.Button(cellRect, maximized ? m_MinusGUIContent : m_PlusGUIContent, EditorStyles.toolbarButton))
                {
                    if (!IsSelected(item.id))
                    {
                        m_MaximizedState[item.id] = !maximized;
                    }
                    else
                    {
                        foreach (var i in GetSelection())
                        {
                            m_MaximizedState[i] = !maximized;
                        }
                    }
                    Reload();
                    m_LastReloadTime = Time.unscaledTime;
                }
            }
            break;

            case 1:
            {
                cellRect.xMin += (GetContentIndent(item) + extraSpaceBeforeIconAndLabel);
                EditorGUI.LabelField(cellRect, item.Content);
            }
            break;

            case 2:
                DrawGraph(item.Entry, cellRect, visibleStartTime, visibleDuration, IsItemMaximized(item.id));
                break;
            }
        }
        DataStreamEntry AddItems(DataStreamEntry root)
        {
            root.children = new List <TreeViewItem>();
            if (!root.Entry.HasChildren)
            {
                return(root);
            }

            List <EventDataSet> entries = new List <EventDataSet>();

            foreach (var e in root.Entry.Children)
            {
                if (!e.HasDataAfterFrame(visibleStartTime))
                {
                    continue;
                }
                if (m_FilterFunc(e.Graph))
                {
                    entries.Add(e);
                }
            }

            if (m_DataSetComparer != null)
            {
                entries.Sort(m_DataSetComparer);
            }

            foreach (var e in entries)
            {
                var dse = new DataStreamEntry(e, root.depth + 1);
                root.AddChild(dse);
                AddItems(dse);
            }

            return(root);
        }