List<RatedResolveResult> (@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(); }