// called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         ReadOwnVersion();
         Logger.Message("version {0}", LibraryVersion);
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings = new ModSettingsManager();
         Settings.BeforeModSettingsSaved += OnBeforeModSettingsSaved;
         UpdateFeatures = new UpdateFeatureManager();
         UpdateFeatures.OnEarlyInitialize();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         DoLater            = new DoLaterScheduler();
         LogUploader        = new LogPublisher();
         var librarySettings = Settings.GetModSettings(ModIdentifier);
         QuickstartController.OnEarlyInitialize(librarySettings);
         ModSpotter = new ModSpottingManager();
         ModSpotter.OnEarlyInitialize();
         new LibraryVersionChecker(LibraryVersion, Logger).OnEarlyInitialize();
         LoadOrderChecker.ValidateLoadOrder();
         EnumerateModAssemblies();
         EarlyInitializeChildMods();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
        private ModSpottingManager PrepareSpotter(bool deleteFile, params string[] packageIds)
        {
            if (deleteFile && testingFile.Exists)
            {
                testingFile.Delete();
            }
            var spotter = new ModSpottingManager(testingFile.Name, logger);

            spotter.InspectPackageIds(packageIds);
            return(spotter);
        }