public abstract class org.springframework.aop.support.AopUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.aop.support.AopUtils
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.aop.support.AopUtils this
         0: .line 58
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.aop.support.AopUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/aop/support/AopUtils;

  public static boolean isAopProxy(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 69
            aload 0 /* object */
            instanceof org.springframework.aop.SpringProxy
            ifeq 3
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic java.lang.reflect.Proxy.isProxyClass:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 70
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "$$"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 3
         2: .line 69
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  object  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      object  

  public static boolean isJdkDynamicProxy(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 82
            aload 0 /* object */
            instanceof org.springframework.aop.SpringProxy
            ifeq 1
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic java.lang.reflect.Proxy.isProxyClass:(Ljava/lang/Class;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  object  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      object  

  public static boolean isCglibProxy(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object object
         0: .line 94
            aload 0 /* object */
            instanceof org.springframework.aop.SpringProxy
            ifeq 3
         1: .line 95
            aload 0 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "$$"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 3
         2: .line 94
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  object  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      object  

  public static java.lang.Class<?> getTargetClass();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Object candidate
         0: .line 108
            aload 0 /* candidate */
            ldc "Candidate object must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 109
            aconst_null
            astore 1 /* result */
        start local 1 // java.lang.Class result
         2: .line 110
            aload 0 /* candidate */
            instanceof org.springframework.aop.TargetClassAware
            ifeq 4
         3: .line 111
            aload 0 /* candidate */
            checkcast org.springframework.aop.TargetClassAware
            invokeinterface org.springframework.aop.TargetClassAware.getTargetClass:()Ljava/lang/Class;
            astore 1 /* result */
         4: .line 113
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* result */
            ifnonnull 8
         5: .line 114
            aload 0 /* candidate */
            invokestatic org.springframework.aop.support.AopUtils.isCglibProxy:(Ljava/lang/Object;)Z
            ifeq 6
            aload 0 /* candidate */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            goto 7
      StackMap locals:
      StackMap stack:
         6: aload 0 /* candidate */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         7: astore 1 /* result */
         8: .line 116
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 1 // java.lang.Class result
        end local 0 // java.lang.Object candidate
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  candidate  Ljava/lang/Object;
            2    9     1     result  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Object;)Ljava/lang/Class<*>;
    MethodParameters:
           Name  Flags
      candidate  

  public static java.lang.reflect.Method selectInvocableMethod(java.lang.reflect.Method, java.lang.Class<?>);
    descriptor: (Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/reflect/Method;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // java.lang.reflect.Method method
        start local 1 // java.lang.Class targetType
         0: .line 132
            aload 1 /* targetType */
            ifnonnull 2
         1: .line 133
            aload 0 /* method */
            areturn
         2: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* method */
            aload 1 /* targetType */
            invokestatic org.springframework.core.MethodIntrospector.selectInvocableMethod:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 2 /* methodToUse */
        start local 2 // java.lang.reflect.Method methodToUse
         3: .line 136
            aload 2 /* methodToUse */
            invokevirtual java.lang.reflect.Method.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPrivate:(I)Z
            ifeq 9
            aload 2 /* methodToUse */
            invokevirtual java.lang.reflect.Method.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifne 9
         4: .line 137
            ldc Lorg/springframework/aop/SpringProxy;
            aload 1 /* targetType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 9
         5: .line 138
            new java.lang.IllegalStateException
            dup
         6: .line 139
            ldc "Need to invoke method '%s' found on proxy for target class '%s' but cannot be delegated to target bean. Switch its visibility to package or protected."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 141
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
         8: .line 138
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 143
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 2 /* methodToUse */
            areturn
        end local 2 // java.lang.reflect.Method methodToUse
        end local 1 // java.lang.Class targetType
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0       method  Ljava/lang/reflect/Method;
            0   10     1   targetType  Ljava/lang/Class<*>;
            3   10     2  methodToUse  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/reflect/Method;Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      method      
      targetType  

  public static boolean isEqualsMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 151
            aload 0 /* method */
            invokestatic org.springframework.util.ReflectionUtils.isEqualsMethod:(Ljava/lang/reflect/Method;)Z
            ireturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  method  Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  

  public static boolean isHashCodeMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 159
            aload 0 /* method */
            invokestatic org.springframework.util.ReflectionUtils.isHashCodeMethod:(Ljava/lang/reflect/Method;)Z
            ireturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  method  Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  

  public static boolean isToStringMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 167
            aload 0 /* method */
            invokestatic org.springframework.util.ReflectionUtils.isToStringMethod:(Ljava/lang/reflect/Method;)Z
            ireturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  method  Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  

  public static boolean isFinalizeMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 175
            aload 0 /* method */
            ifnull 3
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            ldc "finalize"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 176
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getParameterCount:()I
            ifne 3
         2: .line 175
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  method  Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  

  public static java.lang.reflect.Method getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>);
    descriptor: (Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/reflect/Method;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.reflect.Method method
        start local 1 // java.lang.Class targetClass
         0: .line 196
            aload 1 /* targetClass */
            ifnull 1
            aload 1 /* targetClass */
            invokestatic org.springframework.util.ClassUtils.getUserClass:(Ljava/lang/Class;)Ljava/lang/Class;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Class
         2: astore 2 /* specificTargetClass */
        start local 2 // java.lang.Class specificTargetClass
         3: .line 197
            aload 0 /* method */
            aload 2 /* specificTargetClass */
            invokestatic org.springframework.util.ClassUtils.getMostSpecificMethod:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 3 /* resolvedMethod */
        start local 3 // java.lang.reflect.Method resolvedMethod
         4: .line 199
            aload 3 /* resolvedMethod */
            invokestatic org.springframework.core.BridgeMethodResolver.findBridgedMethod:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
            areturn
        end local 3 // java.lang.reflect.Method resolvedMethod
        end local 2 // java.lang.Class specificTargetClass
        end local 1 // java.lang.Class targetClass
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0               method  Ljava/lang/reflect/Method;
            0    5     1          targetClass  Ljava/lang/Class<*>;
            3    5     2  specificTargetClass  Ljava/lang/Class<*>;
            4    5     3       resolvedMethod  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/reflect/Method;Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      method       
      targetClass  

  public static boolean canApply(org.springframework.aop.Pointcut, java.lang.Class<?>);
    descriptor: (Lorg/springframework/aop/Pointcut;Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.Pointcut pc
        start local 1 // java.lang.Class targetClass
         0: .line 211
            aload 0 /* pc */
            aload 1 /* targetClass */
            iconst_0
            invokestatic org.springframework.aop.support.AopUtils.canApply:(Lorg/springframework/aop/Pointcut;Ljava/lang/Class;Z)Z
            ireturn
        end local 1 // java.lang.Class targetClass
        end local 0 // org.springframework.aop.Pointcut pc
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0           pc  Lorg/springframework/aop/Pointcut;
            0    1     1  targetClass  Ljava/lang/Class<*>;
    Signature: (Lorg/springframework/aop/Pointcut;Ljava/lang/Class<*>;)Z
    MethodParameters:
             Name  Flags
      pc           
      targetClass  

  public static boolean canApply(org.springframework.aop.Pointcut, java.lang.Class<?>, );
    descriptor: (Lorg/springframework/aop/Pointcut;Ljava/lang/Class;Z)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // org.springframework.aop.Pointcut pc
        start local 1 // java.lang.Class targetClass
        start local 2 // boolean hasIntroductions
         0: .line 225
            aload 0 /* pc */
            ldc "Pointcut must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 226
            aload 0 /* pc */
            invokeinterface org.springframework.aop.Pointcut.getClassFilter:()Lorg/springframework/aop/ClassFilter;
            aload 1 /* targetClass */
            invokeinterface org.springframework.aop.ClassFilter.matches:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 227
            iconst_0
            ireturn
         3: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* pc */
            invokeinterface org.springframework.aop.Pointcut.getMethodMatcher:()Lorg/springframework/aop/MethodMatcher;
            astore 3 /* methodMatcher */
        start local 3 // org.springframework.aop.MethodMatcher methodMatcher
         4: .line 231
            aload 3 /* methodMatcher */
            getstatic org.springframework.aop.MethodMatcher.TRUE:Lorg/springframework/aop/MethodMatcher;
            if_acmpne 6
         5: .line 233
            iconst_1
            ireturn
         6: .line 236
      StackMap locals: org.springframework.aop.MethodMatcher
      StackMap stack:
            aconst_null
            astore 4 /* introductionAwareMethodMatcher */
        start local 4 // org.springframework.aop.IntroductionAwareMethodMatcher introductionAwareMethodMatcher
         7: .line 237
            aload 3 /* methodMatcher */
            instanceof org.springframework.aop.IntroductionAwareMethodMatcher
            ifeq 9
         8: .line 238
            aload 3 /* methodMatcher */
            checkcast org.springframework.aop.IntroductionAwareMethodMatcher
            astore 4 /* introductionAwareMethodMatcher */
         9: .line 241
      StackMap locals: org.springframework.aop.IntroductionAwareMethodMatcher
      StackMap stack:
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            astore 5 /* classes */
        start local 5 // java.util.Set classes
        10: .line 242
            aload 1 /* targetClass */
            invokestatic java.lang.reflect.Proxy.isProxyClass:(Ljava/lang/Class;)Z
            ifne 12
        11: .line 243
            aload 5 /* classes */
            aload 1 /* targetClass */
            invokestatic org.springframework.util.ClassUtils.getUserClass:(Ljava/lang/Class;)Ljava/lang/Class;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 245
      StackMap locals: java.util.Set
      StackMap stack:
            aload 5 /* classes */
            aload 1 /* targetClass */
            invokestatic org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet:(Ljava/lang/Class;)Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        13: .line 247
            aload 5 /* classes */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 24
      StackMap locals: org.springframework.aop.Pointcut java.lang.Class int org.springframework.aop.MethodMatcher org.springframework.aop.IntroductionAwareMethodMatcher java.util.Set top java.util.Iterator
      StackMap stack:
        14: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 6 /* clazz */
        start local 6 // java.lang.Class clazz
        15: .line 248
            aload 6 /* clazz */
            invokestatic org.springframework.util.ReflectionUtils.getAllDeclaredMethods:(Ljava/lang/Class;)[Ljava/lang/reflect/Method;
            astore 8 /* methods */
        start local 8 // java.lang.reflect.Method[] methods
        16: .line 249
            aload 8 /* methods */
            dup
            astore 12
            arraylength
            istore 11
            iconst_0
            istore 10
            goto 23
      StackMap locals: org.springframework.aop.Pointcut java.lang.Class int org.springframework.aop.MethodMatcher org.springframework.aop.IntroductionAwareMethodMatcher java.util.Set java.lang.Class java.util.Iterator java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
      StackMap stack:
        17: aload 12
            iload 10
            aaload
            astore 9 /* method */
        start local 9 // java.lang.reflect.Method method
        18: .line 250
            aload 4 /* introductionAwareMethodMatcher */
            ifnull 20
        19: .line 251
            aload 4 /* introductionAwareMethodMatcher */
            aload 9 /* method */
            aload 1 /* targetClass */
            iload 2 /* hasIntroductions */
            invokeinterface org.springframework.aop.IntroductionAwareMethodMatcher.matches:(Ljava/lang/reflect/Method;Ljava/lang/Class;Z)Z
            ifeq 22
            goto 21
        20: .line 252
      StackMap locals: org.springframework.aop.Pointcut java.lang.Class int org.springframework.aop.MethodMatcher org.springframework.aop.IntroductionAwareMethodMatcher java.util.Set java.lang.Class java.util.Iterator java.lang.reflect.Method[] java.lang.reflect.Method int int java.lang.reflect.Method[]
      StackMap stack:
            aload 3 /* methodMatcher */
            aload 9 /* method */
            aload 1 /* targetClass */
            invokeinterface org.springframework.aop.MethodMatcher.matches:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
            ifeq 22
        21: .line 253
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 9 // java.lang.reflect.Method method
        22: .line 249
      StackMap locals: org.springframework.aop.Pointcut java.lang.Class int org.springframework.aop.MethodMatcher org.springframework.aop.IntroductionAwareMethodMatcher java.util.Set java.lang.Class java.util.Iterator java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 10 1
      StackMap locals:
      StackMap stack:
        23: iload 10
            iload 11
            if_icmplt 17
        end local 8 // java.lang.reflect.Method[] methods
        end local 6 // java.lang.Class clazz
        24: .line 247
      StackMap locals: org.springframework.aop.Pointcut java.lang.Class int org.springframework.aop.MethodMatcher org.springframework.aop.IntroductionAwareMethodMatcher java.util.Set top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        25: .line 258
            iconst_0
            ireturn
        end local 5 // java.util.Set classes
        end local 4 // org.springframework.aop.IntroductionAwareMethodMatcher introductionAwareMethodMatcher
        end local 3 // org.springframework.aop.MethodMatcher methodMatcher
        end local 2 // boolean hasIntroductions
        end local 1 // java.lang.Class targetClass
        end local 0 // org.springframework.aop.Pointcut pc
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0   26     0                              pc  Lorg/springframework/aop/Pointcut;
            0   26     1                     targetClass  Ljava/lang/Class<*>;
            0   26     2                hasIntroductions  Z
            4   26     3                   methodMatcher  Lorg/springframework/aop/MethodMatcher;
            7   26     4  introductionAwareMethodMatcher  Lorg/springframework/aop/IntroductionAwareMethodMatcher;
           10   26     5                         classes  Ljava/util/Set<Ljava/lang/Class<*>;>;
           15   24     6                           clazz  Ljava/lang/Class<*>;
           16   24     8                         methods  [Ljava/lang/reflect/Method;
           18   22     9                          method  Ljava/lang/reflect/Method;
    Signature: (Lorg/springframework/aop/Pointcut;Ljava/lang/Class<*>;Z)Z
    MethodParameters:
                  Name  Flags
      pc                
      targetClass       
      hasIntroductions  

  public static boolean canApply(org.springframework.aop.Advisor, java.lang.Class<?>);
    descriptor: (Lorg/springframework/aop/Advisor;Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.Advisor advisor
        start local 1 // java.lang.Class targetClass
         0: .line 270
            aload 0 /* advisor */
            aload 1 /* targetClass */
            iconst_0
            invokestatic org.springframework.aop.support.AopUtils.canApply:(Lorg/springframework/aop/Advisor;Ljava/lang/Class;Z)Z
            ireturn
        end local 1 // java.lang.Class targetClass
        end local 0 // org.springframework.aop.Advisor advisor
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0      advisor  Lorg/springframework/aop/Advisor;
            0    1     1  targetClass  Ljava/lang/Class<*>;
    Signature: (Lorg/springframework/aop/Advisor;Ljava/lang/Class<*>;)Z
    MethodParameters:
             Name  Flags
      advisor      
      targetClass  

  public static boolean canApply(org.springframework.aop.Advisor, java.lang.Class<?>, );
    descriptor: (Lorg/springframework/aop/Advisor;Ljava/lang/Class;Z)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.aop.Advisor advisor
        start local 1 // java.lang.Class targetClass
        start local 2 // boolean hasIntroductions
         0: .line 284
            aload 0 /* advisor */
            instanceof org.springframework.aop.IntroductionAdvisor
            ifeq 2
         1: .line 285
            aload 0 /* advisor */
            checkcast org.springframework.aop.IntroductionAdvisor
            invokeinterface org.springframework.aop.IntroductionAdvisor.getClassFilter:()Lorg/springframework/aop/ClassFilter;
            aload 1 /* targetClass */
            invokeinterface org.springframework.aop.ClassFilter.matches:(Ljava/lang/Class;)Z
            ireturn
         2: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* advisor */
            instanceof org.springframework.aop.PointcutAdvisor
            ifeq 5
         3: .line 288
            aload 0 /* advisor */
            checkcast org.springframework.aop.PointcutAdvisor
            astore 3 /* pca */
        start local 3 // org.springframework.aop.PointcutAdvisor pca
         4: .line 289
            aload 3 /* pca */
            invokeinterface org.springframework.aop.PointcutAdvisor.getPointcut:()Lorg/springframework/aop/Pointcut;
            aload 1 /* targetClass */
            iload 2 /* hasIntroductions */
            invokestatic org.springframework.aop.support.AopUtils.canApply:(Lorg/springframework/aop/Pointcut;Ljava/lang/Class;Z)Z
            ireturn
        end local 3 // org.springframework.aop.PointcutAdvisor pca
         5: .line 293
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // boolean hasIntroductions
        end local 1 // java.lang.Class targetClass
        end local 0 // org.springframework.aop.Advisor advisor
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0           advisor  Lorg/springframework/aop/Advisor;
            0    6     1       targetClass  Ljava/lang/Class<*>;
            0    6     2  hasIntroductions  Z
            4    5     3               pca  Lorg/springframework/aop/PointcutAdvisor;
    Signature: (Lorg/springframework/aop/Advisor;Ljava/lang/Class<*>;Z)Z
    MethodParameters:
                  Name  Flags
      advisor           
      targetClass       
      hasIntroductions  

  public static java.util.List<org.springframework.aop.Advisor> findAdvisorsThatCanApply(java.util.List<org.springframework.aop.Advisor>, java.lang.Class<?>);
    descriptor: (Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.util.List candidateAdvisors
        start local 1 // java.lang.Class clazz
         0: .line 306
            aload 0 /* candidateAdvisors */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
         1: .line 307
            aload 0 /* candidateAdvisors */
            areturn
         2: .line 309
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* eligibleAdvisors */
        start local 2 // java.util.List eligibleAdvisors
         3: .line 310
            aload 0 /* candidateAdvisors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: java.util.List java.lang.Class java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.aop.Advisor
            astore 3 /* candidate */
        start local 3 // org.springframework.aop.Advisor candidate
         5: .line 311
            aload 3 /* candidate */
            instanceof org.springframework.aop.IntroductionAdvisor
            ifeq 7
            aload 3 /* candidate */
            aload 1 /* clazz */
            invokestatic org.springframework.aop.support.AopUtils.canApply:(Lorg/springframework/aop/Advisor;Ljava/lang/Class;)Z
            ifeq 7
         6: .line 312
            aload 2 /* eligibleAdvisors */
            aload 3 /* candidate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.springframework.aop.Advisor candidate
         7: .line 310
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 315
            aload 2 /* eligibleAdvisors */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 9
            iconst_0
            goto 10
      StackMap locals: java.util.List java.lang.Class java.util.List
      StackMap stack:
         9: iconst_1
      StackMap locals:
      StackMap stack: int
        10: istore 3 /* hasIntroductions */
        start local 3 // boolean hasIntroductions
        11: .line 316
            aload 0 /* candidateAdvisors */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 17
      StackMap locals: java.util.List java.lang.Class java.util.List int top java.util.Iterator
      StackMap stack:
        12: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.aop.Advisor
            astore 4 /* candidate */
        start local 4 // org.springframework.aop.Advisor candidate
        13: .line 317
            aload 4 /* candidate */
            instanceof org.springframework.aop.IntroductionAdvisor
            ifeq 15
        14: .line 319
            goto 17
        15: .line 321
      StackMap locals: java.util.List java.lang.Class java.util.List int org.springframework.aop.Advisor java.util.Iterator
      StackMap stack:
            aload 4 /* candidate */
            aload 1 /* clazz */
            iload 3 /* hasIntroductions */
            invokestatic org.springframework.aop.support.AopUtils.canApply:(Lorg/springframework/aop/Advisor;Ljava/lang/Class;Z)Z
            ifeq 17
        16: .line 322
            aload 2 /* eligibleAdvisors */
            aload 4 /* candidate */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // org.springframework.aop.Advisor candidate
        17: .line 316
      StackMap locals: java.util.List java.lang.Class java.util.List int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        18: .line 325
            aload 2 /* eligibleAdvisors */
            areturn
        end local 3 // boolean hasIntroductions
        end local 2 // java.util.List eligibleAdvisors
        end local 1 // java.lang.Class clazz
        end local 0 // java.util.List candidateAdvisors
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0  candidateAdvisors  Ljava/util/List<Lorg/springframework/aop/Advisor;>;
            0   19     1              clazz  Ljava/lang/Class<*>;
            3   19     2   eligibleAdvisors  Ljava/util/List<Lorg/springframework/aop/Advisor;>;
            5    7     3          candidate  Lorg/springframework/aop/Advisor;
           11   19     3   hasIntroductions  Z
           13   17     4          candidate  Lorg/springframework/aop/Advisor;
    Signature: (Ljava/util/List<Lorg/springframework/aop/Advisor;>;Ljava/lang/Class<*>;)Ljava/util/List<Lorg/springframework/aop/Advisor;>;
    MethodParameters:
                   Name  Flags
      candidateAdvisors  
      clazz              

  public static java.lang.Object invokeJoinpointUsingReflection(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.Object target
        start local 1 // java.lang.reflect.Method method
        start local 2 // java.lang.Object[] args
         0: .line 343
            aload 1 /* method */
            invokestatic org.springframework.util.ReflectionUtils.makeAccessible:(Ljava/lang/reflect/Method;)V
         1: .line 344
            aload 1 /* method */
            aload 0 /* target */
            aload 2 /* args */
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
         2: areturn
         3: .line 346
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 3 /* ex */
        start local 3 // java.lang.reflect.InvocationTargetException ex
         4: .line 349
            aload 3 /* ex */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            athrow
        end local 3 // java.lang.reflect.InvocationTargetException ex
         5: .line 351
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 3 /* ex */
        start local 3 // java.lang.IllegalArgumentException ex
         6: .line 352
            new org.springframework.aop.AopInvocationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "AOP configuration seems to be invalid: tried calling method ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 353
            aload 1 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] on target ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* ex */
         8: .line 352
            invokespecial org.springframework.aop.AopInvocationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.IllegalArgumentException ex
         9: .line 355
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            astore 3 /* ex */
        start local 3 // java.lang.IllegalAccessException ex
        10: .line 356
            new org.springframework.aop.AopInvocationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not access method ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* ex */
            invokespecial org.springframework.aop.AopInvocationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.IllegalAccessException ex
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.reflect.Method method
        end local 0 // java.lang.Object target
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0  target  Ljava/lang/Object;
            0   11     1  method  Ljava/lang/reflect/Method;
            0   11     2    args  [Ljava/lang/Object;
            4    5     3      ex  Ljava/lang/reflect/InvocationTargetException;
            6    9     3      ex  Ljava/lang/IllegalArgumentException;
           10   11     3      ex  Ljava/lang/IllegalAccessException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.reflect.InvocationTargetException
           0     2       5  Class java.lang.IllegalArgumentException
           0     2       9  Class java.lang.IllegalAccessException
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
      2:
    MethodParameters:
        Name  Flags
      target  
      method  
      args    
}
SourceFile: "AopUtils.java"