/// <summary>
        /// Subscribes to progress report.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="disposables">The disposables.</param>
        private void SubscribeToProgressReport(long id, CompositeDisposable disposables)
        {
            definitionLoadHandler?.Dispose();
            definitionLoadHandler = modDefinitionLoadHandler.Subscribe(s =>
            {
                var message         = localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Loading_Definitions);
                var overlayProgress = Smart.Format(localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Progress), new
                {
                    PercentDone = s.Percentage.ToLocalizedPercentage(),
                    Count       = 1,
                    TotalCount  = 4
                });
                TriggerOverlay(id, true, message, overlayProgress);
            }).DisposeWith(disposables);

            modInvalidReplaceHandler?.Dispose();
            modInvalidReplaceHandler = modDefinitionInvalidReplaceHandler.Subscribe(s =>
            {
                var message         = localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Replacing_Definitions);
                var overlayProgress = Smart.Format(localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Progress), new
                {
                    PercentDone = s.Percentage.ToLocalizedPercentage(),
                    Count       = 2,
                    TotalCount  = 4
                });
                TriggerOverlay(id, true, message, overlayProgress);
            }).DisposeWith(disposables);

            definitionAnalyzeLoadHandler?.Dispose();
            definitionAnalyzeLoadHandler = modDefinitionAnalyzeHandler.Subscribe(s =>
            {
                var message         = localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Analyzing_Conflicts);
                var overlayProgress = Smart.Format(localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Progress), new
                {
                    PercentDone = s.Percentage.ToLocalizedPercentage(),
                    Count       = 3,
                    TotalCount  = 4
                });
                TriggerOverlay(id, true, message, overlayProgress);
            }).DisposeWith(disposables);

            definitionSyncHandler?.Dispose();
            definitionSyncHandler = modDefinitionPatchLoadHandler.Subscribe(s =>
            {
                var message         = localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Analyzing_Resolved_Conflicts);
                var overlayProgress = Smart.Format(localizationManager.GetResource(LocalizationResources.Mod_Actions.ConflictSolver.Overlay_Conflict_Solver_Progress), new
                {
                    PercentDone = s.Percentage.ToLocalizedPercentage(),
                    Count       = 4,
                    TotalCount  = 4
                });
                TriggerOverlay(id, true, message, overlayProgress);
            }).DisposeWith(disposables);
        }