@Override
  public void processElementsWithName(@NotNull String name,
                                      @NotNull Processor<? super NavigationItem> processor,
                                      @NotNull FindSymbolParameters parameters) {
    Project project = parameters.getProject();
    GlobalSearchScope scope = PySearchUtilBase.excludeSdkTestScope(parameters.getSearchScope());
    IdFilter filter = parameters.getIdFilter();
    FileBasedIndex fileIndex = FileBasedIndex.getInstance();
    StubIndex stubIndex = StubIndex.getInstance();
    PsiManager psiManager = PsiManager.getInstance(project);
    DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> {
      if (!fileIndex.getFilesWithKey(PyModuleNameIndex.NAME, Collections.singleton(name), file -> {
        if (PyUserSkeletonsUtil.isUnderUserSkeletonsDirectory(file)) return true;
        PsiFile psiFile = psiManager.findFile(file);
        return !(psiFile instanceof PyFile) || processor.process(psiFile);
      }, scope)) return;
      if (!stubIndex.processElements(PyClassNameIndex.KEY, name, project, scope, filter, PyClass.class, processor)) return;
      if (!stubIndex.processElements(PyFunctionNameIndex.KEY, name, project, scope, filter, PyFunction.class, processor)) return;
      if (!stubIndex.processElements(PyVariableNameIndex.KEY, name, project, scope, filter, PyTargetExpression.class, processor)) return;
      PyClassAttributesIndex.findClassAndInstanceAttributes(name, project, scope).forEach(processor::process);
    });
  }
@Override
  public void processElementsWithName(@NotNull String name,
                                      @NotNull Processor<? super NavigationItem> processor,
                                      @NotNull FindSymbolParameters parameters)