internal void Reset()
 {
     _aiSelection  = AISelection.Selected;
     _aiScrollPos  = _typesScrollPos = Vector2.zero;
     _aiSelectView = null;
     _step         = Step.Start;
 }
        private void DrawStart()
        {
            EditorGUILayout.BeginVertical("Box");
            EditorGUILayout.LabelField("This tool allows you to get an overview of which serializable types are in use in which AIs.\n\nThe tool can identify types currently serialized with at least one AI.", SharedStyles.BuiltIn.wrappedText);
            EditorGUILayout.Separator();
            EditorGUILayout.LabelField("Select which AI(s) to investigate.", SharedStyles.BuiltIn.centeredWrappedText);
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
            _aiSelection = (AISelection)GUILayout.SelectionGrid((int)_aiSelection, _aiTabTitles, 2, EditorStyles.toolbarButton);
            GUILayout.FlexibleSpace();
            EditorGUIUtility.labelWidth = 120f;
            _excludeApexTypes           = EditorGUILayout.Toggle("Exclude Apex types", _excludeApexTypes);
            EditorGUIUtility.labelWidth = 0f;
            EditorGUILayout.EndHorizontal();

            if (_aiSelection == AISelection.Selected)
            {
                this.aiListView.Render(StoredAIs.AIs);
            }
            else
            {
                GUILayout.FlexibleSpace();
                EditorGUILayout.LabelField("Fixed Selection.", SharedStyles.BuiltIn.centeredWrappedText);
                GUILayout.FlexibleSpace();
            }

            if (GUILayout.Button("Create Overview"))
            {
                var ais = (_aiSelection == AISelection.Selected) ? this.aiListView.GetSelectedItems() : StoredAIs.AIs.ToArray();
                CreateOverview(ais);
            }
        }