boolean () { if (super.isDone()) { if (!myApplied && !myBatchModeDescriptors.isEmpty()) { final ProblemDescriptor representative = myBatchModeDescriptors.get(0); LOG.assertTrue(representative.getFixes() != null); for (QuickFix<?> fix : representative.getFixes()) { if (fix.getClass().isAssignableFrom(myQuickfixClass)) { BatchQuickFix batchFix = (BatchQuickFix)fix; if (batchFix instanceof ModCommandBatchQuickFix modCommandBatchQuickFix) { ThrowableComputable<ModCommand, RuntimeException> actionComputable = () -> ReadAction.nonBlocking(() -> modCommandBatchQuickFix.perform(myProject, myBatchModeDescriptors)) .expireWhen(() -> myProject.isDisposed()) .executeSynchronously(); ModCommand command = ProgressManager.getInstance().runProcessWithProgressSynchronously( actionComputable, LangBundle.message("apply.fixes"), true, myProject); if (command == null) return false; ModCommandExecutor.BatchExecutionResult result = ModCommandExecutor.getInstance().executeInBatch(ActionContext.from(representative), command); myResultCount.merge(result, 1, Integer::sum); } else { batchFix.applyFix(myProject, myBatchModeDescriptors.toArray(ProblemDescriptor.EMPTY_ARRAY), new ArrayList<>(), null); } break; } } myApplied = true; } return true; } else { return false; } }