public static void BeginPropertyToggleFoldGroup(string title, FoldToggleParameter foldToggleParameter)
        {
            var backgroundRect = GUILayoutUtility.GetRect(1f, 17f);

            var labelRect = backgroundRect;

            labelRect.xMin += 32f;
            labelRect.xMax -= 20f;

            var foldoutRect = backgroundRect;

            foldoutRect.y     += 1f;
            foldoutRect.width  = 13f;
            foldoutRect.height = 13f;

            var toggleRect = backgroundRect;

            toggleRect.x     += 16f;
            toggleRect.y     += 2f;
            toggleRect.width  = 13f;
            toggleRect.height = 13f;

            backgroundRect.xMin   = 0f;
            backgroundRect.width += 4f;

            // Background
            EditorGUI.DrawRect(backgroundRect, Styles.HeaderBackgroundColor);

            // Title
            using (new EditorGUI.DisabledScope(!foldToggleParameter.IsChecked))
            {
                EditorGUI.LabelField(labelRect, new GUIContent(title), EditorStyles.boldLabel);
            }

            // foldout
            foldToggleParameter.Fold = GUI.Toggle(foldoutRect, foldToggleParameter.Fold, GUIContent.none, EditorStyles.foldout);

            // Active checkbox
            foldToggleParameter.IsChecked = GUI.Toggle(toggleRect, foldToggleParameter.IsChecked, GUIContent.none, Styles.SmallTickBox);

            // Handle events
            var e = Event.current;

            if (e.type == EventType.MouseDown)
            {
                if (labelRect.Contains(e.mousePosition))
                {
                    if (e.button == 0)
                    {
                        foldToggleParameter.Fold = !foldToggleParameter.Fold;
                    }

                    e.Use();
                }
            }

            EditorGUI.BeginDisabledGroup(!foldToggleParameter.IsChecked);

            PropertyToggleFoldGroupStack.Push(foldToggleParameter);
        }
 public PropertyToggleFoldGroupScope(string title, FoldToggleParameter foldToggleParameter)
 {
     BeginPropertyToggleFoldGroup(title, foldToggleParameter);
 }