private void ValidationResultGUI(ValidationResult result, bool isIgnored = false)
        {
            EditorGUILayout.BeginVertical("Box");
            MessageType messageType;

            switch (result.impact)
            {
            case ValidationResult.Level.Error:
                messageType = MessageType.Error;
                break;

            case ValidationResult.Level.Warning:
                messageType = MessageType.Warning;
                break;

            default:
                messageType = MessageType.Info;
                break;
            }

            EditorGUILayout.BeginHorizontal();

            string helpMsg;

            if (result.Message != null)
            {
                helpMsg = result.Message;
            }
            else
            {
                helpMsg = result.name;
            }

            EditorGUILayout.HelpBox(helpMsg, messageType, true);

            EditorGUILayout.BeginVertical();
            if (result.Callbacks != null)
            {
                foreach (ResolutionCallback callback in result.Callbacks)
                {
                    if (GUILayout.Button(callback.Label))
                    {
                        Validations.Remove(result.name);
                        callback.ProfileCallback();
                    }
                }
            }

            if (GUILayout.Button("Ping Plugin Manager"))
            {
                EditorGUIUtility.PingObject(result.PluginManager);
            }

            if (result.impact != ValidationResult.Level.OK)
            {
                if (!isIgnored)
                {
                    if (GUILayout.Button("Ignore"))
                    {
                        ignoredTests.Add(result.name);
                    }
                }
                else
                {
                    if (GUILayout.Button("Do Not Ignore"))
                    {
                        ignoredTests.Remove(result.name);
                    }
                }
            }

            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();

            if (result.ReportingTest != null)
            {
                string tests = "";
                foreach (string test in result.ReportingTest)
                {
                    if (tests.Length > 0)
                    {
                        tests += ", " + test.Prettify();
                    }
                    else
                    {
                        tests = test.Prettify();
                    }
                }
                EditorGUILayout.LabelField("Reported by: " + tests);
            }

            EditorGUILayout.EndVertical();
        }