UsageInfo[] (final List<? extends DependenciesBuilder> builders, final Set<? extends PsiFile> searchIn, final Set<? extends PsiFile> searchFor) { final List<UsageInfo> usages = new ArrayList<>(); ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); final Set<PsiFile> deps = new HashSet<>(); for (PsiFile psiFile : searchFor) { for (DependenciesBuilder builder : builders) { final Set<PsiFile> depsByBuilder = builder.getDependencies().get(psiFile); if (depsByBuilder != null) { deps.addAll(depsByBuilder); } } } deps.retainAll(searchIn); if (deps.isEmpty()) return UsageInfo.EMPTY_ARRAY; int totalCount = deps.size(); int count = 0; for (final PsiFile psiFile : deps) { count = updateIndicator(indicator, totalCount, count, psiFile); analyzeFileDependencies(psiFile, searchFor, usages); } return usages.toArray(UsageInfo.EMPTY_ARRAY); }