Set<PsiClass> (@NotNull PsiReferenceExpression expression, int maxDepth) { PsiExpression qualifier = expression.getQualifierExpression(); if (qualifier == null) { PsiElement target = expression.resolve(); return target instanceof PsiClass ? Collections.singleton((PsiClass)target) : extractClass(expression.getType()); } Set<PsiClass> qualifierType = getPossibleTypes(qualifier, maxDepth - 1); String refName = expression.getReferenceName(); List<? extends PsiMember> members = refName == null || qualifierType == null ? null : getPossibleNonMethods(qualifierType, refName); return members == null ? null : getDefiniteSymbolTypes(members, qualifierType); }