PsiType () { PsiJavaCodeReferenceElement qualifier = getQualifier(); if (qualifier != null){ PsiElement qualifierResolve = qualifier.resolve(); if (qualifierResolve instanceof PsiClass) return new PsiImmediateClassType((PsiClass)qualifierResolve, PsiSubstitutor.EMPTY); return new PsiClassReferenceType(qualifier, null); } for(PsiElement scope = getContext(); scope != null; scope = scope.getContext()){ if (scope instanceof PsiClass){ PsiClass aClass = (PsiClass)scope; return new PsiImmediateClassType(aClass, PsiSubstitutor.EMPTY); } else if (scope instanceof PsiExpressionList && scope.getParent() instanceof PsiAnonymousClass){ scope = scope.getParent(); } else if (scope instanceof JavaCodeFragment){ PsiType fragmentThisType = ((JavaCodeFragment)scope).getThisType(); if (fragmentThisType != null) return fragmentThisType; } } return null; }