public override void OnInspectorGUI()
        {
            if (self == null)
            {
                return;
            }

            serializedObject.Update();

            EditorGUIUtility.labelWidth = 140;
            EditorGUILayout.Space();
            DrawHeader("Base settings");

            EditorGUILayout.PropertyField(autoStart);
            detectionEventHasListener.boolValue = EditorTools.CheckUnityEventHasActivePersistentListener(detectionEvent);

            CheckAdditionalEventsForListeners();

            if (autoStart.boolValue && !detectionEventHasListener.boolValue && !AdditionalEventsHasListeners())
            {
                EditorGUILayout.LabelField(new GUIContent("You need to add at least one active item to the Events in order to use Auto Start feature!"), GUITools.BoldLabel);
            }
            else if (!autoStart.boolValue)
            {
                EditorGUILayout.LabelField(new GUIContent("Don't forget to start detection!", "You should start detector from code using ObscuredCheatingDetector.StartDetection() method. See readme for details."), GUITools.BoldLabel);
                EditorGUILayout.Separator();
            }
            EditorGUILayout.PropertyField(autoDispose);
            EditorGUILayout.PropertyField(keepAlive);

            EditorGUILayout.Separator();

            if (DrawUniqueDetectorProperties())
            {
                EditorGUILayout.Separator();
            }

            //DrawHeader("Events");

            EditorGUILayout.PropertyField(detectionEvent);
            DrawAdditionalEvents();
            serializedObject.ApplyModifiedProperties();

            EditorGUIUtility.labelWidth = 0;
        }