private bool GUIMultipleFeaturesInternal(string label, string tooltip, string[] labelsAndFeatures, bool enabled = true, bool increaseIndentLevel = false, string helpTopic = null, bool showHelp = true, float width = 146, bool visible = true)
    {
        if (!enabled)
        {
            GUI.enabled = false;
        }
        if (increaseIndentLevel)
        {
            label = "▪  " + label;
        }

        string[] labels   = new string[labelsAndFeatures.Length];
        string[] features = new string[labelsAndFeatures.Length];

        int feature = 0;

        for (int i = 0; i < labelsAndFeatures.Length; i++)
        {
            string[] data = labelsAndFeatures[i].Split('|');
            labels[i]   = data[0];
            features[i] = data[1];

            if (data.Length > 1 && !string.IsNullOrEmpty(features[i]))
            {
                if (TCP2_ShaderGeneratorUtils.HasFeatures(mCurrentConfig, features[i]))
                {
                    feature = i;
                }
            }
        }

        visible = mHideDisabled ? enabled : visible;

        if (visible)
        {
            string help = string.IsNullOrEmpty(helpTopic) ? label.TrimStart('▪', ' ') : helpTopic;
            EditorGUILayout.BeginHorizontal();
            if (showHelp)
            {
                TCP2_GUI.HelpButton(label.TrimStart('▪', ' '), help);
            }
            TCP2_GUI.SubHeader(label, tooltip, (feature > 0) && enabled, width);
            feature = EditorGUILayout.Popup(feature, labels);
            EditorGUILayout.EndHorizontal();
        }

        TCP2_ShaderGeneratorUtils.ToggleMultipleFeatures(mCurrentConfig.Features, feature, features);

        if (!enabled)
        {
            GUI.enabled = mGUIEnabled;
        }

        return(feature > 0);
    }