public class net.sf.cglib.core.ClassEmitter extends net.sf.cglib.transform.ClassTransformer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: net.sf.cglib.core.ClassEmitter
  super_class: net.sf.cglib.transform.ClassTransformer
{
  private net.sf.cglib.core.ClassInfo classInfo;
    descriptor: Lnet/sf/cglib/core/ClassInfo;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map fieldInfo;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE

  private static int hookCounter;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private org.objectweb.asm.MethodVisitor rawStaticInit;
    descriptor: Lorg/objectweb/asm/MethodVisitor;
    flags: (0x0002) ACC_PRIVATE

  private net.sf.cglib.core.CodeEmitter staticInit;
    descriptor: Lnet/sf/cglib/core/CodeEmitter;
    flags: (0x0002) ACC_PRIVATE

  private net.sf.cglib.core.CodeEmitter staticHook;
    descriptor: Lnet/sf/cglib/core/CodeEmitter;
    flags: (0x0002) ACC_PRIVATE

  private net.sf.cglib.core.Signature staticHookSig;
    descriptor: Lnet/sf/cglib/core/Signature;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.objectweb.asm.ClassVisitor);
    descriptor: (Lorg/objectweb/asm/ClassVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // org.objectweb.asm.ClassVisitor cv
         0: .line 41
            aload 0 /* this */
            invokespecial net.sf.cglib.transform.ClassTransformer.<init>:()V
         1: .line 42
            aload 0 /* this */
            aload 1 /* cv */
            invokevirtual net.sf.cglib.core.ClassEmitter.setTarget:(Lorg/objectweb/asm/ClassVisitor;)V
         2: .line 43
            return
        end local 1 // org.objectweb.asm.ClassVisitor cv
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lnet/sf/cglib/core/ClassEmitter;
            0    3     1    cv  Lorg/objectweb/asm/ClassVisitor;
    MethodParameters:
      Name  Flags
      cv    

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 46
            aload 0 /* this */
            getstatic net.sf.cglib.core.Constants.ASM_API:I
            invokespecial net.sf.cglib.transform.ClassTransformer.<init>:(I)V
         1: .line 47
            return
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public void setTarget(org.objectweb.asm.ClassVisitor);
    descriptor: (Lorg/objectweb/asm/ClassVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // org.objectweb.asm.ClassVisitor cv
         0: .line 50
            aload 0 /* this */
            aload 1 /* cv */
            putfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
         1: .line 51
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield net.sf.cglib.core.ClassEmitter.fieldInfo:Ljava/util/Map;
         2: .line 54
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            dup_x1
            putfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            putfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
         3: .line 55
            aload 0 /* this */
            aconst_null
            putfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
         4: .line 56
            return
        end local 1 // org.objectweb.asm.ClassVisitor cv
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lnet/sf/cglib/core/ClassEmitter;
            0    5     1    cv  Lorg/objectweb/asm/ClassVisitor;
    MethodParameters:
      Name  Flags
      cv    

  private static synchronized int getNextHook();
    descriptor: ()I
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=0, args_size=0
         0: .line 59
            getstatic net.sf.cglib.core.ClassEmitter.hookCounter:I
            iconst_1
            iadd
            dup
            putstatic net.sf.cglib.core.ClassEmitter.hookCounter:I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public net.sf.cglib.core.ClassInfo getClassInfo();
    descriptor: ()Lnet/sf/cglib/core/ClassInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 63
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            areturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public void begin_class(int, int, java.lang.String, org.objectweb.asm.Type, org.objectweb.asm.Type[], java.lang.String);
    descriptor: (IILjava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int version
        start local 2 // int access
        start local 3 // java.lang.String className
        start local 4 // org.objectweb.asm.Type superType
        start local 5 // org.objectweb.asm.Type[] interfaces
        start local 6 // java.lang.String source
         0: .line 67
            new java.lang.StringBuilder
            dup
            ldc "L"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* className */
            bipush 46
            bipush 47
            invokevirtual java.lang.String.replace:(CC)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;
            invokestatic org.objectweb.asm.Type.getType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
            astore 7 /* classType */
        start local 7 // org.objectweb.asm.Type classType
         1: .line 68
            aload 0 /* this */
            new net.sf.cglib.core.ClassEmitter$1
            dup
            aload 0 /* this */
            aload 7 /* classType */
            aload 4 /* superType */
            aload 5 /* interfaces */
            iload 2 /* access */
            invokespecial net.sf.cglib.core.ClassEmitter$1.<init>:(Lnet/sf/cglib/core/ClassEmitter;Lorg/objectweb/asm/Type;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;I)V
            putfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
         2: .line 82
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
            iload 1 /* version */
         3: .line 83
            iload 2 /* access */
         4: .line 84
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            invokevirtual net.sf.cglib.core.ClassInfo.getType:()Lorg/objectweb/asm/Type;
            invokevirtual org.objectweb.asm.Type.getInternalName:()Ljava/lang/String;
         5: .line 85
            aconst_null
         6: .line 86
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            invokevirtual net.sf.cglib.core.ClassInfo.getSuperType:()Lorg/objectweb/asm/Type;
            invokevirtual org.objectweb.asm.Type.getInternalName:()Ljava/lang/String;
         7: .line 87
            aload 5 /* interfaces */
            invokestatic net.sf.cglib.core.TypeUtils.toInternalNames:([Lorg/objectweb/asm/Type;)[Ljava/lang/String;
         8: .line 82
            invokevirtual org.objectweb.asm.ClassVisitor.visit:(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
         9: .line 88
            aload 6 /* source */
            ifnull 11
        10: .line 89
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
            aload 6 /* source */
            aconst_null
            invokevirtual org.objectweb.asm.ClassVisitor.visitSource:(Ljava/lang/String;Ljava/lang/String;)V
        11: .line 90
      StackMap locals: org.objectweb.asm.Type
      StackMap stack:
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.init:()V
        12: .line 91
            return
        end local 7 // org.objectweb.asm.Type classType
        end local 6 // java.lang.String source
        end local 5 // org.objectweb.asm.Type[] interfaces
        end local 4 // org.objectweb.asm.Type superType
        end local 3 // java.lang.String className
        end local 2 // int access
        end local 1 // int version
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lnet/sf/cglib/core/ClassEmitter;
            0   13     1     version  I
            0   13     2      access  I
            0   13     3   className  Ljava/lang/String;
            0   13     4   superType  Lorg/objectweb/asm/Type;
            0   13     5  interfaces  [Lorg/objectweb/asm/Type;
            0   13     6      source  Ljava/lang/String;
            1   13     7   classType  Lorg/objectweb/asm/Type;
    MethodParameters:
            Name  Flags
      version     
      access      final
      className   
      superType   final
      interfaces  final
      source      

  public net.sf.cglib.core.CodeEmitter getStaticHook();
    descriptor: ()Lnet/sf/cglib/core/CodeEmitter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 94
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.getAccess:()I
            invokestatic net.sf.cglib.core.TypeUtils.isInterface:(I)Z
            ifeq 2
         1: .line 95
            new java.lang.IllegalStateException
            dup
            ldc "static hook is invalid for this class"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            ifnonnull 10
         3: .line 98
            aload 0 /* this */
            new net.sf.cglib.core.Signature
            dup
            new java.lang.StringBuilder
            dup
            ldc "CGLIB$STATICHOOK"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic net.sf.cglib.core.ClassEmitter.getNextHook:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "()V"
            invokespecial net.sf.cglib.core.Signature.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
         4: .line 99
            aload 0 /* this */
            aload 0 /* this */
            bipush 8
         5: .line 100
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
         6: .line 101
            aconst_null
         7: .line 99
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            putfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
         8: .line 102
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            ifnull 10
         9: .line 103
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.CodeEmitter.invoke_static_this:(Lnet/sf/cglib/core/Signature;)V
        10: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            areturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lnet/sf/cglib/core/ClassEmitter;

  protected void init();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 110
            return
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public int getAccess();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 113
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            invokevirtual net.sf.cglib.core.ClassInfo.getModifiers:()I
            ireturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public org.objectweb.asm.Type getClassType();
    descriptor: ()Lorg/objectweb/asm/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 117
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            invokevirtual net.sf.cglib.core.ClassInfo.getType:()Lorg/objectweb/asm/Type;
            areturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public org.objectweb.asm.Type getSuperType();
    descriptor: ()Lorg/objectweb/asm/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 121
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            invokevirtual net.sf.cglib.core.ClassInfo.getSuperType:()Lorg/objectweb/asm/Type;
            areturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public void end_class();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 125
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            ifnull 2
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            ifnonnull 2
         1: .line 127
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_static:()Lnet/sf/cglib/core/CodeEmitter;
            pop
         2: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            ifnull 9
         3: .line 130
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            invokevirtual net.sf.cglib.core.CodeEmitter.return_value:()V
         4: .line 131
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            invokevirtual net.sf.cglib.core.CodeEmitter.end_method:()V
         5: .line 132
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.rawStaticInit:Lorg/objectweb/asm/MethodVisitor;
            sipush 177
            invokevirtual org.objectweb.asm.MethodVisitor.visitInsn:(I)V
         6: .line 133
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.rawStaticInit:Lorg/objectweb/asm/MethodVisitor;
            iconst_0
            iconst_0
            invokevirtual org.objectweb.asm.MethodVisitor.visitMaxs:(II)V
         7: .line 134
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            dup_x1
            putfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            putfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
         8: .line 135
            aload 0 /* this */
            aconst_null
            putfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
         9: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
            invokevirtual org.objectweb.asm.ClassVisitor.visitEnd:()V
        10: .line 138
            return
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public net.sf.cglib.core.CodeEmitter begin_method(int, net.sf.cglib.core.Signature, org.objectweb.asm.Type[]);
    descriptor: (ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int access
        start local 2 // net.sf.cglib.core.Signature sig
        start local 3 // org.objectweb.asm.Type[] exceptions
         0: .line 141
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.classInfo:Lnet/sf/cglib/core/ClassInfo;
            ifnonnull 2
         1: .line 142
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "classInfo is null! "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
            iload 1 /* access */
         3: .line 144
            aload 2 /* sig */
            invokevirtual net.sf.cglib.core.Signature.getName:()Ljava/lang/String;
         4: .line 145
            aload 2 /* sig */
            invokevirtual net.sf.cglib.core.Signature.getDescriptor:()Ljava/lang/String;
         5: .line 146
            aconst_null
         6: .line 147
            aload 3 /* exceptions */
            invokestatic net.sf.cglib.core.TypeUtils.toInternalNames:([Lorg/objectweb/asm/Type;)[Ljava/lang/String;
         7: .line 143
            invokevirtual org.objectweb.asm.ClassVisitor.visitMethod:(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor;
            astore 4 /* v */
        start local 4 // org.objectweb.asm.MethodVisitor v
         8: .line 148
            aload 2 /* sig */
            getstatic net.sf.cglib.core.Constants.SIG_STATIC:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.Signature.equals:(Ljava/lang/Object;)Z
            ifeq 17
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.getAccess:()I
            invokestatic net.sf.cglib.core.TypeUtils.isInterface:(I)Z
            ifne 17
         9: .line 149
            aload 0 /* this */
            aload 4 /* v */
            putfield net.sf.cglib.core.ClassEmitter.rawStaticInit:Lorg/objectweb/asm/MethodVisitor;
        10: .line 150
            new net.sf.cglib.core.ClassEmitter$2
            dup
            aload 0 /* this */
            getstatic net.sf.cglib.core.Constants.ASM_API:I
            aload 4 /* v */
            invokespecial net.sf.cglib.core.ClassEmitter$2.<init>:(Lnet/sf/cglib/core/ClassEmitter;ILorg/objectweb/asm/MethodVisitor;)V
            astore 5 /* wrapped */
        start local 5 // org.objectweb.asm.MethodVisitor wrapped
        11: .line 160
            aload 0 /* this */
            new net.sf.cglib.core.CodeEmitter
            dup
            aload 0 /* this */
            aload 5 /* wrapped */
            iload 1 /* access */
            aload 2 /* sig */
            aload 3 /* exceptions */
            invokespecial net.sf.cglib.core.CodeEmitter.<init>:(Lnet/sf/cglib/core/ClassEmitter;Lorg/objectweb/asm/MethodVisitor;ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)V
            putfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
        12: .line 161
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHook:Lnet/sf/cglib/core/CodeEmitter;
            ifnonnull 15
        13: .line 163
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.getStaticHook:()Lnet/sf/cglib/core/CodeEmitter;
            pop
        14: .line 164
            goto 16
        15: .line 165
      StackMap locals: org.objectweb.asm.MethodVisitor org.objectweb.asm.MethodVisitor
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.CodeEmitter.invoke_static_this:(Lnet/sf/cglib/core/Signature;)V
        16: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticInit:Lnet/sf/cglib/core/CodeEmitter;
            areturn
        end local 5 // org.objectweb.asm.MethodVisitor wrapped
        17: .line 168
      StackMap locals:
      StackMap stack:
            aload 2 /* sig */
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.staticHookSig:Lnet/sf/cglib/core/Signature;
            invokevirtual net.sf.cglib.core.Signature.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 169
            new net.sf.cglib.core.ClassEmitter$3
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 4 /* v */
            iload 1 /* access */
            aload 2 /* sig */
            aload 3 /* exceptions */
            invokespecial net.sf.cglib.core.ClassEmitter$3.<init>:(Lnet/sf/cglib/core/ClassEmitter;Lnet/sf/cglib/core/ClassEmitter;Lorg/objectweb/asm/MethodVisitor;ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)V
            areturn
        19: .line 175
      StackMap locals:
      StackMap stack:
            new net.sf.cglib.core.CodeEmitter
            dup
            aload 0 /* this */
            aload 4 /* v */
            iload 1 /* access */
            aload 2 /* sig */
            aload 3 /* exceptions */
            invokespecial net.sf.cglib.core.CodeEmitter.<init>:(Lnet/sf/cglib/core/ClassEmitter;Lorg/objectweb/asm/MethodVisitor;ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)V
            areturn
        end local 4 // org.objectweb.asm.MethodVisitor v
        end local 3 // org.objectweb.asm.Type[] exceptions
        end local 2 // net.sf.cglib.core.Signature sig
        end local 1 // int access
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lnet/sf/cglib/core/ClassEmitter;
            0   20     1      access  I
            0   20     2         sig  Lnet/sf/cglib/core/Signature;
            0   20     3  exceptions  [Lorg/objectweb/asm/Type;
            8   20     4           v  Lorg/objectweb/asm/MethodVisitor;
           11   17     5     wrapped  Lorg/objectweb/asm/MethodVisitor;
    MethodParameters:
            Name  Flags
      access      
      sig         
      exceptions  

  public net.sf.cglib.core.CodeEmitter begin_static();
    descriptor: ()Lnet/sf/cglib/core/CodeEmitter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 180
            aload 0 /* this */
            bipush 8
            getstatic net.sf.cglib.core.Constants.SIG_STATIC: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;
            areturn
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public void declare_field(int, java.lang.String, org.objectweb.asm.Type, java.lang.Object);
    descriptor: (ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int access
        start local 2 // java.lang.String name
        start local 3 // org.objectweb.asm.Type type
        start local 4 // java.lang.Object value
         0: .line 184
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.fieldInfo:Ljava/util/Map;
            aload 2 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast net.sf.cglib.core.ClassEmitter$FieldInfo
            astore 5 /* existing */
        start local 5 // net.sf.cglib.core.ClassEmitter$FieldInfo existing
         1: .line 185
            new net.sf.cglib.core.ClassEmitter$FieldInfo
            dup
            iload 1 /* access */
            aload 2 /* name */
            aload 3 /* type */
            aload 4 /* value */
            invokespecial net.sf.cglib.core.ClassEmitter$FieldInfo.<init>:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
            astore 6 /* info */
        start local 6 // net.sf.cglib.core.ClassEmitter$FieldInfo info
         2: .line 186
            aload 5 /* existing */
            ifnull 5
         3: .line 187
            aload 6 /* info */
            aload 5 /* existing */
            invokevirtual net.sf.cglib.core.ClassEmitter$FieldInfo.equals:(Ljava/lang/Object;)Z
            ifne 7
         4: .line 188
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Field \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\" has been declared differently"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 191
      StackMap locals: net.sf.cglib.core.ClassEmitter$FieldInfo net.sf.cglib.core.ClassEmitter$FieldInfo
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.fieldInfo:Ljava/util/Map;
            aload 2 /* name */
            aload 6 /* info */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 192
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.cv:Lorg/objectweb/asm/ClassVisitor;
            iload 1 /* access */
            aload 2 /* name */
            aload 3 /* type */
            invokevirtual org.objectweb.asm.Type.getDescriptor:()Ljava/lang/String;
            aconst_null
            aload 4 /* value */
            invokevirtual org.objectweb.asm.ClassVisitor.visitField:(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor;
            pop
         7: .line 194
      StackMap locals:
      StackMap stack:
            return
        end local 6 // net.sf.cglib.core.ClassEmitter$FieldInfo info
        end local 5 // net.sf.cglib.core.ClassEmitter$FieldInfo existing
        end local 4 // java.lang.Object value
        end local 3 // org.objectweb.asm.Type type
        end local 2 // java.lang.String name
        end local 1 // int access
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lnet/sf/cglib/core/ClassEmitter;
            0    8     1    access  I
            0    8     2      name  Ljava/lang/String;
            0    8     3      type  Lorg/objectweb/asm/Type;
            0    8     4     value  Ljava/lang/Object;
            1    8     5  existing  Lnet/sf/cglib/core/ClassEmitter$FieldInfo;
            2    8     6      info  Lnet/sf/cglib/core/ClassEmitter$FieldInfo;
    MethodParameters:
        Name  Flags
      access  
      name    
      type    
      value   

  boolean isFieldDeclared(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // java.lang.String name
         0: .line 198
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.fieldInfo:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.String name
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/sf/cglib/core/ClassEmitter;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  net.sf.cglib.core.ClassEmitter$FieldInfo getFieldInfo(java.lang.String);
    descriptor: (Ljava/lang/String;)Lnet/sf/cglib/core/ClassEmitter$FieldInfo;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // java.lang.String name
         0: .line 202
            aload 0 /* this */
            getfield net.sf.cglib.core.ClassEmitter.fieldInfo:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast net.sf.cglib.core.ClassEmitter$FieldInfo
            astore 2 /* field */
        start local 2 // net.sf.cglib.core.ClassEmitter$FieldInfo field
         1: .line 203
            aload 2 /* field */
            ifnonnull 3
         2: .line 204
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Field "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is not declared in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.getClassType:()Lorg/objectweb/asm/Type;
            invokevirtual org.objectweb.asm.Type.getClassName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 206
      StackMap locals: net.sf.cglib.core.ClassEmitter$FieldInfo
      StackMap stack:
            aload 2 /* field */
            areturn
        end local 2 // net.sf.cglib.core.ClassEmitter$FieldInfo field
        end local 1 // java.lang.String name
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lnet/sf/cglib/core/ClassEmitter;
            0    4     1   name  Ljava/lang/String;
            1    4     2  field  Lnet/sf/cglib/core/ClassEmitter$FieldInfo;
    MethodParameters:
      Name  Flags
      name  

  public void visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]);
    descriptor: (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=7
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int version
        start local 2 // int access
        start local 3 // java.lang.String name
        start local 4 // java.lang.String signature
        start local 5 // java.lang.String superName
        start local 6 // java.lang.String[] interfaces
         0: .line 251
            aload 0 /* this */
            iload 1 /* version */
         1: .line 252
            iload 2 /* access */
         2: .line 253
            aload 3 /* name */
            bipush 47
            bipush 46
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
         3: .line 254
            aload 5 /* superName */
            invokestatic net.sf.cglib.core.TypeUtils.fromInternalName:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
         4: .line 255
            aload 6 /* interfaces */
            invokestatic net.sf.cglib.core.TypeUtils.fromInternalNames:([Ljava/lang/String;)[Lorg/objectweb/asm/Type;
         5: .line 256
            aconst_null
         6: .line 251
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_class:(IILjava/lang/String;Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;Ljava/lang/String;)V
         7: .line 257
            return
        end local 6 // java.lang.String[] interfaces
        end local 5 // java.lang.String superName
        end local 4 // java.lang.String signature
        end local 3 // java.lang.String name
        end local 2 // int access
        end local 1 // int version
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lnet/sf/cglib/core/ClassEmitter;
            0    8     1     version  I
            0    8     2      access  I
            0    8     3        name  Ljava/lang/String;
            0    8     4   signature  Ljava/lang/String;
            0    8     5   superName  Ljava/lang/String;
            0    8     6  interfaces  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      version     
      access      
      name        
      signature   
      superName   
      interfaces  

  public void visitEnd();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.core.ClassEmitter this
         0: .line 260
            aload 0 /* this */
            invokevirtual net.sf.cglib.core.ClassEmitter.end_class:()V
         1: .line 261
            return
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/sf/cglib/core/ClassEmitter;

  public org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object);
    descriptor: (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int access
        start local 2 // java.lang.String name
        start local 3 // java.lang.String desc
        start local 4 // java.lang.String signature
        start local 5 // java.lang.Object value
         0: .line 268
            aload 0 /* this */
            iload 1 /* access */
            aload 2 /* name */
            aload 3 /* desc */
            invokestatic org.objectweb.asm.Type.getType:(Ljava/lang/String;)Lorg/objectweb/asm/Type;
            aload 5 /* value */
            invokevirtual net.sf.cglib.core.ClassEmitter.declare_field:(ILjava/lang/String;Lorg/objectweb/asm/Type;Ljava/lang/Object;)V
         1: .line 269
            aconst_null
            areturn
        end local 5 // java.lang.Object value
        end local 4 // java.lang.String signature
        end local 3 // java.lang.String desc
        end local 2 // java.lang.String name
        end local 1 // int access
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lnet/sf/cglib/core/ClassEmitter;
            0    2     1     access  I
            0    2     2       name  Ljava/lang/String;
            0    2     3       desc  Ljava/lang/String;
            0    2     4  signature  Ljava/lang/String;
            0    2     5      value  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      access     
      name       
      desc       
      signature  
      value      

  public org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]);
    descriptor: (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // net.sf.cglib.core.ClassEmitter this
        start local 1 // int access
        start local 2 // java.lang.String name
        start local 3 // java.lang.String desc
        start local 4 // java.lang.String signature
        start local 5 // java.lang.String[] exceptions
         0: .line 277
            aload 0 /* this */
            iload 1 /* access */
         1: .line 278
            new net.sf.cglib.core.Signature
            dup
            aload 2 /* name */
            aload 3 /* desc */
            invokespecial net.sf.cglib.core.Signature.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 279
            aload 5 /* exceptions */
            invokestatic net.sf.cglib.core.TypeUtils.fromInternalNames:([Ljava/lang/String;)[Lorg/objectweb/asm/Type;
         3: .line 277
            invokevirtual net.sf.cglib.core.ClassEmitter.begin_method:(ILnet/sf/cglib/core/Signature;[Lorg/objectweb/asm/Type;)Lnet/sf/cglib/core/CodeEmitter;
            areturn
        end local 5 // java.lang.String[] exceptions
        end local 4 // java.lang.String signature
        end local 3 // java.lang.String desc
        end local 2 // java.lang.String name
        end local 1 // int access
        end local 0 // net.sf.cglib.core.ClassEmitter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lnet/sf/cglib/core/ClassEmitter;
            0    4     1      access  I
            0    4     2        name  Ljava/lang/String;
            0    4     3        desc  Ljava/lang/String;
            0    4     4   signature  Ljava/lang/String;
            0    4     5  exceptions  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      access      
      name        
      desc        
      signature   
      exceptions  
}
SourceFile: "ClassEmitter.java"
NestMembers:
  net.sf.cglib.core.ClassEmitter$1  net.sf.cglib.core.ClassEmitter$2  net.sf.cglib.core.ClassEmitter$3  net.sf.cglib.core.ClassEmitter$FieldInfo
InnerClasses:
  net.sf.cglib.core.ClassEmitter$1
  net.sf.cglib.core.ClassEmitter$2
  net.sf.cglib.core.ClassEmitter$3
  FieldInfo = net.sf.cglib.core.ClassEmitter$FieldInfo of net.sf.cglib.core.ClassEmitter