void (@NotNull final ProgressIndicator indicator) { myHandler.setProgressIndicator(ProgressManager.getInstance().getProgressIndicator()); myResolveWorker = new ResolveWorker(myInfo.isUnderProjectRoot(), myProject); if (myProject != null) { StoreReloadManager.Companion.getInstance(myProject).blockReloadingProjectOnExternalChanges(); } myProjectLevelVcsManager.startBackgroundVcsOperation(); try { myRecentlyUpdatedFiles = UpdatedFiles.create(); myHandler.setUpdatedFiles(myRecentlyUpdatedFiles); indicatorOnStart(); // try to do multiple under single progress while (true) { doMerge(); RefreshVFsSynchronously.updateAllChanged(myRecentlyUpdatedFiles); indicator.setText(VcsBundle.message("progress.text.updating.done")); if (myResolveWorker.needsInteraction(myRecentlyUpdatedFiles) || (! myMerger.hasNext()) || (! myExceptions.isEmpty()) || UpdatedFilesReverseSide.containErrors(myRecentlyUpdatedFiles)) { break; } accumulate(); } } finally { myProjectLevelVcsManager.stopBackgroundVcsOperation(); } }