docs: private static List<TypeMirror> getAnnotationClassValues(Element member, Annotation annotation, String annotationMemberName) {
          for (AnnotationMirror annotationMirror : member.getAnnotationMirrors()) {
              if (((TypeElement) annotationMirror.getAnnotationType().asElement()).getQualifiedName().contentEquals(annotation.annotationType().getName())) {
                  for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : annotationMirror.getElementValues().entrySet()) {
                      if (entry.getKey().getSimpleName().contentEquals(annotationMemberName)) {
                          @SuppressWarnings({ "unchecked", "rawtypes" })
                          List<AnnotationValue> types = (List) entry.getValue().getValue();
                          TypeMirror[] result = new TypeMirror[types.size()];
                          for (int i = 0; i < types.size(); i++) {
                              result[i] = (TypeMirror) types.get(i).getValue();
                          }
                          return Arrays.asList(result);
                      }
                  }
                  return Collections.emptyList();
              }
          }
  
          throw new IllegalStateException(annotation.annotationType().getName() + " not found in " + member);
      }