public void DrawExtensionGUI()
 {
     if (Target == null)
     {
         return;
     }
     EditorGUILayout.Space();
     EditorGUILayout.LabelField("Extensions", EditorStyles.boldLabel);
     using (hGUI.Horizontal()) {
         ExtensionType selection = Selector.Draw(GUIContent.none);
         if (GUILayout.Button("Add") && selection != null)
         {
             Undo.RecordObject(Target, "Add Extension");
             Target.AddExtension(selection.Type);
             Repaint();
         }
     }
     foreach (ScriptableObject extension in Target.Extensions.ToArray())
     {
         using (hGUI.Horizontal()) {
             EditorGUILayout.InspectorTitlebar(true, extension);
             if (GUILayout.Button(GUIContent.none, "ToggleMixed", GUILayout.Width(15)))
             {
                 Undo.RecordObject(Target, "Remove Extension");
                 Target.RemoveExtension(extension);
                 Repaint();
             }
         }
         EditorGUILayout.Space();
         if (extension != null)
         {
             CreateEditor(extension).OnInspectorGUI();
         }
     }
 }