public static UsageInfo[] findBackwardDependencies(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);
  }
public static UsageInfo[] findBackwardDependencies(final List<? extends DependenciesBuilder> builders, final Set<? extends PsiFile> searchIn, final Set<? extends PsiFile> searchFor)