public class org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl implements org.hibernate.bytecode.spi.BytecodeProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl
  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=2, locals=0, args_size=0
         0: .line 52
            ldc Lorg/hibernate/internal/CoreMessageLogger;
         1: .line 53
            ldc Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         2: .line 51
            invokestatic org.jboss.logging.Logger.getMessageLogger:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
            checkcast org.hibernate.internal.CoreMessageLogger
            putstatic org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.LOG:Lorg/hibernate/internal/CoreMessageLogger;
         3: .line 54
            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.bytecode.internal.javassist.BytecodeProviderImpl this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;

  public org.hibernate.bytecode.spi.ProxyFactoryFactory getProxyFactoryFactory();
    descriptor: ()Lorg/hibernate/bytecode/spi/ProxyFactoryFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
         0: .line 58
            new org.hibernate.bytecode.internal.javassist.ProxyFactoryFactoryImpl
            dup
            invokespecial org.hibernate.bytecode.internal.javassist.ProxyFactoryFactoryImpl.<init>:()V
            areturn
        end local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;

  public org.hibernate.bytecode.spi.ReflectionOptimizer getReflectionOptimizer(java.lang.Class, java.lang.String[], java.lang.String[], java.lang.Class[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/Class;)Lorg/hibernate/bytecode/spi/ReflectionOptimizer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.String[] getterNames
        start local 3 // java.lang.String[] setterNames
        start local 4 // java.lang.Class[] types
         0: .line 70
            aload 1 /* clazz */
            invokestatic org.hibernate.bytecode.internal.javassist.FastClass.create:(Ljava/lang/Class;)Lorg/hibernate/bytecode/internal/javassist/FastClass;
            astore 5 /* fastClass */
        start local 5 // org.hibernate.bytecode.internal.javassist.FastClass fastClass
         1: .line 71
            aload 1 /* clazz */
            aload 2 /* getterNames */
            aload 3 /* setterNames */
            aload 4 /* types */
            invokestatic org.hibernate.bytecode.internal.javassist.BulkAccessor.create:(Ljava/lang/Class;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/Class;)Lorg/hibernate/bytecode/internal/javassist/BulkAccessor;
            astore 6 /* bulkAccessor */
        start local 6 // org.hibernate.bytecode.internal.javassist.BulkAccessor bulkAccessor
         2: .line 72
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 31
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isAbstract:(I)Z
            ifne 31
         3: .line 73
            aload 5 /* fastClass */
            ifnonnull 6
         4: .line 74
            aconst_null
            astore 6 /* bulkAccessor */
         5: .line 75
            goto 31
         6: .line 78
      StackMap locals: org.hibernate.bytecode.internal.javassist.FastClass org.hibernate.bytecode.internal.javassist.BulkAccessor
      StackMap stack:
            aload 5 /* fastClass */
            invokevirtual org.hibernate.bytecode.internal.javassist.FastClass.newInstance:()Ljava/lang/Object;
            astore 7 /* instance */
        start local 7 // java.lang.Object instance
         7: .line 79
            aload 6 /* bulkAccessor */
            aload 7 /* instance */
            aload 6 /* bulkAccessor */
            aload 7 /* instance */
            invokevirtual org.hibernate.bytecode.internal.javassist.BulkAccessor.getPropertyValues:(Ljava/lang/Object;)[Ljava/lang/Object;
            invokevirtual org.hibernate.bytecode.internal.javassist.BulkAccessor.setPropertyValues:(Ljava/lang/Object;[Ljava/lang/Object;)V
        end local 7 // java.lang.Object instance
         8: .line 82
            goto 31
        end local 6 // org.hibernate.bytecode.internal.javassist.BulkAccessor bulkAccessor
        end local 5 // org.hibernate.bytecode.internal.javassist.FastClass fastClass
         9: .line 83
      StackMap locals: org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl java.lang.Class java.lang.String[] java.lang.String[] java.lang.Class[]
      StackMap stack: java.lang.Throwable
            astore 7 /* t */
        start local 7 // java.lang.Throwable t
        10: .line 84
            aconst_null
            astore 5 /* fastClass */
        start local 5 // org.hibernate.bytecode.internal.javassist.FastClass fastClass
        11: .line 85
            aconst_null
            astore 6 /* bulkAccessor */
        start local 6 // org.hibernate.bytecode.internal.javassist.BulkAccessor bulkAccessor
        12: .line 86
            getstatic org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            invokeinterface org.hibernate.internal.CoreMessageLogger.isDebugEnabled:()Z
            ifeq 31
        13: .line 87
            iconst_0
            istore 8 /* index */
        start local 8 // int index
        14: .line 88
            aload 7 /* t */
            instanceof org.hibernate.bytecode.internal.javassist.BulkAccessorException
            ifeq 16
        15: .line 89
            aload 7 /* t */
            checkcast org.hibernate.bytecode.internal.javassist.BulkAccessorException
            invokevirtual org.hibernate.bytecode.internal.javassist.BulkAccessorException.getIndex:()I
            istore 8 /* index */
        16: .line 91
      StackMap locals: org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl java.lang.Class java.lang.String[] java.lang.String[] java.lang.Class[] org.hibernate.bytecode.internal.javassist.FastClass org.hibernate.bytecode.internal.javassist.BulkAccessor java.lang.Throwable int
      StackMap stack:
            iload 8 /* index */
            iflt 25
        17: .line 92
            getstatic org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.LOG:Lorg/hibernate/internal/CoreMessageLogger;
        18: .line 93
            ldc "Reflection optimizer disabled for %s [%s: %s (property %s)]"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        19: .line 94
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
        20: .line 95
            aload 7 /* t */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic org.hibernate.internal.util.StringHelper.unqualify:(Ljava/lang/String;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        21: .line 96
            aload 7 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            aastore
            dup
            iconst_3
        22: .line 97
            aload 3 /* setterNames */
            iload 8 /* index */
            aaload
            aastore
        23: .line 92
            invokeinterface org.hibernate.internal.CoreMessageLogger.debugf:(Ljava/lang/String;[Ljava/lang/Object;)V
        24: .line 99
            goto 31
        25: .line 101
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.LOG:Lorg/hibernate/internal/CoreMessageLogger;
        26: .line 102
            ldc "Reflection optimizer disabled for %s [%s: %s]"
        27: .line 103
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        28: .line 104
            aload 7 /* t */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic org.hibernate.internal.util.StringHelper.unqualify:(Ljava/lang/String;)Ljava/lang/String;
        29: .line 105
            aload 7 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
        30: .line 101
            invokeinterface org.hibernate.internal.CoreMessageLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 8 // int index
        end local 7 // java.lang.Throwable t
        31: .line 111
      StackMap locals:
      StackMap stack:
            aload 5 /* fastClass */
            ifnull 36
            aload 6 /* bulkAccessor */
            ifnull 36
        32: .line 112
            new org.hibernate.bytecode.internal.javassist.ReflectionOptimizerImpl
            dup
        33: .line 113
            new org.hibernate.bytecode.internal.javassist.InstantiationOptimizerAdapter
            dup
            aload 5 /* fastClass */
            invokespecial org.hibernate.bytecode.internal.javassist.InstantiationOptimizerAdapter.<init>:(Lorg/hibernate/bytecode/internal/javassist/FastClass;)V
        34: .line 114
            new org.hibernate.bytecode.internal.javassist.AccessOptimizerAdapter
            dup
            aload 6 /* bulkAccessor */
            aload 1 /* clazz */
            invokespecial org.hibernate.bytecode.internal.javassist.AccessOptimizerAdapter.<init>:(Lorg/hibernate/bytecode/internal/javassist/BulkAccessor;Ljava/lang/Class;)V
        35: .line 112
            invokespecial org.hibernate.bytecode.internal.javassist.ReflectionOptimizerImpl.<init>:(Lorg/hibernate/bytecode/spi/ReflectionOptimizer$InstantiationOptimizer;Lorg/hibernate/bytecode/spi/ReflectionOptimizer$AccessOptimizer;)V
            areturn
        36: .line 118
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 6 // org.hibernate.bytecode.internal.javassist.BulkAccessor bulkAccessor
        end local 5 // org.hibernate.bytecode.internal.javassist.FastClass fastClass
        end local 4 // java.lang.Class[] types
        end local 3 // java.lang.String[] setterNames
        end local 2 // java.lang.String[] getterNames
        end local 1 // java.lang.Class clazz
        end local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   37     0          this  Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;
            0   37     1         clazz  Ljava/lang/Class;
            0   37     2   getterNames  [Ljava/lang/String;
            0   37     3   setterNames  [Ljava/lang/String;
            0   37     4         types  [Ljava/lang/Class;
            1    9     5     fastClass  Lorg/hibernate/bytecode/internal/javassist/FastClass;
           11   37     5     fastClass  Lorg/hibernate/bytecode/internal/javassist/FastClass;
            2    9     6  bulkAccessor  Lorg/hibernate/bytecode/internal/javassist/BulkAccessor;
           12   37     6  bulkAccessor  Lorg/hibernate/bytecode/internal/javassist/BulkAccessor;
            7    8     7      instance  Ljava/lang/Object;
           10   31     7             t  Ljava/lang/Throwable;
           14   31     8         index  I
      Exception table:
        from    to  target  type
           0     8       9  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      clazz        
      getterNames  
      setterNames  
      types        

  public org.hibernate.bytecode.spi.ClassTransformer getTransformer(org.hibernate.bytecode.buildtime.spi.ClassFilter, org.hibernate.bytecode.buildtime.spi.FieldFilter);
    descriptor: (Lorg/hibernate/bytecode/buildtime/spi/ClassFilter;Lorg/hibernate/bytecode/buildtime/spi/FieldFilter;)Lorg/hibernate/bytecode/spi/ClassTransformer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
        start local 1 // org.hibernate.bytecode.buildtime.spi.ClassFilter classFilter
        start local 2 // org.hibernate.bytecode.buildtime.spi.FieldFilter fieldFilter
         0: .line 123
            new org.hibernate.bytecode.internal.javassist.JavassistClassTransformer
            dup
            aload 1 /* classFilter */
            aload 2 /* fieldFilter */
            invokespecial org.hibernate.bytecode.internal.javassist.JavassistClassTransformer.<init>:(Lorg/hibernate/bytecode/buildtime/spi/ClassFilter;Lorg/hibernate/bytecode/buildtime/spi/FieldFilter;)V
            areturn
        end local 2 // org.hibernate.bytecode.buildtime.spi.FieldFilter fieldFilter
        end local 1 // org.hibernate.bytecode.buildtime.spi.ClassFilter classFilter
        end local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;
            0    1     1  classFilter  Lorg/hibernate/bytecode/buildtime/spi/ClassFilter;
            0    1     2  fieldFilter  Lorg/hibernate/bytecode/buildtime/spi/FieldFilter;
    MethodParameters:
             Name  Flags
      classFilter  
      fieldFilter  

  public org.hibernate.bytecode.spi.EntityInstrumentationMetadata getEntityInstrumentationMetadata(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lorg/hibernate/bytecode/spi/EntityInstrumentationMetadata;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
        start local 1 // java.lang.Class entityClass
         0: .line 128
            new org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl
            dup
            aload 0 /* this */
            aload 1 /* entityClass */
            invokespecial org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl.<init>:(Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;Ljava/lang/Class;)V
            areturn
        end local 1 // java.lang.Class entityClass
        end local 0 // org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/hibernate/bytecode/internal/javassist/BytecodeProviderImpl;
            0    1     1  entityClass  Ljava/lang/Class;
    MethodParameters:
             Name  Flags
      entityClass  
}
SourceFile: "BytecodeProviderImpl.java"
NestMembers:
  org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl
InnerClasses:
  private EntityInstrumentationMetadataImpl = org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl$EntityInstrumentationMetadataImpl of org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl
  public abstract AccessOptimizer = org.hibernate.bytecode.spi.ReflectionOptimizer$AccessOptimizer of org.hibernate.bytecode.spi.ReflectionOptimizer
  public abstract InstantiationOptimizer = org.hibernate.bytecode.spi.ReflectionOptimizer$InstantiationOptimizer of org.hibernate.bytecode.spi.ReflectionOptimizer