internal static void CheckAndProcess(bool ForceRefresh, bool UserForced = false)
        {
            bool newFiles = ChangedFolders.Count > 0 || ChangedPackages.Count > 0;

            Logger.LogPrint($"ChangedFolders: {ChangedFolders.Count}\nChangedPackages: {ChangedPackages.Count}");

            if (newFiles)
            {
                InvokeOnStatusUpdate(LocalisationManager.GetString(OsuString.BeatmapManager_LoadingNewFilesOnly));

                ProcessBeatmaps(true);

                if (pulledOnlineStatsOnce) //save some bandwidth when adding a single new song if possible.
                {
                    GetOnlineBeatmapInfo(NewFilesList);
                }
            }

            if ((!newFiles && ForceRefresh) || Beatmaps.Count == 0)
            {
                InvokeOnStatusUpdate(LocalisationManager.GetString(OsuString.BeatmapManager_ReloadingDatabase));
                ProcessBeatmaps(false, !UserForced);
            }

            if (!pulledOnlineStatsOnce)
            {
                GetOnlineBeatmapInfo();
                pulledOnlineStatsOnce = true;
            }

            ChangedFolders.Clear();
            ChangedPackages.Clear();
            NewFilesList.Clear();
        }
        private static void songWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            string fullPath = Path.GetDirectoryName(e.FullPath);

            if (fullPath.Contains("_tmp"))
            {
                return;
            }

            if (e.FullPath.EndsWith(".osz") && fullPath == BeatmapManager.SongsDirectory && e.ChangeType == WatcherChangeTypes.Created)
            {
                if (!BeatmapImport.DoNewBeatmapCheck)
                {
                    signalBeatmapCheck();
                }
                return;
            }

            if (e.FullPath.EndsWith(".osz2") && !ChangedPackages.Contains(e.FullPath))
            {
                if (!BeatmapImport.DoNewBeatmapCheck)
                {
                    signalBeatmapCheck();
                }

                ChangedPackages.Add(e.FullPath);
            }
            else if (!ChangedFolders.Contains(fullPath))
            {
                signalBeatmapCheck();
                ChangedFolders.Add(fullPath);
            }
        }