PsiClass () { if (getFirstChildNode().getElementType() == JavaDocElementType.DOC_REFERENCE_HOLDER) { final PsiElement firstChildPsi = SourceTreeToPsiMap.treeElementToPsi(getFirstChildNode().getFirstChildNode()); if (firstChildPsi instanceof PsiJavaCodeReferenceElement) { PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement)firstChildPsi; final PsiElement referencedElement = referenceElement.resolve(); if (referencedElement instanceof PsiClass) return (PsiClass)referencedElement; return null; } else if (firstChildPsi instanceof PsiKeyword) { final PsiKeyword keyword = (PsiKeyword)firstChildPsi; if (keyword.getTokenType().equals(THIS_KEYWORD)) { return JavaResolveUtil.getContextClass(this); } else if (keyword.getTokenType().equals(SUPER_KEYWORD)) { final PsiClass contextClass = JavaResolveUtil.getContextClass(this); if (contextClass != null) return contextClass.getSuperClass(); return null; } } } return JavaResolveUtil.getContextClass(this); }