/**
  * Handles the writing of a single annotation to an annotation visitor.
  *
  * @param annotationVisitor The annotation visitor the write process is to be applied on.
  * @param annotation The annotation to be written.
  * @param annotationValueFilter The value filter to apply for discovering which values of an
  *     annotation should be written.
  */
 private static void handle(
     AnnotationVisitor annotationVisitor,
     AnnotationDescription annotation,
     AnnotationValueFilter annotationValueFilter) {
   for (MethodDescription.InDefinedShape methodDescription :
       annotation.getAnnotationType().getDeclaredMethods()) {
     if (annotationValueFilter.isRelevant(annotation, methodDescription)) {
       apply(
           annotationVisitor,
           methodDescription.getReturnType().asErasure(),
           methodDescription.getName(),
           annotation.getValue(methodDescription));
     }
   }
   annotationVisitor.visitEnd();
 }
 @Override
 protected Resolution rebase(MethodDescription.InDefinedShape methodDescription) {
   return methodDescription.isConstructor()
       ? Resolution.ForRebasedConstructor.of(
           methodDescription, placeholderType.getTypeDescription())
       : Resolution.ForRebasedMethod.of(methodDescription, methodNameTransformer);
 }
 @Override
 protected Resolution rebase(MethodDescription.InDefinedShape methodDescription) {
   if (methodDescription.isConstructor()) {
     throw new IllegalArgumentException("Cannot rebase constructor without preparation");
   }
   return Resolution.ForRebasedMethod.of(methodDescription, methodNameTransformer);
 }
 @Override
 public int hashCode() {
   return methodDescription.hashCode();
 }
 @Override
 public boolean equals(Object other) {
   return this == other
       || !(other == null || getClass() != other.getClass())
           && methodDescription.equals(((ForRebasedConstructor) other).methodDescription);
 }
 @Override
 public boolean equals(Object other) {
   return this == other
       || !(other == null || getClass() != other.getClass())
           && methodDescription.equals(((Preserved) other).methodDescription);
 }