/// <summary>
        /// Unloads and de-initializes the plugin.
        /// </summary>
        protected override void Unload()
        {
            Instance = null;

            Provider.onCommenceShutdown -= SaveManager.save;
            Level.onLevelLoaded         -= OnLevelLoaded;

            if (BaseClusterDirectory != null)
            {
                BaseClusterDirectory.Unload();
                BaseClusterDirectory = null;
            }

            if (BuildableDirectory != null)
            {
                BuildableDirectory.Unload();
                BuildableDirectory = null;
            }

            if (m_Harmony != null)
            {
                m_Harmony.UnpatchAll();
                m_Harmony = null;
            }

            Logging.PluginUnloaded(this);
        }