public override void OnInspectorGUI()
        {
            serializedObject.Update();

            manager = (AttributeManager)target;
            AttributeManager.Instance = manager;

            EditorUIState = serializedObject.FindProperty("EditorUIState");

            Attributes_Debug = serializedObject.FindProperty("Attributes_Debug");

            Attributes        = serializedObject.FindProperty("Attributes");
            CurrentFilterMask = serializedObject.FindProperty("CurrentFilterMask");



            CategoryNames = new ReorderableList(serializedObject, serializedObject.FindProperty("CategoryNames"));

            CategoryNames.drawElementCallback =
                (Rect rect, int index, bool isActive, bool isFocused) =>
            {
                var element = CategoryNames.serializedProperty.GetArrayElementAtIndex(index);
                rect.y             += 1f;
                rect.height        -= 2f;
                element.stringValue = EditorGUI.TextField(rect, element.stringValue);
            };
            CategoryNames.drawHeaderCallback = (Rect rect) =>
            {
                EditorGUI.LabelField(rect, "Filters");
            };
            CategoryNames.onChangedCallback = FiltersChanged;

            labelMargin    = new GUIStyle(EditorStyles.label);
            textMargin     = new GUIStyle(EditorStyles.textField);
            buttonMargin   = new GUIStyle(GUI.skin.button);
            miniButton     = new GUIStyle(EditorStyles.miniButton);
            boldFoldOut    = new GUIStyle(EditorStyles.foldout);
            boldMiniButton = new GUIStyle(EditorStyles.miniButton);

            labelMargin.margin  = new RectOffset(AttributeMarginX, 0, 0, 0);
            textMargin.margin   = new RectOffset(AttributeMarginX, 0, 0, 0);
            buttonMargin.margin = new RectOffset(AttributeMarginX, 0, 0, 0);

            boldFoldOut.fontStyle = FontStyle.Bold;
            boldFoldOut.richText  = true;

            boldMiniButton.alignment = TextAnchor.MiddleCenter;
            boldMiniButton.padding   = new RectOffset(0, 2, 0, 2);

            miniButton.alignment = TextAnchor.MiddleCenter;
            miniButton.padding   = new RectOffset(0, 2, 0, 2);

            ListIterator(Attributes);

            serializedObject.ApplyModifiedProperties();

            if (GUI.changed)
            {
                EditorUtility.SetDirty(manager);
            }
        }