void (@NotNull PsiElement position, @NotNull List<? extends @NotNull ProviderInfo<ElementPattern<?>>> providerList, @NotNull Collection<? super ProviderInfo<ProcessingContext>> output, @NotNull PsiReferenceService.Hints hints) { SharedProcessingContext sharedProcessingContext = new SharedProcessingContext(); for (ProviderInfo<ElementPattern<?>> info : providerList) { if (hints != PsiReferenceService.Hints.NO_HINTS && !info.provider.acceptsHints(position, hints)) { continue; } ProcessingContext context = new ProcessingContext(sharedProcessingContext); boolean suitable = false; try { suitable = info.processingContext.accepts(position, context); } catch (IndexNotReadyException ignored) { } if (suitable) { output.add(new ProviderInfo<>(info.provider, context, info.priority)); } } }