public class org.springframework.data.util.AnnotationDetectionMethodCallback<A extends java.lang.annotation.Annotation> implements org.springframework.util.ReflectionUtils$MethodCallback
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.data.util.AnnotationDetectionMethodCallback
  super_class: java.lang.Object
{
  private static final java.lang.String MULTIPLE_FOUND;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Found annotation %s both on %s and %s! Make sure only one of them is annotated with it!"

  private final boolean enforceUniqueness;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Class<A> annotationType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<TA;>;

  private java.lang.reflect.Method foundMethod;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private A annotation;
    descriptor: Ljava/lang/annotation/Annotation;
    flags: (0x0002) ACC_PRIVATE
    Signature: TA;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void <init>(java.lang.Class<A>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
        start local 1 // java.lang.Class annotationType
         0: .line 48
            aload 0 /* this */
            aload 1 /* annotationType */
            iconst_0
            invokespecial org.springframework.data.util.AnnotationDetectionMethodCallback.<init>:(Ljava/lang/Class;Z)V
         1: .line 49
            return
        end local 1 // java.lang.Class annotationType
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
            0    2     1  annotationType  Ljava/lang/Class<TA;>;
    Signature: (Ljava/lang/Class<TA;>;)V
    MethodParameters:
                Name  Flags
      annotationType  

  public void <init>(java.lang.Class<A>, );
    descriptor: (Ljava/lang/Class;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
        start local 1 // java.lang.Class annotationType
        start local 2 // boolean enforceUniqueness
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            aload 1 /* annotationType */
            ldc "Annotation type must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 61
            aload 0 /* this */
            aload 1 /* annotationType */
            putfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotationType:Ljava/lang/Class;
         3: .line 62
            aload 0 /* this */
            iload 2 /* enforceUniqueness */
            putfield org.springframework.data.util.AnnotationDetectionMethodCallback.enforceUniqueness:Z
         4: .line 63
            return
        end local 2 // boolean enforceUniqueness
        end local 1 // java.lang.Class annotationType
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
            0    5     1     annotationType  Ljava/lang/Class<TA;>;
            0    5     2  enforceUniqueness  Z
    Signature: (Ljava/lang/Class<TA;>;Z)V
    MethodParameters:
                   Name  Flags
      annotationType     
      enforceUniqueness  

  public java.lang.reflect.Method getMethod();
    descriptor: ()Ljava/lang/reflect/Method;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
         0: .line 70
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
            areturn
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public java.lang.reflect.Method getRequiredMethod();
    descriptor: ()Ljava/lang/reflect/Method;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
         0: .line 81
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
            astore 1 /* method */
        start local 1 // java.lang.reflect.Method method
         1: .line 83
            aload 1 /* method */
            ifnonnull 3
         2: .line 84
            new java.lang.IllegalStateException
            dup
            ldc "No method with annotation %s found!"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotationType:Ljava/lang/Class;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 87
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 1 /* method */
            areturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
            1    4     1  method  Ljava/lang/reflect/Method;

  public A getAnnotation();
    descriptor: ()Ljava/lang/annotation/Annotation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
         0: .line 95
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotation:Ljava/lang/annotation/Annotation;
            areturn
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
    Signature: ()TA;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public boolean hasFoundAnnotation();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
         0: .line 104
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotation:Ljava/lang/annotation/Annotation;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;

  public void doWith(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
        start local 1 // java.lang.reflect.Method method
         0: .line 114
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
            ifnull 2
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.enforceUniqueness:Z
            ifne 2
         1: .line 115
            return
         2: .line 118
      StackMap locals:
      StackMap stack:
            aload 1 /* method */
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotationType:Ljava/lang/Class;
            invokestatic org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotation:(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            astore 2 /* foundAnnotation */
        start local 2 // java.lang.annotation.Annotation foundAnnotation
         3: .line 120
            aload 2 /* foundAnnotation */
            ifnull 10
         4: .line 122
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
            ifnull 8
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.enforceUniqueness:Z
            ifeq 8
         5: .line 123
            new java.lang.IllegalStateException
            dup
         6: .line 124
            ldc "Found annotation %s both on %s and %s! Make sure only one of them is annotated with it!"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* foundAnnotation */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
            aastore
            dup
            iconst_2
            aload 1 /* method */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         7: .line 123
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 127
      StackMap locals: java.lang.annotation.Annotation
      StackMap stack:
            aload 0 /* this */
            aload 2 /* foundAnnotation */
            putfield org.springframework.data.util.AnnotationDetectionMethodCallback.annotation:Ljava/lang/annotation/Annotation;
         9: .line 128
            aload 0 /* this */
            aload 1 /* method */
            putfield org.springframework.data.util.AnnotationDetectionMethodCallback.foundMethod:Ljava/lang/reflect/Method;
        10: .line 130
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.annotation.Annotation foundAnnotation
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.data.util.AnnotationDetectionMethodCallback this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lorg/springframework/data/util/AnnotationDetectionMethodCallback<TA;>;
            0   11     1           method  Ljava/lang/reflect/Method;
            3   11     2  foundAnnotation  TA;
    Exceptions:
      throws java.lang.IllegalArgumentException, java.lang.IllegalAccessException
    MethodParameters:
        Name  Flags
      method  
}
Signature: <A::Ljava/lang/annotation/Annotation;>Ljava/lang/Object;Lorg/springframework/util/ReflectionUtils$MethodCallback;
SourceFile: "AnnotationDetectionMethodCallback.java"
InnerClasses:
  public abstract MethodCallback = org.springframework.util.ReflectionUtils$MethodCallback of org.springframework.util.ReflectionUtils