public class org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer implements org.springframework.core.ParameterNameDiscoverer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer
  super_class: java.lang.Object
{
  private static final java.lang.String THIS_JOIN_POINT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "thisJoinPoint"

  private static final java.lang.String THIS_JOIN_POINT_STATIC_PART;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "thisJoinPointStaticPart"

  private static final int STEP_JOIN_POINT_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int STEP_THROWING_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int STEP_ANNOTATION_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int STEP_RETURNING_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int STEP_PRIMITIVE_ARGS_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  private static final int STEP_THIS_TARGET_ARGS_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  private static final int STEP_REFERENCE_PCUT_BINDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  private static final int STEP_FINISHED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private static final java.util.Set<java.lang.String> singleValuedAnnotationPcds;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private static final java.util.Set<java.lang.String> nonReferencePointcutTokens;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private java.lang.String pointcutExpression;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private boolean raiseExceptions;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String returningName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.String throwingName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.Class<?>[] argumentTypes;
    descriptor: [Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Signature: [Ljava/lang/Class<*>;

  private java.lang.String[] parameterNameBindings;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private int numberOfRemainingUnboundArguments;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=0
         0: .line 135
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
         1: .line 136
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
         2: .line 140
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            ldc "@this"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 141
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            ldc "@target"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 142
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            ldc "@within"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 143
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            ldc "@withincode"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 144
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            ldc "@annotation"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 146
            invokestatic org.aspectj.weaver.tools.PointcutParser.getAllSupportedPointcutPrimitives:()Ljava/util/Set;
            astore 0 /* pointcutPrimitives */
        start local 0 // java.util.Set pointcutPrimitives
         8: .line 147
            aload 0 /* pointcutPrimitives */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 2
            goto 11
      StackMap locals: java.util.Set top java.util.Iterator
      StackMap stack:
         9: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.aspectj.weaver.tools.PointcutPrimitive
            astore 1 /* primitive */
        start local 1 // org.aspectj.weaver.tools.PointcutPrimitive primitive
        10: .line 148
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            aload 1 /* primitive */
            invokevirtual org.aspectj.weaver.tools.PointcutPrimitive.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // org.aspectj.weaver.tools.PointcutPrimitive primitive
        11: .line 147
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        12: .line 150
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "&&"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        13: .line 151
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "!"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        14: .line 152
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "||"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 153
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "and"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        16: .line 154
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "or"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        17: .line 155
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            ldc "not"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 0 // java.util.Set pointcutPrimitives
        18: .line 156
            return
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            8   18     0  pointcutPrimitives  Ljava/util/Set<Lorg/aspectj/weaver/tools/PointcutPrimitive;>;
           10   11     1           primitive  Lorg/aspectj/weaver/tools/PointcutPrimitive;

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String pointcutExpression
         0: .line 184
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 173
            aload 0 /* this */
            iconst_0
            anewarray java.lang.Class
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
         2: .line 175
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
         3: .line 185
            aload 0 /* this */
            aload 1 /* pointcutExpression */
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.pointcutExpression:Ljava/lang/String;
         4: .line 186
            return
        end local 1 // java.lang.String pointcutExpression
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    5     1  pointcutExpression  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                    Name  Flags
      pointcutExpression  

  public void setRaiseExceptions(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // boolean raiseExceptions
         0: .line 195
            aload 0 /* this */
            iload 1 /* raiseExceptions */
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.raiseExceptions:Z
         1: .line 196
            return
        end local 1 // boolean raiseExceptions
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    2     1  raiseExceptions  Z
    MethodParameters:
                 Name  Flags
      raiseExceptions  

  public void setReturningName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String returningName
         0: .line 204
            aload 0 /* this */
            aload 1 /* returningName */
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.returningName:Ljava/lang/String;
         1: .line 205
            return
        end local 1 // java.lang.String returningName
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    2     1  returningName  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      returningName  

  public void setThrowingName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String throwingName
         0: .line 213
            aload 0 /* this */
            aload 1 /* throwingName */
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
         1: .line 214
            return
        end local 1 // java.lang.String throwingName
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    2     1  throwingName  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
              Name  Flags
      throwingName  

  public java.lang.String[] getParameterNames(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.reflect.Method method
         0: .line 227
            aload 0 /* this */
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
         1: .line 228
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
         2: .line 229
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            anewarray java.lang.String
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
         3: .line 231
            iconst_0
            istore 2 /* minimumNumberUnboundArgs */
        start local 2 // int minimumNumberUnboundArgs
         4: .line 232
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.returningName:Ljava/lang/String;
            ifnull 6
         5: .line 233
            iinc 2 /* minimumNumberUnboundArgs */ 1
         6: .line 235
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
            ifnull 8
         7: .line 236
            iinc 2 /* minimumNumberUnboundArgs */ 1
         8: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            iload 2 /* minimumNumberUnboundArgs */
            if_icmpge 12
         9: .line 239
            new java.lang.IllegalStateException
            dup
        10: .line 240
            ldc "Not enough arguments in method to satisfy binding of returning and throwing variables"
        11: .line 239
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 244
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* algorithmicStep */
        start local 3 // int algorithmicStep
        13: .line 245
            goto 31
        14: .line 246
      StackMap locals: int
      StackMap stack:
            iload 3 /* algorithmicStep */
            iinc 3 /* algorithmicStep */ 1
            tableswitch { // 1 - 7
                    1: 15
                    2: 18
                    3: 20
                    4: 22
                    5: 24
                    6: 26
                    7: 28
              default: 30
          }
        15: .line 248
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindThisJoinPoint:()Z
            ifne 31
        16: .line 249
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindThisJoinPointStaticPart:()V
        17: .line 251
            goto 31
        18: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindThrowingVariable:()V
        19: .line 254
            goto 31
        20: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindAnnotationsFromPointcutExpression:()V
        21: .line 257
            goto 31
        22: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindReturningVariable:()V
        23: .line 260
            goto 31
        24: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindPrimitiveArgsFromPointcutExpression:()V
        25: .line 263
            goto 31
        26: .line 265
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindThisOrTargetOrArgsFromPointcutExpression:()V
        27: .line 266
            goto 31
        28: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeBindReferencePointcutParameter:()V
        29: .line 269
            goto 31
        30: .line 271
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown algorithmic step: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* algorithmicStep */
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 245
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            ifle 37
            iload 3 /* algorithmicStep */
            bipush 8
            if_icmplt 14
        end local 3 // int algorithmicStep
        32: .line 274
            goto 37
        33: .line 275
      StackMap locals: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer java.lang.reflect.Method int
      StackMap stack: java.lang.RuntimeException
            astore 3 /* ex */
        start local 3 // java.lang.RuntimeException ex
        34: .line 276
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.raiseExceptions:Z
            ifeq 36
        35: .line 277
            aload 3 /* ex */
            athrow
        36: .line 280
      StackMap locals: java.lang.RuntimeException
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.lang.RuntimeException ex
        37: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            ifne 39
        38: .line 285
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            areturn
        39: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.raiseExceptions:Z
            ifeq 43
        40: .line 289
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Failed to bind all argument names: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        41: .line 290
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " argument(s) could not be bound"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 289
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        43: .line 294
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // int minimumNumberUnboundArgs
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   44     0                      this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   44     1                    method  Ljava/lang/reflect/Method;
            4   44     2  minimumNumberUnboundArgs  I
           13   32     3           algorithmicStep  I
           34   37     3                        ex  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
          12    32      33  Class org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
          12    32      33  Class java.lang.IllegalArgumentException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  

  public java.lang.String[] getParameterNames(java.lang.reflect.Constructor<?>);
    descriptor: (Ljava/lang/reflect/Constructor;)[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.reflect.Constructor ctor
         0: .line 308
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.raiseExceptions:Z
            ifeq 2
         1: .line 309
            new java.lang.UnsupportedOperationException
            dup
            ldc "An advice method can never be a constructor"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 314
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.reflect.Constructor ctor
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    3     1  ctor  Ljava/lang/reflect/Constructor<*>;
    Signature: (Ljava/lang/reflect/Constructor<*>;)[Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      ctor  

  private void bindParameterName(int, java.lang.String);
    descriptor: (ILjava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // int index
        start local 2 // java.lang.String name
         0: .line 320
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            iload 1 /* index */
            aload 2 /* name */
            aastore
         1: .line 321
            aload 0 /* this */
            dup
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            iconst_1
            isub
            putfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
         2: .line 322
            return
        end local 2 // java.lang.String name
        end local 1 // int index
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    3     1  index  I
            0    3     2   name  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      index  
      name   

  private boolean maybeBindThisJoinPoint();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 329
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iconst_0
            aaload
            ldc Lorg/aspectj/lang/JoinPoint;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iconst_0
            aaload
            ldc Lorg/aspectj/lang/ProceedingJoinPoint;
            if_acmpne 3
         1: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            ldc "thisJoinPoint"
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
         2: .line 331
            iconst_1
            ireturn
         3: .line 334
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;

  private void maybeBindThisJoinPointStaticPart();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 339
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iconst_0
            aaload
            ldc Lorg/aspectj/lang/JoinPoint$StaticPart;
            if_acmpne 2
         1: .line 340
            aload 0 /* this */
            iconst_0
            ldc "thisJoinPointStaticPart"
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
         2: .line 342
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;

  private void maybeBindThrowingVariable();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 349
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
            ifnonnull 2
         1: .line 350
            return
         2: .line 354
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 1 /* throwableIndex */
        start local 1 // int throwableIndex
         3: .line 355
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 14
         5: .line 356
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 13
            aload 0 /* this */
            ldc Ljava/lang/Throwable;
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isSubtypeOf:(Ljava/lang/Class;I)Z
            ifeq 13
         6: .line 357
            iload 1 /* throwableIndex */
            iconst_m1
            if_icmpne 9
         7: .line 358
            iload 2 /* i */
            istore 1 /* throwableIndex */
         8: .line 359
            goto 13
         9: .line 362
      StackMap locals:
      StackMap stack:
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Binding of throwing parameter '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 363
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' is ambiguous: could be bound to argument "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 364
            iload 1 /* throwableIndex */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " or argument "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 362
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 355
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 2 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            if_icmplt 5
        end local 2 // int i
        15: .line 369
            iload 1 /* throwableIndex */
            iconst_m1
            if_icmpne 19
        16: .line 370
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Binding of throwing parameter '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 371
            ldc "' could not be completed as no available arguments are a subtype of Throwable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 370
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 374
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* throwableIndex */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.throwingName:Ljava/lang/String;
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
        20: .line 376
            return
        end local 1 // int throwableIndex
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   21     0            this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            3   21     1  throwableIndex  I
            4   15     2               i  I

  private void maybeBindReturningVariable();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 382
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            ifne 4
         1: .line 383
            new java.lang.IllegalStateException
            dup
         2: .line 384
            ldc "Algorithm assumes that there must be at least one unbound parameter on entry to this method"
         3: .line 383
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 387
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.returningName:Ljava/lang/String;
            ifnull 16
         5: .line 388
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            iconst_1
            if_icmple 9
         6: .line 389
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Binding of returning parameter '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.returningName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 390
            ldc "' is ambiguous, there are "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " candidates."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 389
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 394
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        10: goto 15
        11: .line 395
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            ifnonnull 14
        12: .line 396
            aload 0 /* this */
            iload 1 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.returningName:Ljava/lang/String;
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
        13: .line 397
            goto 16
        14: .line 394
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 1 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            arraylength
            if_icmplt 11
        end local 1 // int i
        16: .line 401
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
           10   16     1     i  I

  private void maybeBindAnnotationsFromPointcutExpression();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 412
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* varNames */
        start local 1 // java.util.List varNames
         1: .line 413
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.pointcutExpression:Ljava/lang/String;
            ldc " "
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* tokens */
        start local 2 // java.lang.String[] tokens
         2: .line 414
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 20
         4: .line 415
      StackMap locals: java.util.List java.lang.String[] int
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            astore 4 /* toMatch */
        start local 4 // java.lang.String toMatch
         5: .line 416
            aload 4 /* toMatch */
            bipush 40
            invokevirtual java.lang.String.indexOf:(I)I
            istore 5 /* firstParenIndex */
        start local 5 // int firstParenIndex
         6: .line 417
            iload 5 /* firstParenIndex */
            iconst_m1
            if_icmpeq 8
         7: .line 418
            aload 4 /* toMatch */
            iconst_0
            iload 5 /* firstParenIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* toMatch */
         8: .line 420
      StackMap locals: java.lang.String int
      StackMap stack:
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.singleValuedAnnotationPcds:Ljava/util/Set;
            aload 4 /* toMatch */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 15
         9: .line 421
            aload 0 /* this */
            aload 2 /* tokens */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 6 /* body */
        start local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        10: .line 422
            iload 3 /* i */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 3 /* i */
        11: .line 423
            aload 0 /* this */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableName:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* varName */
        start local 7 // java.lang.String varName
        12: .line 424
            aload 7 /* varName */
            ifnull 19
        13: .line 425
            aload 1 /* varNames */
            aload 7 /* varName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.lang.String varName
        end local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        14: .line 427
            goto 19
        15: .line 428
      StackMap locals:
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "@args("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 16
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "@args"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        16: .line 429
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* tokens */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 6 /* body */
        start local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        17: .line 430
            iload 3 /* i */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 3 /* i */
        18: .line 431
            aload 0 /* this */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            aload 1 /* varNames */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableNamesFromArgs:(Ljava/lang/String;Ljava/util/List;)V
        end local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        end local 5 // int firstParenIndex
        end local 4 // java.lang.String toMatch
        19: .line 414
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 3 /* i */
            aload 2 /* tokens */
            arraylength
            if_icmplt 4
        end local 3 // int i
        21: .line 435
            aload 0 /* this */
            aload 1 /* varNames */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindAnnotationsFromVarNames:(Ljava/util/List;)V
        22: .line 436
            return
        end local 2 // java.lang.String[] tokens
        end local 1 // java.util.List varNames
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   23     0             this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            1   23     1         varNames  Ljava/util/List<Ljava/lang/String;>;
            2   23     2           tokens  [Ljava/lang/String;
            3   21     3                i  I
            5   19     4          toMatch  Ljava/lang/String;
            6   19     5  firstParenIndex  I
           10   14     6             body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
           12   14     7          varName  Ljava/lang/String;
           17   19     6             body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;

  private void bindAnnotationsFromVarNames(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.util.List varNames
         0: .line 442
            aload 1 /* varNames */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 15
         1: .line 444
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.countNumberOfUnboundAnnotationArguments:()I
            istore 2 /* numAnnotationSlots */
        start local 2 // int numAnnotationSlots
         2: .line 445
            iload 2 /* numAnnotationSlots */
            iconst_1
            if_icmple 7
         3: .line 446
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         4: .line 447
            ldc " potential annotation variable(s), and "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 448
            iload 2 /* numAnnotationSlots */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " potential argument slots"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 446
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 450
      StackMap locals: int
      StackMap stack:
            iload 2 /* numAnnotationSlots */
            iconst_1
            if_icmpne 15
         8: .line 451
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 11
         9: .line 453
            aload 0 /* this */
            ldc Ljava/lang/annotation/Annotation;
            aload 1 /* varNames */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.findAndBind:(Ljava/lang/Class;Ljava/lang/String;)V
        10: .line 454
            goto 15
        11: .line 457
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        12: .line 458
            ldc " candidate annotation binding variables"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 459
            ldc " but only one potential argument binding slot"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 457
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int numAnnotationSlots
        15: .line 466
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List varNames
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   16     0                this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   16     1            varNames  Ljava/util/List<Ljava/lang/String;>;
            2   15     2  numAnnotationSlots  I
    Signature: (Ljava/util/List<Ljava/lang/String;>;)V
    MethodParameters:
          Name  Flags
      varNames  

  private java.lang.String maybeExtractVariableName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String candidateToken
         0: .line 473
            aload 1 /* candidateToken */
            invokestatic org.springframework.util.StringUtils.hasLength:(Ljava/lang/String;)Z
            ifne 2
         1: .line 474
            aconst_null
            areturn
         2: .line 476
      StackMap locals:
      StackMap stack:
            aload 1 /* candidateToken */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.isJavaIdentifierStart:(C)Z
            ifeq 12
         3: .line 477
            aload 1 /* candidateToken */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.isLowerCase:(C)Z
            ifeq 12
         4: .line 478
            aload 1 /* candidateToken */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 2 /* tokenChars */
        start local 2 // char[] tokenChars
         5: .line 479
            aload 2 /* tokenChars */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 10
      StackMap locals: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer java.lang.String char[] top int int char[]
      StackMap stack:
         6: aload 6
            iload 4
            caload
            istore 3 /* tokenChar */
        start local 3 // char tokenChar
         7: .line 480
            iload 3 /* tokenChar */
            invokestatic java.lang.Character.isJavaIdentifierPart:(C)Z
            ifne 9
         8: .line 481
            aconst_null
            areturn
        end local 3 // char tokenChar
         9: .line 479
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        10: iload 4
            iload 5
            if_icmplt 6
        11: .line 484
            aload 1 /* candidateToken */
            areturn
        end local 2 // char[] tokenChars
        12: .line 487
      StackMap locals: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer java.lang.String
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String candidateToken
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   13     1  candidateToken  Ljava/lang/String;
            5   12     2      tokenChars  [C
            7    9     3       tokenChar  C
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                Name  Flags
      candidateToken  

  private void maybeExtractVariableNamesFromArgs(java.lang.String, java.util.List<java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String argsSpec
        start local 2 // java.util.List varNames
         0: .line 496
            aload 1 /* argsSpec */
            ifnonnull 2
         1: .line 497
            return
         2: .line 499
      StackMap locals:
      StackMap stack:
            aload 1 /* argsSpec */
            ldc ","
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* tokens */
        start local 3 // java.lang.String[] tokens
         3: .line 500
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: goto 10
         5: .line 501
      StackMap locals: java.lang.String[] int
      StackMap stack:
            aload 3 /* tokens */
            iload 4 /* i */
            aload 3 /* tokens */
            iload 4 /* i */
            aaload
            invokestatic org.springframework.util.StringUtils.trimWhitespace:(Ljava/lang/String;)Ljava/lang/String;
            aastore
         6: .line 502
            aload 0 /* this */
            aload 3 /* tokens */
            iload 4 /* i */
            aaload
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableName:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* varName */
        start local 5 // java.lang.String varName
         7: .line 503
            aload 5 /* varName */
            ifnull 9
         8: .line 504
            aload 2 /* varNames */
            aload 5 /* varName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String varName
         9: .line 500
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 3 /* tokens */
            arraylength
            if_icmplt 5
        end local 4 // int i
        11: .line 507
            return
        end local 3 // java.lang.String[] tokens
        end local 2 // java.util.List varNames
        end local 1 // java.lang.String argsSpec
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   12     1  argsSpec  Ljava/lang/String;
            0   12     2  varNames  Ljava/util/List<Ljava/lang/String;>;
            3   12     3    tokens  [Ljava/lang/String;
            4   11     4         i  I
            7    9     5   varName  Ljava/lang/String;
    Signature: (Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
          Name  Flags
      argsSpec  
      varNames  

  private void maybeBindThisOrTargetOrArgsFromPointcutExpression();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 514
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            iconst_1
            if_icmple 4
         1: .line 515
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Still "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         2: .line 516
            ldc " unbound args at this(),target(),args() binding stage, with no way to determine between them"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 515
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 519
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* varNames */
        start local 1 // java.util.List varNames
         5: .line 520
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.pointcutExpression:Ljava/lang/String;
            ldc " "
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* tokens */
        start local 2 // java.lang.String[] tokens
         6: .line 521
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         7: goto 29
         8: .line 522
      StackMap locals: java.util.List java.lang.String[] int
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "this"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
         9: .line 523
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "this("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 12
        10: .line 524
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "target"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
        11: .line 525
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "target("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 18
        12: .line 526
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* tokens */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 4 /* body */
        start local 4 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        13: .line 527
            iload 3 /* i */
            aload 4 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 3 /* i */
        14: .line 528
            aload 0 /* this */
            aload 4 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableName:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* varName */
        start local 5 // java.lang.String varName
        15: .line 529
            aload 5 /* varName */
            ifnull 28
        16: .line 530
            aload 1 /* varNames */
            aload 5 /* varName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String varName
        end local 4 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        17: .line 532
            goto 28
        18: .line 533
      StackMap locals:
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "args"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 19
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            ldc "args("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 28
        19: .line 534
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* tokens */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 4 /* body */
        start local 4 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        20: .line 535
            iload 3 /* i */
            aload 4 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 3 /* i */
        21: .line 536
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* candidateVarNames */
        start local 5 // java.util.List candidateVarNames
        22: .line 537
            aload 0 /* this */
            aload 4 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            aload 5 /* candidateVarNames */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableNamesFromArgs:(Ljava/lang/String;Ljava/util/List;)V
        23: .line 540
            aload 5 /* candidateVarNames */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 27
      StackMap locals: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer java.util.List java.lang.String[] int org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody java.util.List top java.util.Iterator
      StackMap stack:
        24: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* varName */
        start local 6 // java.lang.String varName
        25: .line 541
            aload 0 /* this */
            aload 6 /* varName */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.alreadyBound:(Ljava/lang/String;)Z
            ifne 27
        26: .line 542
            aload 1 /* varNames */
            aload 6 /* varName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.lang.String varName
        27: .line 540
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        end local 5 // java.util.List candidateVarNames
        end local 4 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        28: .line 521
      StackMap locals: org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer java.util.List java.lang.String[] int
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 3 /* i */
            aload 2 /* tokens */
            arraylength
            if_icmplt 8
        end local 3 // int i
        30: .line 549
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 34
        31: .line 550
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        32: .line 551
            ldc " candidate this(), target() or args() variables but only one unbound argument slot"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        33: .line 550
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
        34: .line 553
      StackMap locals:
      StackMap stack:
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 42
        35: .line 554
            iconst_0
            istore 3 /* j */
        start local 3 // int j
        36: goto 41
        37: .line 555
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* j */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 40
        38: .line 556
            aload 0 /* this */
            iload 3 /* j */
            aload 1 /* varNames */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
        39: .line 557
            goto 42
        40: .line 554
      StackMap locals:
      StackMap stack:
            iinc 3 /* j */ 1
      StackMap locals:
      StackMap stack:
        41: iload 3 /* j */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            arraylength
            if_icmplt 37
        end local 3 // int j
        42: .line 562
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String[] tokens
        end local 1 // java.util.List varNames
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   43     0               this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            5   43     1           varNames  Ljava/util/List<Ljava/lang/String;>;
            6   43     2             tokens  [Ljava/lang/String;
            7   30     3                  i  I
           13   17     4               body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
           15   17     5            varName  Ljava/lang/String;
           20   28     4               body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
           22   28     5  candidateVarNames  Ljava/util/List<Ljava/lang/String;>;
           25   27     6            varName  Ljava/lang/String;
           36   42     3                  j  I

  private void maybeBindReferencePointcutParameter();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 565
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            iconst_1
            if_icmple 4
         1: .line 566
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Still "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.numberOfRemainingUnboundArguments:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         2: .line 567
            ldc " unbound args at reference pointcut binding stage, with no way to determine between them"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 566
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 570
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* varNames */
        start local 1 // java.util.List varNames
         5: .line 571
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.pointcutExpression:Ljava/lang/String;
            ldc " "
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* tokens */
        start local 2 // java.lang.String[] tokens
         6: .line 572
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         7: goto 27
         8: .line 573
      StackMap locals: java.util.List java.lang.String[] int
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            aaload
            astore 4 /* toMatch */
        start local 4 // java.lang.String toMatch
         9: .line 574
            aload 4 /* toMatch */
            ldc "!"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 11
        10: .line 575
            aload 4 /* toMatch */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* toMatch */
        11: .line 577
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* toMatch */
            bipush 40
            invokevirtual java.lang.String.indexOf:(I)I
            istore 5 /* firstParenIndex */
        start local 5 // int firstParenIndex
        12: .line 578
            iload 5 /* firstParenIndex */
            iconst_m1
            if_icmpeq 15
        13: .line 579
            aload 4 /* toMatch */
            iconst_0
            iload 5 /* firstParenIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* toMatch */
        14: .line 580
            goto 20
        15: .line 582
      StackMap locals: int
      StackMap stack:
            aload 2 /* tokens */
            arraylength
            iload 3 /* i */
            iconst_2
            iadd
            if_icmpge 17
        16: .line 584
            goto 26
        17: .line 587
      StackMap locals:
      StackMap stack:
            aload 2 /* tokens */
            iload 3 /* i */
            iconst_1
            iadd
            aaload
            astore 6 /* nextToken */
        start local 6 // java.lang.String nextToken
        18: .line 588
            aload 6 /* nextToken */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 40
            if_icmpeq 20
        19: .line 590
            goto 26
        end local 6 // java.lang.String nextToken
        20: .line 597
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* tokens */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 6 /* body */
        start local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        21: .line 598
            iload 3 /* i */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 3 /* i */
        22: .line 600
            getstatic org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.nonReferencePointcutTokens:Ljava/util/Set;
            aload 4 /* toMatch */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 26
        23: .line 602
            aload 0 /* this */
            aload 6 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableName:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* varName */
        start local 7 // java.lang.String varName
        24: .line 603
            aload 7 /* varName */
            ifnull 26
        25: .line 604
            aload 1 /* varNames */
            aload 7 /* varName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.lang.String varName
        end local 6 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        end local 5 // int firstParenIndex
        end local 4 // java.lang.String toMatch
        26: .line 572
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 3 /* i */
            aload 2 /* tokens */
            arraylength
            if_icmplt 8
        end local 3 // int i
        28: .line 609
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 32
        29: .line 610
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        30: .line 611
            ldc " candidate reference pointcut variables but only one unbound argument slot"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        31: .line 610
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 613
      StackMap locals:
      StackMap stack:
            aload 1 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 40
        33: .line 614
            iconst_0
            istore 3 /* j */
        start local 3 // int j
        34: goto 39
        35: .line 615
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* j */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 38
        36: .line 616
            aload 0 /* this */
            iload 3 /* j */
            aload 1 /* varNames */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
        37: .line 617
            goto 40
        38: .line 614
      StackMap locals:
      StackMap stack:
            iinc 3 /* j */ 1
      StackMap locals:
      StackMap stack:
        39: iload 3 /* j */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            arraylength
            if_icmplt 35
        end local 3 // int j
        40: .line 622
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String[] tokens
        end local 1 // java.util.List varNames
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   41     0             this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            5   41     1         varNames  Ljava/util/List<Ljava/lang/String;>;
            6   41     2           tokens  [Ljava/lang/String;
            7   28     3                i  I
            9   26     4          toMatch  Ljava/lang/String;
           12   26     5  firstParenIndex  I
           18   20     6        nextToken  Ljava/lang/String;
           21   26     6             body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
           24   26     7          varName  Ljava/lang/String;
           34   40     3                j  I

  private org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody getPointcutBody(java.lang.String[], int);
    descriptor: ([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String[] tokens
        start local 2 // int startIndex
         0: .line 629
            iconst_0
            istore 3 /* numTokensConsumed */
        start local 3 // int numTokensConsumed
         1: .line 630
            aload 1 /* tokens */
            iload 2 /* startIndex */
            aaload
            astore 4 /* currentToken */
        start local 4 // java.lang.String currentToken
         2: .line 631
            aload 4 /* currentToken */
            bipush 40
            invokevirtual java.lang.String.indexOf:(I)I
            istore 5 /* bodyStart */
        start local 5 // int bodyStart
         3: .line 632
            aload 4 /* currentToken */
            aload 4 /* currentToken */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            bipush 41
            if_icmpne 5
         4: .line 634
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody
            dup
            iconst_0
            aload 4 /* currentToken */
            iload 5 /* bodyStart */
            iconst_1
            iadd
            aload 4 /* currentToken */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.<init>:(ILjava/lang/String;)V
            areturn
         5: .line 637
      StackMap locals: int java.lang.String int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* sb */
        start local 6 // java.lang.StringBuilder sb
         6: .line 638
            iload 5 /* bodyStart */
            iflt 9
            iload 5 /* bodyStart */
            aload 4 /* currentToken */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            if_icmpeq 9
         7: .line 639
            aload 6 /* sb */
            aload 4 /* currentToken */
            iload 5 /* bodyStart */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 640
            aload 6 /* sb */
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 642
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            iinc 3 /* numTokensConsumed */ 1
        10: .line 643
            iload 2 /* startIndex */
            iload 3 /* numTokensConsumed */
            iadd
            istore 7 /* currentIndex */
        start local 7 // int currentIndex
        11: .line 644
            goto 25
        12: .line 645
      StackMap locals: int
      StackMap stack:
            aload 1 /* tokens */
            iload 7 /* currentIndex */
            aaload
            ldc "("
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        13: .line 646
            iinc 7 /* currentIndex */ 1
        14: .line 647
            goto 25
        15: .line 650
      StackMap locals:
      StackMap stack:
            aload 1 /* tokens */
            iload 7 /* currentIndex */
            aaload
            ldc ")"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 18
        16: .line 651
            aload 6 /* sb */
            aload 1 /* tokens */
            iload 7 /* currentIndex */
            aaload
            iconst_0
            aload 1 /* tokens */
            iload 7 /* currentIndex */
            aaload
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        17: .line 652
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody
            dup
            iload 3 /* numTokensConsumed */
            aload 6 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.<init>:(ILjava/lang/String;)V
            areturn
        18: .line 655
      StackMap locals:
      StackMap stack:
            aload 1 /* tokens */
            iload 7 /* currentIndex */
            aaload
            astore 8 /* toAppend */
        start local 8 // java.lang.String toAppend
        19: .line 656
            aload 8 /* toAppend */
            ldc "("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        20: .line 657
            aload 8 /* toAppend */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* toAppend */
        21: .line 659
      StackMap locals: java.lang.String
      StackMap stack:
            aload 6 /* sb */
            aload 8 /* toAppend */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 660
            aload 6 /* sb */
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        23: .line 661
            iinc 7 /* currentIndex */ 1
        24: .line 662
            iinc 3 /* numTokensConsumed */ 1
        end local 8 // java.lang.String toAppend
        25: .line 644
      StackMap locals:
      StackMap stack:
            iload 7 /* currentIndex */
            aload 1 /* tokens */
            arraylength
            if_icmplt 12
        end local 7 // int currentIndex
        end local 6 // java.lang.StringBuilder sb
        26: .line 668
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody
            dup
            iload 3 /* numTokensConsumed */
            aconst_null
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.<init>:(ILjava/lang/String;)V
            areturn
        end local 5 // int bodyStart
        end local 4 // java.lang.String currentToken
        end local 3 // int numTokensConsumed
        end local 2 // int startIndex
        end local 1 // java.lang.String[] tokens
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   27     0               this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   27     1             tokens  [Ljava/lang/String;
            0   27     2         startIndex  I
            1   27     3  numTokensConsumed  I
            2   27     4       currentToken  Ljava/lang/String;
            3   27     5          bodyStart  I
            6   26     6                 sb  Ljava/lang/StringBuilder;
           11   26     7       currentIndex  I
           19   25     8           toAppend  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      tokens      
      startIndex  

  private void maybeBindPrimitiveArgsFromPointcutExpression();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 675
            aload 0 /* this */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.countNumberOfUnboundPrimitiveArguments:()I
            istore 1 /* numUnboundPrimitives */
        start local 1 // int numUnboundPrimitives
         1: .line 676
            iload 1 /* numUnboundPrimitives */
            iconst_1
            if_icmple 5
         2: .line 677
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* numUnboundPrimitives */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         3: .line 678
            ldc "' unbound primitive arguments with no way to distinguish between them."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 677
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 680
      StackMap locals: int
      StackMap stack:
            iload 1 /* numUnboundPrimitives */
            iconst_1
            if_icmpne 28
         6: .line 682
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* varNames */
        start local 2 // java.util.List varNames
         7: .line 683
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.pointcutExpression:Ljava/lang/String;
            ldc " "
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* tokens */
        start local 3 // java.lang.String[] tokens
         8: .line 684
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         9: goto 15
        10: .line 685
      StackMap locals: java.util.List java.lang.String[] int
      StackMap stack:
            aload 3 /* tokens */
            iload 4 /* i */
            aaload
            ldc "args"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            aload 3 /* tokens */
            iload 4 /* i */
            aaload
            ldc "args("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 14
        11: .line 686
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* tokens */
            iload 4 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.getPointcutBody:([Ljava/lang/String;I)Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
            astore 5 /* body */
        start local 5 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        12: .line 687
            iload 4 /* i */
            aload 5 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.numTokensConsumed:I
            iadd
            istore 4 /* i */
        13: .line 688
            aload 0 /* this */
            aload 5 /* body */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody.text:Ljava/lang/String;
            aload 2 /* varNames */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.maybeExtractVariableNamesFromArgs:(Ljava/lang/String;Ljava/util/List;)V
        end local 5 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody body
        14: .line 684
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 4 /* i */
            aload 3 /* tokens */
            arraylength
            if_icmplt 10
        end local 4 // int i
        16: .line 691
            aload 2 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmple 20
        17: .line 692
            new org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* varNames */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        18: .line 693
            ldc " candidate variable names but only one candidate binding slot when matching primitive args"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 692
            invokespecial org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 695
      StackMap locals:
      StackMap stack:
            aload 2 /* varNames */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 28
        21: .line 697
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        22: goto 27
        23: .line 698
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 4 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 26
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iload 4 /* i */
            aaload
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 26
        24: .line 699
            aload 0 /* this */
            iload 4 /* i */
            aload 2 /* varNames */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
        25: .line 700
            goto 28
        26: .line 697
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 4 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            if_icmplt 23
        end local 4 // int i
        end local 3 // java.lang.String[] tokens
        end local 2 // java.util.List varNames
        28: .line 705
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int numUnboundPrimitives
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   29     0                  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            1   29     1  numUnboundPrimitives  I
            7   28     2              varNames  Ljava/util/List<Ljava/lang/String;>;
            8   28     3                tokens  [Ljava/lang/String;
            9   16     4                     i  I
           12   14     5                  body  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer$PointcutBody;
           22   28     4                     i  I

  private boolean isUnbound(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // int i
         0: .line 712
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            ifnonnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int i
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    2     1     i  I
    MethodParameters:
      Name  Flags
      i     

  private boolean alreadyBound(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.String varName
         0: .line 716
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 5
         2: .line 717
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifne 4
            aload 1 /* varName */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            iload 2 /* i */
            aaload
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 718
            iconst_1
            ireturn
         4: .line 716
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.parameterNameBindings:[Ljava/lang/String;
            arraylength
            if_icmplt 2
        end local 2 // int i
         6: .line 721
            iconst_0
            ireturn
        end local 1 // java.lang.String varName
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    7     1  varName  Ljava/lang/String;
            1    6     2        i  I
    MethodParameters:
         Name  Flags
      varName  

  private boolean isSubtypeOf(java.lang.Class<?>, );
    descriptor: (Ljava/lang/Class;I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.Class supertype
        start local 2 // int argumentNumber
         0: .line 729
            aload 1 /* supertype */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iload 2 /* argumentNumber */
            aaload
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ireturn
        end local 2 // int argumentNumber
        end local 1 // java.lang.Class supertype
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0    1     1       supertype  Ljava/lang/Class<*>;
            0    1     2  argumentNumber  I
    Signature: (Ljava/lang/Class<*>;I)Z
    MethodParameters:
                Name  Flags
      supertype       
      argumentNumber  

  private int countNumberOfUnboundAnnotationArguments();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 733
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 734
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 735
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 5
            aload 0 /* this */
            ldc Ljava/lang/annotation/Annotation;
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isSubtypeOf:(Ljava/lang/Class;I)Z
            ifeq 5
         4: .line 736
            iinc 1 /* count */ 1
         5: .line 734
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            if_icmplt 3
        end local 2 // int i
         7: .line 739
            iload 1 /* count */
            ireturn
        end local 1 // int count
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            1    8     1  count  I
            2    7     2      i  I

  private int countNumberOfUnboundPrimitiveArguments();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
         0: .line 743
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 744
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 745
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 5
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            iload 2 /* i */
            aaload
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 5
         4: .line 746
            iinc 1 /* count */ 1
         5: .line 744
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            if_icmplt 3
        end local 2 // int i
         7: .line 749
            iload 1 /* count */
            ireturn
        end local 1 // int count
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            1    8     1  count  I
            2    7     2      i  I

  private void findAndBind(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
        start local 1 // java.lang.Class argumentType
        start local 2 // java.lang.String varName
         0: .line 757
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         1: goto 6
         2: .line 758
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isUnbound:(I)Z
            ifeq 5
            aload 0 /* this */
            aload 1 /* argumentType */
            iload 3 /* i */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.isSubtypeOf:(Ljava/lang/Class;I)Z
            ifeq 5
         3: .line 759
            aload 0 /* this */
            iload 3 /* i */
            aload 2 /* varName */
            invokevirtual org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.bindParameterName:(ILjava/lang/String;)V
         4: .line 760
            return
         5: .line 757
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            aload 0 /* this */
            getfield org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer.argumentTypes:[Ljava/lang/Class;
            arraylength
            if_icmplt 2
        end local 3 // int i
         7: .line 763
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Expected to find an unbound argument of type '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 764
            aload 1 /* argumentType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 763
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String varName
        end local 1 // java.lang.Class argumentType
        end local 0 // org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lorg/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer;
            0   10     1  argumentType  Ljava/lang/Class<*>;
            0   10     2       varName  Ljava/lang/String;
            1    7     3             i  I
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)V
    MethodParameters:
              Name  Flags
      argumentType  
      varName       
}
SourceFile: "AspectJAdviceParameterNameDiscoverer.java"
NestMembers:
  org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException  org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody
InnerClasses:
  public abstract StaticPart = org.aspectj.lang.JoinPoint$StaticPart of org.aspectj.lang.JoinPoint
  public AmbiguousBindingException = org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$AmbiguousBindingException of org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer
  private PointcutBody = org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer$PointcutBody of org.springframework.aop.aspectj.AspectJAdviceParameterNameDiscoverer