void (@NotNull PsiDocTag tag) { super.visitDocTag(tag); @NonNls final String name = tag.getName(); if ("link".equals(name) || "linkplain".equals(name)) { if (!(tag instanceof PsiInlineDocTag)) { return; } } else if ("see".equals(name)) { if (tag instanceof PsiInlineDocTag) { return; } } final PsiReference reference = extractReference(tag); if (reference == null) { return; } final PsiElement target = reference.resolve(); if (target == null) { return; } final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(tag, PsiMethod.class); if (containingMethod == null) { return; } if (target.equals(containingMethod)) { registerError(tag.getNameElement(), '@' + name, Integer.valueOf(THIS_METHOD)); return; } final PsiClass containingClass = PsiTreeUtil.getParentOfType(tag, PsiClass.class); if (target.equals(containingClass)) { registerError(tag.getNameElement(), '@' + name, Integer.valueOf(THIS_CLASS)); return; } if (!(target instanceof PsiMethod method)) { return; } if (!isSuperMethod(method, containingMethod)) { return; } if (ignoreInlineLinkToSuper && tag instanceof PsiInlineDocTag) { return; } registerError(tag.getNameElement(), '@' + name, Integer.valueOf(SUPER_METHOD)); }