private static void DisplayOption(fiSerializationPackage package)
        {
            EditorGUILayout.LabelField(package.Title, EditorStyles.boldLabel);
            GUILayout.BeginHorizontal();

            bool isDefault = false;

            if (fiInstalledSerializerManager.HasDefault)
            {
                isDefault = package.SerializerGuid == fiInstalledSerializerManager.DefaultMetadata.SerializerGuid;
            }

            // show the remove/import button, depending on if the serializer is loaded
            if (fiInstalledSerializerManager.IsLoaded(package.SerializerGuid))
            {
                EditorGUI.BeginDisabledGroup(package.CanRemove == false);

                GUI.color = Color.red;

                if (package.CanRemove == false)
                {
                    // tooltips don't work on buttons, so just gray the remove button out
                    GUI.color = Color.gray;
                }

                if (GUILayout.Button("Remove", GUILayout.ExpandHeight(true), GUILayout.Width(65)))
                {
                    try {
                        ShowCompileProgressBar("Removing Serializer", 0);
                        Directory.Delete(package.PackageDirectory, true);
                    }
                    catch (Exception e) {
                        Debug.LogWarning("When deleting " + package.PackageDirectory + ", caught exception\n" + e);
                    }

                    // The user might not be using .meta files, so we will silently ignore the meta
                    // delete request
                    try {
                        File.Delete(package.PackageDirectory + ".meta");
                    }
                    catch { }

                    fiDefaultSerializerRewriter.GenerateFileExcluding(package.ProviderType, package.SerializerType);
                }
                GUI.color = Color.white;

                EditorGUI.EndDisabledGroup();
            }
            else
            {
                if (GUILayout.Button("Import", GUILayout.ExpandHeight(true), GUILayout.Width(65)))
                {
                    AssetDatabase.ImportPackage(package.PackagePath, /*interactive:*/ false);
                    fiDefaultSerializerRewriter.GenerateFileIncluding(package.ProviderType, package.SerializerType);
                }
            }

            // show the set default button if active
            if (isDefault)
            {
                EditorGUI.BeginDisabledGroup(true);
                GUI.color = Color.green;
                GUILayout.Button("Default \u2713", GUILayout.ExpandHeight(true), GUILayout.Width(90));
                GUI.color = Color.white;
                EditorGUI.EndDisabledGroup();
            }
            else
            {
                EditorGUI.BeginDisabledGroup(!fiInstalledSerializerManager.IsLoaded(package.SerializerGuid));
                if (GUILayout.Button("Set Default", GUILayout.ExpandHeight(true), GUILayout.Width(90)))
                {
                    ShowCompileProgressBar("Changing Default Serializer", 0);
                    fiDefaultSerializerRewriter.GenerateFileChangeDefault(package.ProviderType, package.SerializerType);
                }
                EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.HelpBox(package.Description, MessageType.Info);
            GUILayout.EndHorizontal();
        }
        private static void DisplayOption(fiSerializationPackage package) {
            EditorGUILayout.LabelField(package.Title, EditorStyles.boldLabel);
            GUILayout.BeginHorizontal();

            bool isDefault = false;
            if (fiInstalledSerializerManager.HasDefault) {
                isDefault = package.SerializerGuid == fiInstalledSerializerManager.DefaultMetadata.SerializerGuid;
            }

            // show the remove/import button, depending on if the serializer is loaded
            if (fiInstalledSerializerManager.IsLoaded(package.SerializerGuid)) {
                EditorGUI.BeginDisabledGroup(package.CanRemove == false);

                GUI.color = Color.red;

                if (package.CanRemove == false) {
                    // tooltips don't work on buttons, so just gray the remove button out
                    GUI.color = Color.gray;
                }

                if (GUILayout.Button("Remove", GUILayout.ExpandHeight(true), GUILayout.Width(65))) {
                    try {
                        ShowCompileProgressBar("Removing Serializer", 0);
                        Directory.Delete(package.PackageDirectory, true);
                    }
                    catch (Exception e) {
                        Debug.LogWarning("When deleting " + package.PackageDirectory + ", caught exception\n" + e);
                    }

                    // The user might not be using .meta files, so we will silently ignore the meta
                    // delete request
                    try {
                        File.Delete(package.PackageDirectory + ".meta");
                    }
                    catch { }

                    fiDefaultSerializerRewriter.GenerateFileExcluding(package.ProviderType, package.SerializerType);
                }
                GUI.color = Color.white;

                EditorGUI.EndDisabledGroup();
            }
            else {
                if (GUILayout.Button("Import", GUILayout.ExpandHeight(true), GUILayout.Width(65))) {
                    AssetDatabase.ImportPackage(package.PackagePath, /*interactive:*/ false);
                    fiDefaultSerializerRewriter.GenerateFileIncluding(package.ProviderType, package.SerializerType);
                }
            }

            // show the set default button if active
            if (isDefault) {
                EditorGUI.BeginDisabledGroup(true);
                GUI.color = Color.green;
                GUILayout.Button("Default \u2713", GUILayout.ExpandHeight(true), GUILayout.Width(90));
                GUI.color = Color.white;
                EditorGUI.EndDisabledGroup();
            }
            else {
                EditorGUI.BeginDisabledGroup(!fiInstalledSerializerManager.IsLoaded(package.SerializerGuid));
                if (GUILayout.Button("Set Default", GUILayout.ExpandHeight(true), GUILayout.Width(90))) {
                    ShowCompileProgressBar("Changing Default Serializer", 0);
                    fiDefaultSerializerRewriter.GenerateFileChangeDefault(package.ProviderType, package.SerializerType);
                }
                EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.HelpBox(package.Description, MessageType.Info);
            GUILayout.EndHorizontal();
        }