public boolean processPropertiesFiles(
      @NotNull final GlobalSearchScope searchScope,
      @NotNull final PropertiesFileProcessor processor,
      @NotNull final BundleNameEvaluator evaluator) {
    for (VirtualFile file : FileTypeIndex.getFiles(PropertiesFileType.INSTANCE, searchScope)) {
      if (!processFile(file, evaluator, processor)) return false;
    }
    if (!myDumbService.isDumb()) {
      for (VirtualFile file :
          FileBasedIndex.getInstance()
              .getContainingFiles(
                  XmlPropertiesIndex.NAME, XmlPropertiesIndex.MARKER_KEY, searchScope)) {
        if (!processFile(file, evaluator, processor)) return false;
      }
    }

    return true;
  }
 public synchronized void indexSQLRef() {
   logger.info("indexSQLRef():");
   xmlRefCount = 0;
   Collection<VirtualFile> xmlFiles =
       FileTypeIndex.getFiles(XmlFileType.INSTANCE, GlobalSearchScope.projectScope(project));
   try {
     for (final VirtualFile xmlFile : xmlFiles) {
       scanXmlFile(xmlFile);
       progressIndicator.setFraction(1 / filesToBeScannedCount);
     }
     if (!xmlFiles.isEmpty() && progressChangedListener != null) {
       progressChangedListener.finishedProcess();
     }
     ServiceManager.getService(project, AnnoRefNotifications.class)
         .notifyAnnoRefIndex(project, SQLRefConstants.ANNO_REF_XML, xmlRefCount);
   } catch (Exception e) {
     if (progressChangedListener != null) {
       progressChangedListener.failedProcess(e.getMessage());
     }
   }
 }
 @Override
 public boolean isApplicable(@NotNull Project project) {
   return FileTypeIndex.containsFileOfType(
       GroovyFileType.GROOVY_FILE_TYPE, GlobalSearchScope.allScope(project));
 }