private static void checkMissingTypeParamTags(@NotNull PsiTypeParameterListOwner owner,
                                        PsiDocTag @NotNull [] tags,
                                        @NotNull PsiElement toHighlight,
                                        @NotNull ProblemsHolder holder) {
    if (owner.hasTypeParameters()) {
      List<PsiTypeParameter> absentParameters = null;

      for (PsiTypeParameter typeParameter : owner.getTypeParameters()) {
        if (!hasTagForParameter(tags, typeParameter)) {
          (absentParameters = list(absentParameters)).add(typeParameter);
        }
      }

      if (absentParameters != null) {
        for (PsiTypeParameter typeParameter : absentParameters) {
          String name = typeParameter.getName();
          if (name != null) {
            String tagText = "<code>&lt;" + name + "&gt;</code>";
            String message = JavaBundle.message("inspection.javadoc.method.problem.missing.param.tag", tagText);
            problem(holder, toHighlight, message, new JavaDocFixes.AddMissingTagFix("param", "<" + name + ">"));
          }
        }
      }
    }
  }
private static void checkMissingTypeParamTags(@NotNull PsiTypeParameterListOwner owner,
                                        PsiDocTag @NotNull [] tags,
                                        @NotNull PsiElement toHighlight,
                                        @NotNull ProblemsHolder holder)