static void checkRequiredTags(PsiDocTag @NotNull [] tags,
                                @NotNull Options options,
                                @NotNull PsiElement toHighlight,
                                @NotNull ProblemsHolder holder) {
    boolean[] isTagRequired = new boolean[TAGS_TO_CHECK.length];
    boolean[] isTagPresent = new boolean[TAGS_TO_CHECK.length];
    boolean someTagsAreRequired = false;

    for (int i = 0; i < TAGS_TO_CHECK.length; i++) {
      someTagsAreRequired |= (isTagRequired[i] = options.isTagRequired(TAGS_TO_CHECK[i]));
    }

    if (!someTagsAreRequired) return;

    for (PsiDocTag tag : tags) {
      int p = ArrayUtil.find(TAGS_TO_CHECK, tag.getName());
      if (p >= 0) isTagPresent[p] = true;
    }

    for (int i = 0; i < TAGS_TO_CHECK.length; i++) {
      if (isTagRequired[i] && !isTagPresent[i]) {
        String tagName = TAGS_TO_CHECK[i];
        String message = JavaBundle.message("inspection.javadoc.problem.missing.tag", "<code>@" + tagName + "</code>");
        problem(holder, toHighlight, message, new JavaDocFixes.AddMissingTagFix(tagName, ""));
      }
    }
  }
static void checkRequiredTags(PsiDocTag @NotNull [] tags,
                                @NotNull Options options,
                                @NotNull PsiElement toHighlight,
                                @NotNull ProblemsHolder holder)