private void SwapPages(KMSelectable oldPage, KMSelectable newPage, bool deactivateOldPage = true)
    {
        RootSelectable.Children = new KMSelectable[1] {
            TempSelectable
        };
        RootSelectable.ChildRowLength         = 1;
        RootSelectable.DefaultSelectableIndex = 0;

        foreach (KMSelectable selectable in oldPage.Children)
        {
            if (selectable != null)
            {
                selectable.Parent    = oldPage;
                selectable.OnCancel -= OnCancel;
            }
        }

        RootSelectable.Reproxy();

        if (deactivateOldPage)
        {
            oldPage.gameObject.SetActive(false);
        }

        if (newPage != null)
        {
            EnablePage(newPage);
        }
        else
        {
            RootSelectable.Reproxy();
        }
    }
    public static void AddPagePrefab(string name, KMSelectable pageSelectable)
    {
        if (PagePrefabs.ContainsKey(name))
        {
            return;
        }

        PagePrefabs[name] = pageSelectable;
        pageSelectable.EnsureModSelectable();
        pageSelectable.Reproxy();
    }
    public override void SetPage(int pageIndex, int pageOffset = 0)
    {
        if (_mods == null)
        {
            return;
        }

        base.SetPage(pageIndex, pageOffset);

        Page.HeaderText = string.Format("<b>Enabled/Disabled Mods</b>\n<size=16>{0}</size>", PageName);

        if (_mods.Length == 0)
        {
            KMSelectable pageSelectable = GetComponent <KMSelectable>();
            pageSelectable.DefaultSelectableIndex = 1;
            pageSelectable.Reproxy();
            return;
        }
    }