public class org.hibernate.property.BasicPropertyAccessor implements org.hibernate.property.PropertyAccessor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.property.BasicPropertyAccessor
  super_class: java.lang.Object
{
  private static final org.hibernate.internal.CoreMessageLogger LOG;
    descriptor: Lorg/hibernate/internal/CoreMessageLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 51
            ldc Lorg/hibernate/property/BasicPropertyAccessor;
            invokestatic org.hibernate.internal.CoreLogging.messageLogger:(Ljava/lang/Class;)Lorg/hibernate/internal/CoreMessageLogger;
            putstatic org.hibernate.property.BasicPropertyAccessor.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.property.BasicPropertyAccessor this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.hibernate.property.BasicPropertyAccessor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/property/BasicPropertyAccessor;

  public org.hibernate.property.Setter getSetter(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.hibernate.property.BasicPropertyAccessor this
        start local 1 // java.lang.Class theClass
        start local 2 // java.lang.String propertyName
         0: .line 240
            aload 1 /* theClass */
            aload 2 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.createSetter:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Setter;
            areturn
        end local 2 // java.lang.String propertyName
        end local 1 // java.lang.Class theClass
        end local 0 // org.hibernate.property.BasicPropertyAccessor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/hibernate/property/BasicPropertyAccessor;
            0    1     1      theClass  Ljava/lang/Class;
            0    1     2  propertyName  Ljava/lang/String;
    Exceptions:
      throws org.hibernate.PropertyNotFoundException
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  private static org.hibernate.property.Setter createSetter(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Setter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 244
            aload 0 /* theClass */
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getSetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
            astore 2 /* result */
        start local 2 // org.hibernate.property.BasicPropertyAccessor$BasicSetter result
         1: .line 245
            aload 2 /* result */
            ifnonnull 9
         2: .line 246
            new org.hibernate.PropertyNotFoundException
            dup
         3: .line 247
            new java.lang.StringBuilder
            dup
            ldc "Could not find a setter for property "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 248
            aload 1 /* propertyName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 249
            ldc " in class "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 250
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 247
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 246
            invokespecial org.hibernate.PropertyNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 253
      StackMap locals: org.hibernate.property.BasicPropertyAccessor$BasicSetter
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // org.hibernate.property.BasicPropertyAccessor$BasicSetter result
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0      theClass  Ljava/lang/Class;
            0   10     1  propertyName  Ljava/lang/String;
            1   10     2        result  Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
    Exceptions:
      throws org.hibernate.PropertyNotFoundException
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  private static org.hibernate.property.BasicPropertyAccessor$BasicSetter getSetterOrNull(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 258
            aload 0 /* theClass */
            ldc Ljava/lang/Object;
            if_acmpeq 1
            aload 0 /* theClass */
            ifnonnull 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
            areturn
         2: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* theClass */
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.setterMethod:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         3: .line 262
            aload 2 /* method */
            ifnull 6
         4: .line 263
            aload 2 /* method */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
         5: .line 264
            new org.hibernate.property.BasicPropertyAccessor$BasicSetter
            dup
            aload 0 /* theClass */
            aload 2 /* method */
            aload 1 /* propertyName */
            invokespecial org.hibernate.property.BasicPropertyAccessor$BasicSetter.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/String;)V
            areturn
         6: .line 267
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getSetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
            astore 3 /* setter */
        start local 3 // org.hibernate.property.BasicPropertyAccessor$BasicSetter setter
         7: .line 268
            aload 3 /* setter */
            ifnonnull 14
         8: .line 269
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            astore 4 /* interfaces */
        start local 4 // java.lang.Class[] interfaces
         9: .line 270
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        10: goto 13
        11: .line 271
      StackMap locals: org.hibernate.property.BasicPropertyAccessor$BasicSetter java.lang.Class[] int
      StackMap stack:
            aload 4 /* interfaces */
            iload 5 /* i */
            aaload
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getSetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
            astore 3 /* setter */
        12: .line 270
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: aload 3 /* setter */
            ifnonnull 14
            iload 5 /* i */
            aload 4 /* interfaces */
            arraylength
            if_icmplt 11
        end local 5 // int i
        end local 4 // java.lang.Class[] interfaces
        14: .line 274
      StackMap locals:
      StackMap stack:
            aload 3 /* setter */
            areturn
        end local 3 // org.hibernate.property.BasicPropertyAccessor$BasicSetter setter
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0      theClass  Ljava/lang/Class;
            0   15     1  propertyName  Ljava/lang/String;
            3   15     2        method  Ljava/lang/reflect/Method;
            7   15     3        setter  Lorg/hibernate/property/BasicPropertyAccessor$BasicSetter;
            9   14     4    interfaces  [Ljava/lang/Class;
           10   14     5             i  I
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  private static java.lang.reflect.Method setterMethod(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=13, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 280
            aload 0 /* theClass */
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getGetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            astore 2 /* getter */
        start local 2 // org.hibernate.property.BasicPropertyAccessor$BasicGetter getter
         1: .line 281
            aload 2 /* getter */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: org.hibernate.property.BasicPropertyAccessor$BasicGetter
      StackMap stack:
         2: aload 2 /* getter */
            invokevirtual org.hibernate.property.BasicPropertyAccessor$BasicGetter.getReturnType:()Ljava/lang/Class;
      StackMap locals:
      StackMap stack: java.lang.Class
         3: astore 3 /* returnType */
        start local 3 // java.lang.Class returnType
         4: .line 283
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
            astore 4 /* methods */
        start local 4 // java.lang.reflect.Method[] methods
         5: .line 284
            aconst_null
            astore 5 /* potentialSetter */
        start local 5 // java.lang.reflect.Method potentialSetter
         6: .line 285
            aload 4 /* methods */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 17
      StackMap locals: java.lang.Class java.lang.String org.hibernate.property.BasicPropertyAccessor$BasicGetter java.lang.Class java.lang.reflect.Method[] java.lang.reflect.Method top int int java.lang.reflect.Method[]
      StackMap stack:
         7: aload 9
            iload 7
            aaload
            astore 6 /* method */
        start local 6 // java.lang.reflect.Method method
         8: .line 286
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            astore 10 /* methodName */
        start local 10 // java.lang.String methodName
         9: .line 288
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            iconst_1
            if_icmpne 16
            aload 10 /* methodName */
            ldc "set"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 16
        10: .line 289
            aload 10 /* methodName */
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.beans.Introspector.decapitalize:(Ljava/lang/String;)Ljava/lang/String;
            astore 11 /* testStdMethod */
        start local 11 // java.lang.String testStdMethod
        11: .line 290
            aload 10 /* methodName */
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 12 /* testOldMethod */
        start local 12 // java.lang.String testOldMethod
        12: .line 291
            aload 11 /* testStdMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            aload 12 /* testOldMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        13: .line 292
      StackMap locals: java.lang.Class java.lang.String org.hibernate.property.BasicPropertyAccessor$BasicGetter java.lang.Class java.lang.reflect.Method[] java.lang.reflect.Method java.lang.reflect.Method int int java.lang.reflect.Method[] java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 6 /* method */
            astore 5 /* potentialSetter */
        14: .line 293
            aload 3 /* returnType */
            ifnull 15
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            iconst_0
            aaload
            aload 3 /* returnType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 16
        15: .line 294
      StackMap locals:
      StackMap stack:
            aload 5 /* potentialSetter */
            areturn
        end local 12 // java.lang.String testOldMethod
        end local 11 // java.lang.String testStdMethod
        end local 10 // java.lang.String methodName
        end local 6 // java.lang.reflect.Method method
        16: .line 285
      StackMap locals: java.lang.Class java.lang.String org.hibernate.property.BasicPropertyAccessor$BasicGetter java.lang.Class java.lang.reflect.Method[] java.lang.reflect.Method top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        17: iload 7
            iload 8
            if_icmplt 7
        18: .line 299
            aload 5 /* potentialSetter */
            areturn
        end local 5 // java.lang.reflect.Method potentialSetter
        end local 4 // java.lang.reflect.Method[] methods
        end local 3 // java.lang.Class returnType
        end local 2 // org.hibernate.property.BasicPropertyAccessor$BasicGetter getter
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0         theClass  Ljava/lang/Class;
            0   19     1     propertyName  Ljava/lang/String;
            1   19     2           getter  Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            4   19     3       returnType  Ljava/lang/Class;
            5   19     4          methods  [Ljava/lang/reflect/Method;
            6   19     5  potentialSetter  Ljava/lang/reflect/Method;
            8   16     6           method  Ljava/lang/reflect/Method;
            9   16    10       methodName  Ljava/lang/String;
           11   16    11    testStdMethod  Ljava/lang/String;
           12   16    12    testOldMethod  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  public org.hibernate.property.Getter getGetter(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Getter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.hibernate.property.BasicPropertyAccessor this
        start local 1 // java.lang.Class theClass
        start local 2 // java.lang.String propertyName
         0: .line 304
            aload 1 /* theClass */
            aload 2 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.createGetter:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Getter;
            areturn
        end local 2 // java.lang.String propertyName
        end local 1 // java.lang.Class theClass
        end local 0 // org.hibernate.property.BasicPropertyAccessor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/hibernate/property/BasicPropertyAccessor;
            0    1     1      theClass  Ljava/lang/Class;
            0    1     2  propertyName  Ljava/lang/String;
    Exceptions:
      throws org.hibernate.PropertyNotFoundException
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  public static org.hibernate.property.Getter createGetter(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/Getter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 308
            aload 0 /* theClass */
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getGetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            astore 2 /* result */
        start local 2 // org.hibernate.property.BasicPropertyAccessor$BasicGetter result
         1: .line 309
            aload 2 /* result */
            ifnonnull 9
         2: .line 310
            new org.hibernate.PropertyNotFoundException
            dup
         3: .line 311
            new java.lang.StringBuilder
            dup
            ldc "Could not find a getter for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 312
            aload 1 /* propertyName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 313
            ldc " in class "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 314
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 311
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 310
            invokespecial org.hibernate.PropertyNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 317
      StackMap locals: org.hibernate.property.BasicPropertyAccessor$BasicGetter
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // org.hibernate.property.BasicPropertyAccessor$BasicGetter result
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0      theClass  Ljava/lang/Class;
            0   10     1  propertyName  Ljava/lang/String;
            1   10     2        result  Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
    Exceptions:
      throws org.hibernate.PropertyNotFoundException
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  private static org.hibernate.property.BasicPropertyAccessor$BasicGetter getGetterOrNull(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 321
            aload 0 /* theClass */
            ldc Ljava/lang/Object;
            if_acmpeq 1
            aload 0 /* theClass */
            ifnonnull 2
         1: .line 322
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* theClass */
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getterMethod:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         3: .line 327
            aload 2 /* method */
            ifnull 6
         4: .line 328
            aload 2 /* method */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
         5: .line 329
            new org.hibernate.property.BasicPropertyAccessor$BasicGetter
            dup
            aload 0 /* theClass */
            aload 2 /* method */
            aload 1 /* propertyName */
            invokespecial org.hibernate.property.BasicPropertyAccessor$BasicGetter.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/String;)V
            areturn
         6: .line 332
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getGetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            astore 3 /* getter */
        start local 3 // org.hibernate.property.BasicPropertyAccessor$BasicGetter getter
         7: .line 333
            aload 3 /* getter */
            ifnonnull 14
         8: .line 334
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            astore 4 /* interfaces */
        start local 4 // java.lang.Class[] interfaces
         9: .line 335
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        10: goto 13
        11: .line 336
      StackMap locals: org.hibernate.property.BasicPropertyAccessor$BasicGetter java.lang.Class[] int
      StackMap stack:
            aload 4 /* interfaces */
            iload 5 /* i */
            aaload
            aload 1 /* propertyName */
            invokestatic org.hibernate.property.BasicPropertyAccessor.getGetterOrNull:(Ljava/lang/Class;Ljava/lang/String;)Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            astore 3 /* getter */
        12: .line 335
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: aload 3 /* getter */
            ifnonnull 14
            iload 5 /* i */
            aload 4 /* interfaces */
            arraylength
            if_icmplt 11
        end local 5 // int i
        end local 4 // java.lang.Class[] interfaces
        14: .line 339
      StackMap locals:
      StackMap stack:
            aload 3 /* getter */
            areturn
        end local 3 // org.hibernate.property.BasicPropertyAccessor$BasicGetter getter
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0      theClass  Ljava/lang/Class;
            0   15     1  propertyName  Ljava/lang/String;
            3   15     2        method  Ljava/lang/reflect/Method;
            7   15     3        getter  Lorg/hibernate/property/BasicPropertyAccessor$BasicGetter;
            9   14     4    interfaces  [Ljava/lang/Class;
           10   14     5             i  I
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  

  private static java.lang.reflect.Method getterMethod(java.lang.Class, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=10, args_size=2
        start local 0 // java.lang.Class theClass
        start local 1 // java.lang.String propertyName
         0: .line 344
            aload 0 /* theClass */
            invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
            astore 2 /* methods */
        start local 2 // java.lang.reflect.Method[] methods
         1: .line 345
            aload 2 /* methods */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 19
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* method */
        start local 3 // java.lang.reflect.Method method
         3: .line 347
            aload 3 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifeq 5
         4: .line 348
            goto 18
         5: .line 351
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method[] java.lang.reflect.Method int int java.lang.reflect.Method[]
      StackMap stack:
            aload 3 /* method */
            invokevirtual java.lang.reflect.Method.isBridge:()Z
            ifeq 7
         6: .line 352
            goto 18
         7: .line 355
      StackMap locals:
      StackMap stack:
            aload 3 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            astore 7 /* methodName */
        start local 7 // java.lang.String methodName
         8: .line 358
            aload 7 /* methodName */
            ldc "get"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 13
         9: .line 359
            aload 7 /* methodName */
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.beans.Introspector.decapitalize:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* testStdMethod */
        start local 8 // java.lang.String testStdMethod
        10: .line 360
            aload 7 /* methodName */
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 9 /* testOldMethod */
        start local 9 // java.lang.String testOldMethod
        11: .line 361
            aload 8 /* testStdMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            aload 9 /* testOldMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 362
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* method */
            areturn
        end local 9 // java.lang.String testOldMethod
        end local 8 // java.lang.String testStdMethod
        13: .line 367
      StackMap locals:
      StackMap stack:
            aload 7 /* methodName */
            ldc "is"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 18
        14: .line 368
            aload 7 /* methodName */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.beans.Introspector.decapitalize:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* testStdMethod */
        start local 8 // java.lang.String testStdMethod
        15: .line 369
            aload 7 /* methodName */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 9 /* testOldMethod */
        start local 9 // java.lang.String testOldMethod
        16: .line 370
            aload 8 /* testStdMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 17
            aload 9 /* testOldMethod */
            aload 1 /* propertyName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        17: .line 371
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* method */
            areturn
        end local 9 // java.lang.String testOldMethod
        end local 8 // java.lang.String testStdMethod
        end local 7 // java.lang.String methodName
        end local 3 // java.lang.reflect.Method method
        18: .line 345
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        19: iload 4
            iload 5
            if_icmplt 2
        20: .line 376
            aconst_null
            areturn
        end local 2 // java.lang.reflect.Method[] methods
        end local 1 // java.lang.String propertyName
        end local 0 // java.lang.Class theClass
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0       theClass  Ljava/lang/Class;
            0   21     1   propertyName  Ljava/lang/String;
            1   21     2        methods  [Ljava/lang/reflect/Method;
            3   18     3         method  Ljava/lang/reflect/Method;
            8   18     7     methodName  Ljava/lang/String;
           10   13     8  testStdMethod  Ljava/lang/String;
           11   13     9  testOldMethod  Ljava/lang/String;
           15   18     8  testStdMethod  Ljava/lang/String;
           16   18     9  testOldMethod  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      theClass      
      propertyName  
}
SourceFile: "BasicPropertyAccessor.java"
NestMembers:
  org.hibernate.property.BasicPropertyAccessor$BasicGetter  org.hibernate.property.BasicPropertyAccessor$BasicSetter
InnerClasses:
  public final BasicGetter = org.hibernate.property.BasicPropertyAccessor$BasicGetter of org.hibernate.property.BasicPropertyAccessor
  public final BasicSetter = org.hibernate.property.BasicPropertyAccessor$BasicSetter of org.hibernate.property.BasicPropertyAccessor