private PackageGroup GetOrCreateGroup(string groupName)
        {
            var group = packageGroups.FirstOrDefault(g => string.Compare(g.name, groupName, StringComparison.InvariantCultureIgnoreCase) == 0);

            if (group != null)
            {
                return(group);
            }

            var hidden   = string.IsNullOrEmpty(groupName);
            var expanded = m_PageManager.IsGroupExpanded(groupName);

            group = new PackageGroup(m_ResourceLoader, m_PageManager, m_SettingsProxy, m_PackageDatabase, groupName, GetGroupDisplayName(groupName), expanded, hidden);
            if (!hidden)
            {
                group.onGroupToggle += value =>
                {
                    var s = GetFirstSelectedItem();
                    if (value && s != null && group.Contains(s))
                    {
                        EditorApplication.delayCall += ScrollToSelection;
                    }
                };
            }
            m_ItemsList.Add(group);
            return(group);
        }