public static void      ToggleFullscreen(int f)
        {
            Metrics.UseTool(22);             // NGFullscreenBindings

            NGChangeLogWindow.CheckLatestVersion(NGAssemblyInfo.Name);

            if (NGFullscreenBindingsWindow.DetectDiff() == true)
            {
                return;
            }

            if (HQ.Settings == null || f > HQ.Settings.Get <FullscreenBindingsSettings>().bindings.Length)
            {
                EditorUtility.DisplayDialog(Constants.PackageTitle, "The binding is invalid. Please regenerate it.", "OK");
                NGFullscreenBindingsWindow.Open();
                return;
            }

            Type type = NGFullscreenBindingsWindow.GetType(HQ.Settings.Get <FullscreenBindingsSettings>().bindings[f - 1].type);

            if (type == null)
            {
                EditorUtility.DisplayDialog(Constants.PackageTitle, "The binding has been assigned an invalid Window.", "OK");
                NGFullscreenBindingsWindow.Open();
                return;
            }

            InternalNGDebug.VerboseLogFormat("Toggling fullscreen window \"{0}\".", type);

            EditorWindow[] windows = Resources.FindObjectsOfTypeAll <EditorWindow>();

            for (int i = 0; i < windows.Length; i++)
            {
                if (windows[i].GetType() != type && windows[i].maximized == true)
                {
                    windows[i].maximized = false;
                    break;
                }
            }

            EditorWindow window = EditorWindow.GetWindow(type);

            EditorApplication.delayCall += () => window.maximized = !window.maximized;
        }