public class net.sf.cglib.core.KeyFactory$Generator extends net.sf.cglib.core.AbstractClassGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: net.sf.cglib.core.KeyFactory$Generator
  super_class: net.sf.cglib.core.AbstractClassGenerator
{
  private static final net.sf.cglib.core.AbstractClassGenerator$Source SOURCE;
    descriptor: Lnet/sf/cglib/core/AbstractClassGenerator$Source;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Class[] KNOWN_CUSTOMIZER_TYPES;
    descriptor: [Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.lang.Class keyInterface;
    descriptor: Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE

  private net.sf.cglib.core.internal.CustomizerRegistry customizers;
    descriptor: Lnet/sf/cglib/core/internal/CustomizerRegistry;
    flags: (0x0002) ACC_PRIVATE

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 178
            new net.sf.cglib.core.AbstractClassGenerator$Source
            dup
            ldc Lnet/sf/cglib/core/KeyFactory;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial net.sf.cglib.core.AbstractClassGenerator$Source.<init>:(Ljava/lang/String;)V
            putstatic net.sf.cglib.core.KeyFactory$Generator.SOURCE:Lnet/sf/cglib/core/AbstractClassGenerator$Source;
         1: .line 179
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lnet/sf/cglib/core/Customizer;
            aastore
            dup
            iconst_1
            ldc Lnet/sf/cglib/core/FieldTypeCustomizer;
            aastore
            putstatic net.sf.cglib.core.KeyFactory$Generator.KNOWN_CUSTOMIZER_TYPES:[Ljava/lang/Class;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
         0: .line 188
            aload 0 /* this */
            getstatic net.sf.cglib.core.KeyFactory$Generator.SOURCE:Lnet/sf/cglib/core/AbstractClassGenerator$Source;
            invokespecial net.sf.cglib.core.AbstractClassGenerator.<init>:(Lnet/sf/cglib/core/AbstractClassGenerator$Source;)V
         1: .line 183
            aload 0 /* this */
            new net.sf.cglib.core.internal.CustomizerRegistry
            dup
            getstatic net.sf.cglib.core.KeyFactory$Generator.KNOWN_CUSTOMIZER_TYPES:[Ljava/lang/Class;
            invokespecial net.sf.cglib.core.internal.CustomizerRegistry.<init>:([Ljava/lang/Class;)V
            putfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
         2: .line 189
            return
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;

  protected java.lang.ClassLoader getDefaultClassLoader();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
         0: .line 192
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            areturn
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;

  protected java.security.ProtectionDomain getProtectionDomain();
    descriptor: ()Ljava/security/ProtectionDomain;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
         0: .line 196
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokestatic net.sf.cglib.core.ReflectUtils.getProtectionDomain:(Ljava/lang/Class;)Ljava/security/ProtectionDomain;
            areturn
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;

  public void setCustomizer(net.sf.cglib.core.Customizer);
    descriptor: (Lnet/sf/cglib/core/Customizer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // net.sf.cglib.core.Customizer customizer
         0: .line 204
            aload 0 /* this */
            aload 1 /* customizer */
            invokestatic net.sf.cglib.core.internal.CustomizerRegistry.singleton:(Lnet/sf/cglib/core/Customizer;)Lnet/sf/cglib/core/internal/CustomizerRegistry;
            putfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
         1: .line 205
            return
        end local 1 // net.sf.cglib.core.Customizer customizer
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    2     1  customizer  Lnet/sf/cglib/core/Customizer;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
            Name  Flags
      customizer  

  public void addCustomizer(net.sf.cglib.core.KeyFactoryCustomizer);
    descriptor: (Lnet/sf/cglib/core/KeyFactoryCustomizer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // net.sf.cglib.core.KeyFactoryCustomizer customizer
         0: .line 208
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
            aload 1 /* customizer */
            invokevirtual net.sf.cglib.core.internal.CustomizerRegistry.add:(Lnet/sf/cglib/core/KeyFactoryCustomizer;)V
         1: .line 209
            return
        end local 1 // net.sf.cglib.core.KeyFactoryCustomizer customizer
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    2     1  customizer  Lnet/sf/cglib/core/KeyFactoryCustomizer;
    MethodParameters:
            Name  Flags
      customizer  

  public <T> java.util.List<T> getCustomizers(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // java.lang.Class klass
         0: .line 212
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
            aload 1 /* klass */
            invokevirtual net.sf.cglib.core.internal.CustomizerRegistry.get:(Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 1 // java.lang.Class klass
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    1     1  klass  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Ljava/util/List<TT;>;
    MethodParameters:
       Name  Flags
      klass  

  public void setInterface(java.lang.Class);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // java.lang.Class keyInterface
         0: .line 216
            aload 0 /* this */
            aload 1 /* keyInterface */
            putfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
         1: .line 217
            return
        end local 1 // java.lang.Class keyInterface
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    2     1  keyInterface  Ljava/lang/Class;
    MethodParameters:
              Name  Flags
      keyInterface  

  public net.sf.cglib.core.KeyFactory create();
    descriptor: ()Lnet/sf/cglib/core/KeyFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
         0: .line 220
            aload 0 /* this */
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.setNamePrefix:(Ljava/lang/String;)V
         1: .line 221
            aload 0 /* this */
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokespecial net.sf.cglib.core.AbstractClassGenerator.create:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast net.sf.cglib.core.KeyFactory
            areturn
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;

  public void setHashConstant(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // int constant
         0: .line 225
            aload 0 /* this */
            iload 1 /* constant */
            putfield net.sf.cglib.core.KeyFactory$Generator.constant:I
         1: .line 226
            return
        end local 1 // int constant
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    2     1  constant  I
    MethodParameters:
          Name  Flags
      constant  

  public void setHashMultiplier(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // int multiplier
         0: .line 229
            aload 0 /* this */
            iload 1 /* multiplier */
            putfield net.sf.cglib.core.KeyFactory$Generator.multiplier:I
         1: .line 230
            return
        end local 1 // int multiplier
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    2     1  multiplier  I
    MethodParameters:
            Name  Flags
      multiplier  

  protected java.lang.Object firstInstance(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // java.lang.Class type
         0: .line 233
            aload 1 /* type */
            invokestatic net.sf.cglib.core.ReflectUtils.newInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Class type
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    1     1  type  Ljava/lang/Class;
    MethodParameters:
      Name  Flags
      type  

  protected java.lang.Object nextInstance(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // java.lang.Object instance
         0: .line 237
            aload 1 /* instance */
            areturn
        end local 1 // java.lang.Object instance
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    1     1  instance  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      instance  

  public void generateClass(org.objectweb.asm.ClassVisitor);
    descriptor: (Lorg/objectweb/asm/ClassVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=13, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // org.objectweb.asm.ClassVisitor v
         0: .line 241
            new net.sf.cglib.core.ClassEmitter
            dup
            aload 1 /* v */
            invokespecial net.sf.cglib.core.ClassEmitter.<init>:(Lorg/objectweb/asm/ClassVisitor;)V
            astore 2 /* ce */
        start local 2 // net.sf.cglib.core.ClassEmitter ce
         1: .line 243
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokestatic net.sf.cglib.core.ReflectUtils.findNewInstance:(Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 3 /* newInstance */
        start local 3 // java.lang.reflect.Method newInstance
         2: .line 244
            aload 3 /* newInstance */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            ldc Ljava/lang/Object;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 245
            new java.lang.IllegalArgumentException
            dup
            ldc "newInstance method must return Object"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 248
      StackMap locals: net.sf.cglib.core.ClassEmitter java.lang.reflect.Method
      StackMap stack:
            aload 3 /* newInstance */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            invokestatic net.sf.cglib.core.TypeUtils.getTypes:([Ljava/lang/Class;)[Lorg/objectweb/asm/Type;
            astore 4 /* parameterTypes */
        start local 4 // org.objectweb.asm.Type[] parameterTypes
         5: .line 249
            aload 2 /* ce */
            bipush 52
         6: .line 250
            iconst_1
         7: .line 251
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getClassName:()Ljava/lang/String;
         8: .line 252
            getstatic net.sf.cglib.core.KeyFactory.KEY_FACTORY:Lorg/objectweb/asm/Type;
         9: .line 253
            iconst_1
            anewarray org.objectweb.asm.Type
            dup
            iconst_0
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.keyInterface:Ljava/lang/Class;
            invokestatic org.objectweb.asm.Type.getType:(Ljava/lang/Class;)Lorg/objectweb/asm/Type;
            aastore
        10: .line 254
            ldc "<generated>"
        11: .line 249
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_class:(IILjava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;Ljava/lang/String;)V
        12: .line 255
            aload 2 /* ce */
            invokestatic net.sf.cglib.core.EmitUtils.null_constructor:(Lnet/sf/cglib/core/ClassEmitter;)V
        13: .line 256
            aload 2 /* ce */
            aload 3 /* newInstance */
            invokestatic net.sf.cglib.core.ReflectUtils.getSignature:(Ljava/lang/reflect/Member;)Lnet/sf/cglib/core/Signature;
            invokestatic net.sf.cglib.core.EmitUtils.factory_method:(Lnet/sf/cglib/core/ClassEmitter;Lnet/sf/cglib/core/Signature;)V
        14: .line 258
            iconst_0
            istore 5 /* seed */
        start local 5 // int seed
        15: .line 259
            aload 2 /* ce */
            iconst_1
        16: .line 260
            aload 4 /* parameterTypes */
            invokestatic net.sf.cglib.core.TypeUtils.parseConstructor:([Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/Signature;
        17: .line 261
            aconst_null
        18: .line 259
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            astore 6 /* e */
        start local 6 // net.sf.cglib.core.CodeEmitter e
        19: .line 262
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
        20: .line 263
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.super_invoke_constructor:()V
        21: .line 264
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
        22: .line 265
            aload 0 /* this */
            ldc Lnet/sf/cglib/core/FieldTypeCustomizer;
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getCustomizers:(Ljava/lang/Class;)Ljava/util/List;
            astore 7 /* fieldTypeCustomizers */
        start local 7 // java.util.List fieldTypeCustomizers
        23: .line 266
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        24: goto 45
        25: .line 267
      StackMap locals: net.sf.cglib.core.KeyFactory$Generator org.objectweb.asm.ClassVisitor net.sf.cglib.core.ClassEmitter java.lang.reflect.Method org.objectweb.asm.Type[] int net.sf.cglib.core.CodeEmitter java.util.List int
      StackMap stack:
            aload 4 /* parameterTypes */
            iload 8 /* i */
            aaload
            astore 9 /* parameterType */
        start local 9 // org.objectweb.asm.Type parameterType
        26: .line 268
            aload 9 /* parameterType */
            astore 10 /* fieldType */
        start local 10 // org.objectweb.asm.Type fieldType
        27: .line 269
            aload 7 /* fieldTypeCustomizers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12
            goto 30
      StackMap locals: net.sf.cglib.core.KeyFactory$Generator org.objectweb.asm.ClassVisitor net.sf.cglib.core.ClassEmitter java.lang.reflect.Method org.objectweb.asm.Type[] int net.sf.cglib.core.CodeEmitter java.util.List int org.objectweb.asm.Type org.objectweb.asm.Type top java.util.Iterator
      StackMap stack:
        28: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast net.sf.cglib.core.FieldTypeCustomizer
            astore 11 /* customizer */
        start local 11 // net.sf.cglib.core.FieldTypeCustomizer customizer
        29: .line 270
            aload 11 /* customizer */
            iload 8 /* i */
            aload 10 /* fieldType */
            invokeinterface net.sf.cglib.core.FieldTypeCustomizer.getOutType:(ILorg/objectweb/asm/Type;)Lorg/objectweb/asm/Type;
            astore 10 /* fieldType */
        end local 11 // net.sf.cglib.core.FieldTypeCustomizer customizer
        30: .line 269
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 28
        31: .line 272
            iload 5 /* seed */
            aload 10 /* fieldType */
            invokevirtual org.objectweb.asm.Type.hashCode:()I
            iadd
            istore 5 /* seed */
        32: .line 273
            aload 2 /* ce */
            bipush 18
        33: .line 274
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
        34: .line 275
            aload 10 /* fieldType */
        35: .line 276
            aconst_null
        36: .line 273
            invokevirtual net.sf.cglib.core.ClassEmitter.declare_field:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
        37: .line 277
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
        38: .line 278
            aload 6 /* e */
            iload 8 /* i */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_arg:(I)V
        39: .line 279
            aload 7 /* fieldTypeCustomizers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12
            goto 42
      StackMap locals:
      StackMap stack:
        40: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast net.sf.cglib.core.FieldTypeCustomizer
            astore 11 /* customizer */
        start local 11 // net.sf.cglib.core.FieldTypeCustomizer customizer
        41: .line 280
            aload 11 /* customizer */
            aload 6 /* e */
            iload 8 /* i */
            aload 9 /* parameterType */
            invokeinterface net.sf.cglib.core.FieldTypeCustomizer.customize:(Lnet/sf/cglib/core/CodeEmitter;ILorg/objectweb/asm/Type;)V
        end local 11 // net.sf.cglib.core.FieldTypeCustomizer customizer
        42: .line 279
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 40
        43: .line 282
            aload 6 /* e */
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
            invokevirtual net.sf.cglib.core.CodeEmitter.putfield:(Ljava/lang/String;)V
        end local 10 // org.objectweb.asm.Type fieldType
        end local 9 // org.objectweb.asm.Type parameterType
        44: .line 266
            iinc 8 /* i */ 1
      StackMap locals: net.sf.cglib.core.KeyFactory$Generator org.objectweb.asm.ClassVisitor net.sf.cglib.core.ClassEmitter java.lang.reflect.Method org.objectweb.asm.Type[] int net.sf.cglib.core.CodeEmitter java.util.List int
      StackMap stack:
        45: iload 8 /* i */
            aload 4 /* parameterTypes */
            arraylength
            if_icmplt 25
        end local 8 // int i
        46: .line 284
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
        47: .line 285
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
        48: .line 288
            aload 2 /* ce */
            iconst_1
            getstatic net.sf.cglib.core.KeyFactory.HASH_CODE:Lnet/sf/cglib/core/Signature;
            aconst_null
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            astore 6 /* e */
        49: .line 289
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.constant:I
            ifeq 50
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.constant:I
            goto 51
      StackMap locals:
      StackMap stack:
        50: getstatic net.sf.cglib.core.KeyFactory.PRIMES:[I
            iload 5 /* seed */
            invokestatic java.lang.Math.abs:(I)I
            getstatic net.sf.cglib.core.KeyFactory.PRIMES:[I
            arraylength
            irem
            iaload
      StackMap locals:
      StackMap stack: int
        51: istore 8 /* hc */
        start local 8 // int hc
        52: .line 290
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.multiplier:I
            ifeq 53
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.multiplier:I
            goto 54
      StackMap locals: int
      StackMap stack:
        53: getstatic net.sf.cglib.core.KeyFactory.PRIMES:[I
            iload 5 /* seed */
            bipush 13
            imul
            invokestatic java.lang.Math.abs:(I)I
            getstatic net.sf.cglib.core.KeyFactory.PRIMES:[I
            arraylength
            irem
            iaload
      StackMap locals:
      StackMap stack: int
        54: istore 9 /* hm */
        start local 9 // int hm
        55: .line 291
            aload 6 /* e */
            iload 8 /* hc */
            invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
        56: .line 292
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        57: goto 62
        58: .line 293
      StackMap locals: int int
      StackMap stack:
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
        59: .line 294
            aload 6 /* e */
            aload 0 /* this */
            iload 10 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
            invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
        60: .line 295
            aload 6 /* e */
            aload 4 /* parameterTypes */
            iload 10 /* i */
            aaload
            iload 9 /* hm */
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
            invokestatic net.sf.cglib.core.EmitUtils.hash_code:(Lnet/sf/cglib/core/CodeEmitter;Lorg/objectweb/asm/Type;ILnet/sf/cglib/core/internal/CustomizerRegistry;)V
        61: .line 292
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        62: iload 10 /* i */
            aload 4 /* parameterTypes */
            arraylength
            if_icmplt 58
        end local 10 // int i
        63: .line 297
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
        64: .line 298
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
        65: .line 301
            aload 2 /* ce */
            iconst_1
            getstatic net.sf.cglib.core.KeyFactory.EQUALS:Lnet/sf/cglib/core/Signature;
            aconst_null
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            astore 6 /* e */
        66: .line 302
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.make_label:()Lorg/objectweb/asm/Label;
            astore 10 /* fail */
        start local 10 // org.objectweb.asm.Label fail
        67: .line 303
            aload 6 /* e */
            iconst_0
            invokevirtual net.sf.cglib.core.CodeEmitter.load_arg:(I)V
        68: .line 304
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.instance_of_this:()V
        69: .line 305
            aload 6 /* e */
            sipush 153
            aload 10 /* fail */
            invokevirtual net.sf.cglib.core.CodeEmitter.if_jump:(ILorg/objectweb/asm/Label;)V
        70: .line 306
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        71: goto 79
        72: .line 307
      StackMap locals: net.sf.cglib.core.KeyFactory$Generator org.objectweb.asm.ClassVisitor net.sf.cglib.core.ClassEmitter java.lang.reflect.Method org.objectweb.asm.Type[] int net.sf.cglib.core.CodeEmitter java.util.List int int org.objectweb.asm.Label int
      StackMap stack:
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
        73: .line 308
            aload 6 /* e */
            aload 0 /* this */
            iload 11 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
            invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
        74: .line 309
            aload 6 /* e */
            iconst_0
            invokevirtual net.sf.cglib.core.CodeEmitter.load_arg:(I)V
        75: .line 310
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.checkcast_this:()V
        76: .line 311
            aload 6 /* e */
            aload 0 /* this */
            iload 11 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
            invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
        77: .line 312
            aload 6 /* e */
            aload 4 /* parameterTypes */
            iload 11 /* i */
            aaload
            aload 10 /* fail */
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
            invokestatic net.sf.cglib.core.EmitUtils.not_equals:(Lnet/sf/cglib/core/CodeEmitter;Lorg/objectweb/asm/Type;Lorg/objectweb/asm/Label;Lnet/sf/cglib/core/internal/CustomizerRegistry;)V
        78: .line 306
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        79: iload 11 /* i */
            aload 4 /* parameterTypes */
            arraylength
            if_icmplt 72
        end local 11 // int i
        80: .line 314
            aload 6 /* e */
            iconst_1
            invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
        81: .line 315
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
        82: .line 316
            aload 6 /* e */
            aload 10 /* fail */
            invokevirtual net.sf.cglib.core.CodeEmitter.mark:(Lorg/objectweb/asm/Label;)V
        83: .line 317
            aload 6 /* e */
            iconst_0
            invokevirtual net.sf.cglib.core.CodeEmitter.push:(I)V
        84: .line 318
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
        85: .line 319
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
        86: .line 322
            aload 2 /* ce */
            iconst_1
            getstatic net.sf.cglib.core.KeyFactory.TO_STRING:Lnet/sf/cglib/core/Signature;
            aconst_null
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            astore 6 /* e */
        87: .line 323
            aload 6 /* e */
            getstatic net.sf.cglib.core.Constants.TYPE_STRING_BUFFER:Lorg/objectweb/asm/Type;
            invokevirtual net.sf.cglib.core.CodeEmitter.new_instance:(Lorg/objectweb/asm/Type;)V
        88: .line 324
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.dup:()V
        89: .line 325
            aload 6 /* e */
            getstatic net.sf.cglib.core.Constants.TYPE_STRING_BUFFER:Lorg/objectweb/asm/Type;
            invokevirtual net.sf.cglib.core.CodeEmitter.invoke_constructor:(Lorg/objectweb/asm/Type;)V
        90: .line 326
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        91: goto 99
        92: .line 327
      StackMap locals:
      StackMap stack:
            iload 11 /* i */
            ifle 95
        93: .line 328
            aload 6 /* e */
            ldc ", "
            invokevirtual net.sf.cglib.core.CodeEmitter.push:(Ljava/lang/String;)V
        94: .line 329
            aload 6 /* e */
            getstatic net.sf.cglib.core.Constants.TYPE_STRING_BUFFER:Lorg/objectweb/asm/Type;
            getstatic net.sf.cglib.core.KeyFactory.APPEND_STRING:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.CodeEmitter.invoke_virtual:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
        95: .line 331
      StackMap locals:
      StackMap stack:
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.load_this:()V
        96: .line 332
            aload 6 /* e */
            aload 0 /* this */
            iload 11 /* i */
            invokevirtual net.sf.cglib.core.KeyFactory$Generator.getFieldName:(I)Ljava/lang/String;
            invokevirtual net.sf.cglib.core.CodeEmitter.getfield:(Ljava/lang/String;)V
        97: .line 333
            aload 6 /* e */
            aload 4 /* parameterTypes */
            iload 11 /* i */
            aaload
            getstatic net.sf.cglib.core.EmitUtils.DEFAULT_DELIMITERS:Lnet/sf/cglib/core/EmitUtils$ArrayDelimiters;
            aload 0 /* this */
            getfield net.sf.cglib.core.KeyFactory$Generator.customizers:Lnet/sf/cglib/core/internal/CustomizerRegistry;
            invokestatic net.sf.cglib.core.EmitUtils.append_string:(Lnet/sf/cglib/core/CodeEmitter;Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/EmitUtils$ArrayDelimiters;Lnet/sf/cglib/core/internal/CustomizerRegistry;)V
        98: .line 326
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        99: iload 11 /* i */
            aload 4 /* parameterTypes */
            arraylength
            if_icmplt 92
        end local 11 // int i
       100: .line 335
            aload 6 /* e */
            getstatic net.sf.cglib.core.Constants.TYPE_STRING_BUFFER:Lorg/objectweb/asm/Type;
            getstatic net.sf.cglib.core.KeyFactory.TO_STRING:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.CodeEmitter.invoke_virtual:(Lorg/objectweb/asm/Type;Lnet/sf/cglib/core/Signature;)V
       101: .line 336
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
       102: .line 337
            aload 6 /* e */
            invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
       103: .line 339
            aload 2 /* ce */
            invokevirtual net.sf.cglib.core.ClassEmitter.end_class:()V
       104: .line 340
            return
        end local 10 // org.objectweb.asm.Label fail
        end local 9 // int hm
        end local 8 // int hc
        end local 7 // java.util.List fieldTypeCustomizers
        end local 6 // net.sf.cglib.core.CodeEmitter e
        end local 5 // int seed
        end local 4 // org.objectweb.asm.Type[] parameterTypes
        end local 3 // java.lang.reflect.Method newInstance
        end local 2 // net.sf.cglib.core.ClassEmitter ce
        end local 1 // org.objectweb.asm.ClassVisitor v
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0  105     0                  this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0  105     1                     v  Lorg/objectweb/asm/ClassVisitor;
            1  105     2                    ce  Lnet/sf/cglib/core/ClassEmitter;
            2  105     3           newInstance  Ljava/lang/reflect/Method;
            5  105     4        parameterTypes  [Lorg/objectweb/asm/Type;
           15  105     5                  seed  I
           19  105     6                     e  Lnet/sf/cglib/core/CodeEmitter;
           23  105     7  fieldTypeCustomizers  Ljava/util/List<Lnet/sf/cglib/core/FieldTypeCustomizer;>;
           24   46     8                     i  I
           26   44     9         parameterType  Lorg/objectweb/asm/Type;
           27   44    10             fieldType  Lorg/objectweb/asm/Type;
           29   30    11            customizer  Lnet/sf/cglib/core/FieldTypeCustomizer;
           41   42    11            customizer  Lnet/sf/cglib/core/FieldTypeCustomizer;
           52  105     8                    hc  I
           55  105     9                    hm  I
           57   63    10                     i  I
           67  105    10                  fail  Lorg/objectweb/asm/Label;
           71   80    11                     i  I
           91  100    11                     i  I
    MethodParameters:
      Name  Flags
      v     

  private java.lang.String getFieldName(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.KeyFactory$Generator this
        start local 1 // int arg
         0: .line 343
            new java.lang.StringBuilder
            dup
            ldc "FIELD_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* arg */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // int arg
        end local 0 // net.sf.cglib.core.KeyFactory$Generator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/KeyFactory$Generator;
            0    1     1   arg  I
    MethodParameters:
      Name  Flags
      arg   
}
SourceFile: "KeyFactory.java"
NestHost: net.sf.cglib.core.KeyFactory
InnerClasses:
  protected Source = net.sf.cglib.core.AbstractClassGenerator$Source of net.sf.cglib.core.AbstractClassGenerator
  public ArrayDelimiters = net.sf.cglib.core.EmitUtils$ArrayDelimiters of net.sf.cglib.core.EmitUtils
  public Generator = net.sf.cglib.core.KeyFactory$Generator of net.sf.cglib.core.KeyFactory