@Override public PsiType resolve(PsiDocTag psiDocTag) { PsiDocTagValue value = psiDocTag.getValueElement(); if (value != null) { String exceptionName = value.getText(); if (exceptionName != null) { PsiClass psiClass = javaPsiFacade.findClass(exceptionName, globalSearchScope); if (psiClass != null) { return elementFactory.createType(psiClass); } else { PsiClass[] classesByName = shortNamesCache.getClassesByName(exceptionName, globalSearchScope); PsiClass encapsulatingClass = PsiTreeUtil.getParentOfType(psiDocTag, PsiClass.class); if (encapsulatingClass != null && classesByName.length > 0) { String packageName = ClassUtil.extractPackageName(encapsulatingClass.getQualifiedName()); PsiClass closestClass = PsiClassSelector.selectClassByPackage(packageName, classesByName); return elementFactory.createType(closestClass); } logger.log(Level.WARNING, "No classes found with name: " + exceptionName); } } } return null; }