void (@NotNull ProgressIndicator indicator) { try { boolean isOk = true; MultiMap<VcsCherryPicker, VcsFullCommitDetails> groupedCommits = createArrayMultiMap(); for (VcsFullCommitDetails details : myAllDetailsInReverseOrder) { VcsCherryPicker cherryPicker = getCherryPickerOrReportError(details); if (cherryPicker == null) { isOk = false; break; } groupedCommits.putValue(cherryPicker, details); } if (isOk) { for (Map.Entry<VcsCherryPicker, Collection<VcsFullCommitDetails>> entry : groupedCommits.entrySet()) { entry.getKey().cherryPick(new ArrayList<>(entry.getValue())); } } } finally { ApplicationManager.getApplication().invokeLater(() -> { myChangeListManager.unblockModalNotifications(); for (VcsFullCommitDetails details : myAllDetailsInReverseOrder) { myIdsInProgress.remove(new CommitId(details.getId(), details.getRoot())); } }); } }