@Override
  public void performPreRunActivities(
      @NotNull final List<Tools> globalTools,
      @NotNull final List<Tools> localTools,
      @NotNull final GlobalInspectionContext context) {
    final AnalysisScope analysisScope = context.getRefManager().getScope();
    if (analysisScope == null) return;

    final GlobalSearchScope scope =
        GlobalSearchScope.EMPTY_SCOPE.union(analysisScope.toSearchScope());

    updateIndicator("Looking for Dart files...", -1);

    final Collection<VirtualFile> dartFiles =
        ApplicationManager.getApplication()
            .runReadAction(
                new Computable<Collection<VirtualFile>>() {
                  @Override
                  public Collection<VirtualFile> compute() {
                    return FileTypeIndex.getFiles(DartFileType.INSTANCE, scope);
                  }
                });

    double index = 0.0;
    final int size = dartFiles.size();

    for (final VirtualFile dartFile : dartFiles) {
      index++;
      analyzeFile(dartFile, context.getProject(), index / size);
    }
  }