void (PsiDocTag @NotNull [] tags, @Nullable PsiElement context, @NotNull ProblemsHolder holder) { JavadocManager docManager = JavadocManager.getInstance(holder.getProject()); for (PsiDocTag tag : tags) { String tagName = tag.getName(); JavadocTagInfo tagInfo = docManager.getTagInfo(tagName); if (tagInfo == null || !tagInfo.isValidInContext(context)) { if (checkTagInfo(tag, tagName, tagInfo, holder)) continue; } PsiDocTagValue value = tag.getValueElement(); if (tagInfo != null && !tagInfo.isValidInContext(context)) continue; String message = tagInfo == null ? null : tagInfo.checkTagValue(value); PsiReference reference = value != null ? value.getReference() : null; if (message == null && reference != null) { PsiElement element = reference.resolve(); if (element == null) { int textOffset = value.getTextOffset(); if (textOffset == value.getTextRange().getEndOffset()) { ProblemDescriptor problem = holder.getManager().createProblemDescriptor( tag, JavaBundle.message("inspection.javadoc.problem.name.expected"), null, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, holder.isOnTheFly(), true); holder.registerProblem(problem); } } } if (message != null) { PsiElement toHighlight = ObjectUtils.notNull(tag.getValueElement(), tag.getNameElement()); holder.registerProblem(toHighlight, message, new RemoveTagFix(tagName)); } PsiElement[] dataElements = tag.getDataElements(); if ("see".equals(tagName)) { if (dataElements.length == 0 || dataElements.length == 1 && isEmpty(dataElements[0])) { holder.registerProblem(tag.getNameElement(), JavaBundle.message("inspection.javadoc.problem.see.tag.expecting.ref")); } else if (!isValidSeeRef(dataElements)) { holder.registerProblem(dataElements[0], JavaBundle.message("inspection.javadoc.problem.see.tag.expecting.ref")); } } checkInlineTags(dataElements, holder); } }