public static IDataEditorStorage LoadAllPrividers(IDataEditorStorage storage = null)
 {
     storage = storage ?? new LocalDataBoxStorage();
     AssemblyReflectionHelper.AllDataBox().ForEach(provider =>
     {
         storage.RegisterProvider(provider);
     });
     return(storage);
 }
        public override void OnInspectorGUI()
        {
            switch (_state)
            {
            case StateGenerate.None:
            {
                if (GUILayout.Button("Create"))
                {
                    _state = StateGenerate.ChooseType;
                }
                if (GUILayout.Button("Check"))
                {
                    AssemblyReflectionHelper.GetAllTypesInSolution <DataBox>().Where(t => !t.IsAbstract && !t.IsGenericType).ForEach(t =>
                        {
                            CreateAsset(t);
                        });
                    _allProviders = AssemblyReflectionHelper.AllDataBox().ToList();
                    RefreshView();
                }
                break;
            }

            case StateGenerate.ChooseType:
                EditorGUILayout.BeginVertical();
                DrawChooseType();
                EditorGUILayout.EndVertical();
                break;

            case StateGenerate.Generating:
            {
                _allGenerators.ForEach(g => g.Generate());
                AssetDatabase.Refresh();
                _state = StateGenerate.None;
                break;
            }
            }

            base.OnInspectorGUI();

            if (GUILayout.Button("Set generate settings"))
            {
                foreach (var dataBox in AssemblyReflectionHelper.AllDataBox())
                {
                    Debug.Log(dataBox.ObjectType.Name);
                }
                //   SetPathesWindow.ShowSetPathWindow();
            }
        }