@Override
  public void processElementsWithName(@NotNull String name,
                                      final @NotNull Processor<? super NavigationItem> processor,
                                      final @NotNull FindSymbolParameters parameters) {

    GlobalSearchScope scope = parameters.getSearchScope();
    Project project = scope.getProject();
    if (project == null) return;
    IdFilter filter = parameters.getIdFilter();
    String completePattern = parameters.getCompletePattern();
    final Predicate<PsiMember> qualifiedMatcher = getQualifiedNameMatcher(completePattern);
    final Set<PsiMethod> collectedMethods = new HashSet<>();
    DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> {
      PsiShortNamesCache cache = PsiShortNamesCache.getInstance(project);
      boolean success = cache.processFieldsWithName(name, field -> {
        if (isOpenable(field) && qualifiedMatcher.test(field)) return processor.process(field);
        return true;
      }, scope, filter) &&
                        cache.processClassesWithName(name, new DefaultClassProcessor(processor, parameters, true), scope, filter) &&
                        cache.processMethodsWithName(name, method -> {
                          if (!method.isConstructor() && isOpenable(method) && qualifiedMatcher.test(method)) {
                            collectedMethods.add(method);
                          }
                          return true;
                        }, scope, filter);
      if (success) {
        // hashSuperMethod can access index and can not be invoked without risk of the deadlock in processMethodsWithName
        Iterator<PsiMethod> iterator = collectedMethods.iterator();
        while (iterator.hasNext()) {
          PsiMethod method = iterator.next();
          if (!hasSuperMethod(project, method, scope, qualifiedMatcher, completePattern) && !processor.process(method)) return;
          ProgressManager.checkCanceled();
          iterator.remove();
        }
      }
    });
  }
@Override
  public void processElementsWithName(@NotNull String name,
                                      final @NotNull Processor<? super NavigationItem> processor,
                                      final @NotNull FindSymbolParameters parameters)