@NotNull
  @Override
  public List<RatedResolveResult> multiResolveName(@NotNull String name, boolean exported) {
    final List<RatedResolveResult> results = RecursionManager.doPreventingRecursion(this, false,
                                                                                    () -> getExportedNameCache().multiResolve(name));
    if (results != null && !results.isEmpty()) {
      return results;
    }
    final List<String> allNames = getDunderAll();
    if (allNames != null && !name.contains(".") && allNames.contains(name)) {
      final ResolveResultList allFallbackResults = new ResolveResultList();

      PyResolveImportUtil
        .resolveModuleAt(QualifiedName.fromComponents(name), getContainingDirectory(), PyResolveImportUtil.fromFoothold(this))
        .forEach(module -> allFallbackResults.poke(module, RatedResolveResult.RATE_LOW));

      final PsiElement allElement = findExportedName(PyNames.ALL);
      allFallbackResults.poke(allElement, RatedResolveResult.RATE_LOW);

      return allFallbackResults;
    }
    return Collections.emptyList();
  }
@NotNull
  @Override
  public List<RatedResolveResult> multiResolveName(@NotNull String name, boolean exported)