internal static Texture GetIcon(FieldIcon icon, Texture @default = null)
        {
            switch (icon)
            {
            case EditorGUIX.FieldIcon.Info: return(EditorGUIX.Content.infoSmallIcon.image);

            case EditorGUIX.FieldIcon.Warning: return(EditorGUIX.Content.warningSmallIcon.image);

            case EditorGUIX.FieldIcon.Error: return(EditorGUIX.Content.errorSmallIcon.image);

            default: return(@default);
            }
        }
        public static bool InspectorFoldout(Rect rect, bool value, GUIContent content, FieldIcon icon = FieldIcon.None)
        {
            GUI.Box(rect, GUIContent.none, Styles.inspectorBackground);
            var textRect = new Rect(rect);

            textRect.x      += 20;
            textRect.y      += 2;
            textRect.width  -= 20;
            textRect.height -= 2;
            var previousImage = content.image;

            content.image = GetIcon(icon, previousImage);
            GUI.Box(textRect, content, Styles.inspectorText);
            content.image = previousImage;
            rect.x       += 5;
            rect.y       += 3;
            rect.width   -= 5;
            rect.height  -= 3;
            return(EditorGUI.Foldout(rect, value, GUIContent.none, true));
        }