@Override
 public void processNames(
     @NotNull final Processor<String> processor,
     @NotNull GlobalSearchScope scope,
     IdFilter filter) {
   long started = System.currentTimeMillis();
   FileBasedIndex.getInstance()
       .processAllKeys(
           FilenameIndex.NAME,
           new Processor<String>() {
             @Override
             public boolean process(String s) {
               return processor.process(s);
             }
           },
           scope,
           filter);
   if (IdFilter.LOG.isDebugEnabled()) {
     IdFilter.LOG.debug("All names retrieved:" + (System.currentTimeMillis() - started));
   }
 }
 @Override
 @NotNull
 public String[] getNames(Project project, boolean includeNonProjectItems) {
   if (FileBasedIndex.ourEnableTracingOfKeyHashToVirtualFileMapping) {
     final THashSet<String> names = new THashSet<String>(1000);
     IdFilter filter = IdFilter.getProjectIdFilter(project, includeNonProjectItems);
     processNames(
         new Processor<String>() {
           @Override
           public boolean process(String s) {
             names.add(s);
             return true;
           }
         },
         FindSymbolParameters.searchScopeFor(project, includeNonProjectItems),
         filter);
     if (IdFilter.LOG.isDebugEnabled()) {
       IdFilter.LOG.debug("All names retrieved2:" + names.size());
     }
     return ArrayUtil.toStringArray(names);
   } else {
     return FilenameIndex.getAllFilenames(project);
   }
 }