boolean (PsiElement element, PsiElement resolveResult) { if (resolveResult instanceof PyImportedModule) { resolveResult = resolveResult.getNavigationElement(); } if (element instanceof PsiDirectory && resolveResult instanceof PyFile && PyNames.INIT_DOT_PY.equals(((PyFile)resolveResult).getName()) && ((PyFile)resolveResult).getContainingDirectory() == element) { return true; } if (resolveResult == element) { return true; } if (resolveResult instanceof PyTargetExpression && PyUtil.isAttribute((PyTargetExpression)resolveResult) && element instanceof PyTargetExpression && PyUtil.isAttribute((PyTargetExpression)element) && Objects.equals(((PyTargetExpression)resolveResult).getReferencedName(), ((PyTargetExpression)element).getReferencedName())) { PyClass aClass = PsiTreeUtil.getParentOfType(resolveResult, PyClass.class); PyClass bClass = PsiTreeUtil.getParentOfType(element, PyClass.class); if (aClass != null && bClass != null && bClass.isSubclass(aClass, myContext.getTypeEvalContext())) { return true; } } if (resolvesToWrapper(element, resolveResult)) { return true; } return false; }