internal void RemovePortableExperienceElement(string id)
    {
        if (portableExperiencesPool == null)
        {
            return;
        }

        if (activePortableExperienceItems.ContainsKey(id))
        {
            PortableExperienceTaskbarItem peToRemove = activePortableExperienceItems[id];

            peToRemove.mainButton.OnToggleOn  -= OnWindowToggleOn;
            peToRemove.mainButton.OnToggleOff -= OnWindowToggleOff;

            activePortableExperienceItems.Remove(id);
            portableExperiencesPool.Release(activePortableExperiencesPoolables[id]);
            activePortableExperiencesPoolables.Remove(id);
        }

        if (activePortableExperienceItems.Count == 0)
        {
            portableExperiencesDiv.SetActive(false);
        }

        AdjustRightButtonsLayoutWidth();
    }
    internal void AddPortableExperienceElement(string id, string name, string iconUrl)
    {
        if (portableExperiencesPool == null)
        {
            return;
        }

        portableExperiencesDiv.SetActive(true);

        PoolableObject newPEPoolable = portableExperiencesPool.Get();

        newPEPoolable.gameObject.name = $"PortableExperienceItem ({id})";
        newPEPoolable.gameObject.transform.SetParent(rightButtonsContainer.transform);
        newPEPoolable.gameObject.transform.localScale = Vector3.one;
        newPEPoolable.gameObject.transform.SetAsFirstSibling();

        PortableExperienceTaskbarItem newPEItem = newPEPoolable.gameObject.GetComponent <PortableExperienceTaskbarItem>();

        newPEItem.ConfigureItem(id, name, iconUrl, controller);
        newPEItem.mainButton.OnToggleOn  += OnWindowToggleOn;
        newPEItem.mainButton.OnToggleOff += OnWindowToggleOff;

        activePortableExperienceItems.Add(id, newPEItem);
        activePortableExperiencesPoolables.Add(id, newPEPoolable);

        AdjustRightButtonsLayoutWidth();
    }