static @Nullable AnnotationDocGenerator forAnnotation(@NotNull PsiElement context,
                                                        @NotNull Set<String> shownAnnotations,
                                                        @NotNull PsiAnnotation annotation) {
    PsiJavaCodeReferenceElement nameReferenceElement = annotation.getNameReferenceElement();
    if (nameReferenceElement == null) return null;

    AnnotationDocGenerator anno = new AnnotationDocGenerator(annotation, nameReferenceElement, context);
    if (anno.isNonDocumentedAnnotation()) return null;

    if (!(shownAnnotations.add(annotation.getQualifiedName()) ||
          JavaDocInfoGenerator.isRepeatableAnnotationType(nameReferenceElement.resolve()))) {
      return null;
    }
    return anno;
  }
static @Nullable AnnotationDocGenerator forAnnotation(@NotNull PsiElement context,
                                                        @NotNull Set<String> shownAnnotations,
                                                        @NotNull PsiAnnotation annotation)