void (@NotNull Processor<? super String> nameProcessor, @NotNull FindSymbolParameters parameters) { long start = System.currentTimeMillis(); List<ChooseByNameContributor> contributors = filterDumb(getContributorList()); ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); Processor<ChooseByNameContributor> processor = new ReadActionProcessor<>() { @Override public boolean processInReadAction(@NotNull ChooseByNameContributor contributor) { try { if (!myProject.isDisposed()) { long contributorStarted = System.currentTimeMillis(); processContributorNames(contributor, parameters, nameProcessor); if (LOG.isDebugEnabled()) { LOG.debug(contributor + " for " + (System.currentTimeMillis() - contributorStarted)); } } } catch (ProcessCanceledException | IndexNotReadyException ex) { // index corruption detected, ignore } catch (Throwable ex) { LOG.error(ex); } return true; } }; if (!JobLauncher.getInstance().invokeConcurrentlyUnderProgress(contributors, indicator, processor)) { throw new ProcessCanceledException(); } if (indicator != null) { indicator.checkCanceled(); } long finish = System.currentTimeMillis(); if (LOG.isDebugEnabled()) { LOG.debug("processNames(): "+(finish-start)+"ms;"); } }