public virtual void Shutdown()
        {
            Closing?.Invoke();
            // ProjectSettings is accessing some information from runtime during save
            AndroidLogcatProjectSettings.Save(m_ProjectSettings, ProjectSettingsPath, this);
            SaveEditorSettings(m_Settings);

            m_Initialized     = false;
            m_Settings        = null;
            m_ProjectSettings = null;
            m_Tools           = null;
            m_Dispatcher.Shutdown();
            m_Dispatcher = null;
        }
        public virtual void Initialize()
        {
            m_Dispatcher = new AndroidLogcatDispatcher(this);
            m_Dispatcher.Initialize();

            m_Settings = LoadEditorSettings();

            Directory.CreateDirectory(Path.GetDirectoryName(ProjectSettingsPath));
            m_ProjectSettings = AndroidLogcatProjectSettings.Load(ProjectSettingsPath);
            if (m_ProjectSettings == null)
            {
                m_ProjectSettings = new AndroidLogcatProjectSettings();
                m_ProjectSettings.Reset();
            }

            m_Tools       = CreateAndroidTools();
            m_DeviceQuery = CreateDeviceQuery();

            m_Initialized = true;
        }