void (@NotNull List<InspectionToolWrapper<?, ?>> needRepeatSearchRequest, @NotNull GlobalInspectionContext context) { long timestamp = System.currentTimeMillis(); JobDescriptor progress = context.getStdJobDescriptors().FIND_EXTERNAL_USAGES; progress.setTotalAmount(getRequestCount()); do { processSearchRequests(context); InspectionToolWrapper<?,?>[] requestors = needRepeatSearchRequest.toArray(InspectionToolWrapper.EMPTY_ARRAY); InspectionManager inspectionManager = InspectionManager.getInstance(context.getProject()); for (InspectionToolWrapper<?,?> toolWrapper : requestors) { boolean result = false; if (toolWrapper instanceof GlobalInspectionToolWrapper) { InspectionToolPresentation presentation = ((GlobalInspectionContextImpl)context).getPresentation(toolWrapper); result = ((GlobalInspectionToolWrapper)toolWrapper).getTool().queryExternalUsagesRequests(inspectionManager, context, presentation); } if (!result) { needRepeatSearchRequest.remove(toolWrapper); } } int oldSearchRequestCount = progress.getTotalAmount(); int oldDoneAmount = progress.getDoneAmount(); int totalAmount = oldSearchRequestCount + getRequestCount(); progress.setTotalAmount(totalAmount); progress.setDoneAmount(oldDoneAmount); } while (!needRepeatSearchRequest.isEmpty()); LOG.info("Processing external usages finished in " + (System.currentTimeMillis() - timestamp) + " ms"); }