docs: @Internal
      public static AnnotationMetadata mutateMember(
              AnnotationMetadata annotationMetadata,
              String annotationName,
              Map<CharSequence, Object> members) {
          if (StringUtils.isEmpty(annotationName)) {
              throw new IllegalArgumentException("Argument [annotationName] cannot be blank");
          }
          if (!members.isEmpty()) {
              for (Map.Entry<CharSequence, Object> entry: members.entrySet()) {
                  if (StringUtils.isEmpty(entry.getKey())) {
                      throw new IllegalArgumentException("Argument [members] cannot have a blank key");
                  }
                  if (entry.getValue() == null) {
                      throw new IllegalArgumentException("Argument [members] cannot have a null value. Key [" + entry.getKey() + "]");
                  }
              }
          }
          if (!(annotationMetadata instanceof DefaultAnnotationMetadata)) {
              return new DefaultAnnotationMetadata() {{
                  addDeclaredAnnotation(annotationName, members);
              }};
          } else {
              DefaultAnnotationMetadata defaultMetadata = (DefaultAnnotationMetadata) annotationMetadata;
  
              defaultMetadata = (DefaultAnnotationMetadata) defaultMetadata.clone();
  
              defaultMetadata
                      .addDeclaredAnnotation(annotationName, members);
  
              return defaultMetadata;
          }
      }