private void InternalDrawFlags()
        {
            if (!(JEMEditorConfiguration.Configuration?.UpdateFlags ?? false))
            {
                return;
            }

            if (_drawFlags.value)
            {
                if (GUILayout.Button("Flags (Hide)"))
                {
                    _drawFlags.value = false;
                }
            }
            else
            {
                if (GUILayout.Button("Flags (Show)"))
                {
                    _drawFlags.value = true;
                }
            }

            if (EditorGUILayout.BeginFadeGroup(_drawFlags.faded))
            {
                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    for (var index = 0; index < JEMBuildFlags.Flags.Count; index++)
                    {
                        var flag = JEMBuildFlags.Flags[index];
                        if (flag.Equals(default(BuildFlag)))
                        {
                            continue;
                        }

                        EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);
                        {
                            GUILayout.Label(flag.Name);
                            var enabled = EditorGUILayout.Toggle(flag.Enabled, GUILayout.Width(30));
                            if (enabled != flag.Enabled)
                            {
                                JEMBuildFlags.SetFlagActive(flag.Name, enabled);
                            }

                            if (GUILayout.Button("X", GUILayout.Width(30)))
                            {
                                JEMBuildFlags.RemoveFlag(flag.Name);
                            }
                        }
                        EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);
                    {
                        _newFlag = EditorGUILayout.TextField(_newFlag);
                        if (GUILayout.Button("Add", GUILayout.Width(50)))
                        {
                            if (!string.IsNullOrEmpty(_newFlag) && !string.IsNullOrWhiteSpace(_newFlag))
                            {
                                if (JEMBuildFlags.AddFlag(_newFlag))
                                {
                                    _newFlag = string.Empty;
                                }
                            }
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    if (GUILayout.Button("Force Reload"))
                    {
                        JEMBuildFlags.SaveFlags();
                        JEMBuildFlags.ApplyFlags();
                    }

                    if (GUILayout.Button("Refresh/Apply"))
                    {
                        JEMBuildFlags.SaveFlags();
                        JEMBuildFlags.LoadFlags();
                        JEMBuildFlags.ApplyFlags();
                    }
                }
                EditorGUILayout.EndVertical();
                EditorGUILayout.Space();
            }

            JEMBetterEditor.FixedEndFadeGroup(_drawFlags.faded);
        }