public abstract class net.sf.cglib.reflect.FastClass
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: net.sf.cglib.reflect.FastClass
  super_class: java.lang.Object
{
  private java.lang.Class type;
    descriptor: Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 30
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 31
            new java.lang.Error
            dup
            ldc "Using the FastClass empty constructor--please report to the cglib-devel mailing list"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/sf/cglib/reflect/FastClass;

  protected void <init>(java.lang.Class);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.Class type
         0: .line 34
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 35
            aload 0 /* this */
            aload 1 /* type */
            putfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
         2: .line 36
            return
        end local 1 // java.lang.Class type
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lnet/sf/cglib/reflect/FastClass;
            0    3     1  type  Ljava/lang/Class;
    MethodParameters:
      Name  Flags
      type  

  public static net.sf.cglib.reflect.FastClass create(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lnet/sf/cglib/reflect/FastClass;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 40
            aload 0 /* type */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            aload 0 /* type */
            invokestatic net.sf.cglib.reflect.FastClass.create:(Ljava/lang/ClassLoader;Ljava/lang/Class;)Lnet/sf/cglib/reflect/FastClass;
            areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class;
    MethodParameters:
      Name  Flags
      type  

  public static net.sf.cglib.reflect.FastClass create(java.lang.ClassLoader, java.lang.Class);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/Class;)Lnet/sf/cglib/reflect/FastClass;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.lang.Class type
         0: .line 44
            new net.sf.cglib.reflect.FastClass$Generator
            dup
            invokespecial net.sf.cglib.reflect.FastClass$Generator.<init>:()V
            astore 2 /* gen */
        start local 2 // net.sf.cglib.reflect.FastClass$Generator gen
         1: .line 45
            aload 2 /* gen */
            aload 1 /* type */
            invokevirtual net.sf.cglib.reflect.FastClass$Generator.setType:(Ljava/lang/Class;)V
         2: .line 46
            aload 2 /* gen */
            aload 0 /* loader */
            invokevirtual net.sf.cglib.reflect.FastClass$Generator.setClassLoader:(Ljava/lang/ClassLoader;)V
         3: .line 47
            aload 2 /* gen */
            invokevirtual net.sf.cglib.reflect.FastClass$Generator.create:()Lnet/sf/cglib/reflect/FastClass;
            areturn
        end local 2 // net.sf.cglib.reflect.FastClass$Generator gen
        end local 1 // java.lang.Class type
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  loader  Ljava/lang/ClassLoader;
            0    4     1    type  Ljava/lang/Class;
            1    4     2     gen  Lnet/sf/cglib/reflect/FastClass$Generator;
    MethodParameters:
        Name  Flags
      loader  
      type    

  public java.lang.Object invoke(java.lang.String, java.lang.Class[], java.lang.Object, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class[] parameterTypes
        start local 3 // java.lang.Object obj
        start local 4 // java.lang.Object[] args
         0: .line 92
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* parameterTypes */
            invokevirtual net.sf.cglib.reflect.FastClass.getIndex:(Ljava/lang/String;[Ljava/lang/Class;)I
            aload 3 /* obj */
            aload 4 /* args */
            invokevirtual net.sf.cglib.reflect.FastClass.invoke:(ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.Object[] args
        end local 3 // java.lang.Object obj
        end local 2 // java.lang.Class[] parameterTypes
        end local 1 // java.lang.String name
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lnet/sf/cglib/reflect/FastClass;
            0    1     1            name  Ljava/lang/String;
            0    1     2  parameterTypes  [Ljava/lang/Class;
            0    1     3             obj  Ljava/lang/Object;
            0    1     4            args  [Ljava/lang/Object;
    Exceptions:
      throws java.lang.reflect.InvocationTargetException
    MethodParameters:
                Name  Flags
      name            
      parameterTypes  
      obj             
      args            

  public java.lang.Object newInstance();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 96
            aload 0 /* this */
            aload 0 /* this */
            getstatic net.sf.cglib.core.Constants.EMPTY_CLASS_ARRAY:[Ljava/lang/Class;
            invokevirtual net.sf.cglib.reflect.FastClass.getIndex:([Ljava/lang/Class;)I
            aconst_null
            invokevirtual net.sf.cglib.reflect.FastClass.newInstance:(I[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/reflect/FastClass;
    Exceptions:
      throws java.lang.reflect.InvocationTargetException

  public java.lang.Object newInstance(java.lang.Class[], java.lang.Object[]);
    descriptor: ([Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.Class[] parameterTypes
        start local 2 // java.lang.Object[] args
         0: .line 100
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* parameterTypes */
            invokevirtual net.sf.cglib.reflect.FastClass.getIndex:([Ljava/lang/Class;)I
            aload 2 /* args */
            invokevirtual net.sf.cglib.reflect.FastClass.newInstance:(I[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.Class[] parameterTypes
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lnet/sf/cglib/reflect/FastClass;
            0    1     1  parameterTypes  [Ljava/lang/Class;
            0    1     2            args  [Ljava/lang/Object;
    Exceptions:
      throws java.lang.reflect.InvocationTargetException
    MethodParameters:
                Name  Flags
      parameterTypes  
      args            

  public net.sf.cglib.reflect.FastMethod getMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Lnet/sf/cglib/reflect/FastMethod;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.reflect.Method method
         0: .line 104
            new net.sf.cglib.reflect.FastMethod
            dup
            aload 0 /* this */
            aload 1 /* method */
            invokespecial net.sf.cglib.reflect.FastMethod.<init>:(Lnet/sf/cglib/reflect/FastClass;Ljava/lang/reflect/Method;)V
            areturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lnet/sf/cglib/reflect/FastClass;
            0    1     1  method  Ljava/lang/reflect/Method;
    MethodParameters:
        Name  Flags
      method  

  public net.sf.cglib.reflect.FastConstructor getConstructor(java.lang.reflect.Constructor);
    descriptor: (Ljava/lang/reflect/Constructor;)Lnet/sf/cglib/reflect/FastConstructor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.reflect.Constructor constructor
         0: .line 108
            new net.sf.cglib.reflect.FastConstructor
            dup
            aload 0 /* this */
            aload 1 /* constructor */
            invokespecial net.sf.cglib.reflect.FastConstructor.<init>:(Lnet/sf/cglib/reflect/FastClass;Ljava/lang/reflect/Constructor;)V
            areturn
        end local 1 // java.lang.reflect.Constructor constructor
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lnet/sf/cglib/reflect/FastClass;
            0    1     1  constructor  Ljava/lang/reflect/Constructor;
    MethodParameters:
             Name  Flags
      constructor  

  public net.sf.cglib.reflect.FastMethod getMethod(java.lang.String, java.lang.Class[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;)Lnet/sf/cglib/reflect/FastMethod;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class[] parameterTypes
         0: .line 113
            aload 0 /* this */
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            aload 1 /* name */
            aload 2 /* parameterTypes */
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            invokevirtual net.sf.cglib.reflect.FastClass.getMethod:(Ljava/lang/reflect/Method;)Lnet/sf/cglib/reflect/FastMethod;
         1: areturn
         2: .line 114
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            astore 3 /* e */
        start local 3 // java.lang.NoSuchMethodException e
         3: .line 115
            new java.lang.NoSuchMethodError
            dup
            aload 3 /* e */
            invokevirtual java.lang.NoSuchMethodException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.NoSuchMethodError.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.NoSuchMethodException e
        end local 2 // java.lang.Class[] parameterTypes
        end local 1 // java.lang.String name
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lnet/sf/cglib/reflect/FastClass;
            0    4     1            name  Ljava/lang/String;
            0    4     2  parameterTypes  [Ljava/lang/Class;
            3    4     3               e  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchMethodException
    MethodParameters:
                Name  Flags
      name            
      parameterTypes  

  public net.sf.cglib.reflect.FastConstructor getConstructor(java.lang.Class[]);
    descriptor: ([Ljava/lang/Class;)Lnet/sf/cglib/reflect/FastConstructor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.Class[] parameterTypes
         0: .line 121
            aload 0 /* this */
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            aload 1 /* parameterTypes */
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            invokevirtual net.sf.cglib.reflect.FastClass.getConstructor:(Ljava/lang/reflect/Constructor;)Lnet/sf/cglib/reflect/FastConstructor;
         1: areturn
         2: .line 122
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            astore 2 /* e */
        start local 2 // java.lang.NoSuchMethodException e
         3: .line 123
            new java.lang.NoSuchMethodError
            dup
            aload 2 /* e */
            invokevirtual java.lang.NoSuchMethodException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.NoSuchMethodError.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.NoSuchMethodException e
        end local 1 // java.lang.Class[] parameterTypes
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lnet/sf/cglib/reflect/FastClass;
            0    4     1  parameterTypes  [Ljava/lang/Class;
            3    4     2               e  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchMethodException
    MethodParameters:
                Name  Flags
      parameterTypes  

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 128
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            areturn
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/reflect/FastClass;

  public java.lang.Class getJavaClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 132
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            areturn
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/reflect/FastClass;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 136
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            areturn
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/reflect/FastClass;

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // net.sf.cglib.reflect.FastClass this
         0: .line 140
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            invokevirtual java.lang.Object.hashCode:()I
            ireturn
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lnet/sf/cglib/reflect/FastClass;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.sf.cglib.reflect.FastClass this
        start local 1 // java.lang.Object o
         0: .line 144
            aload 1 /* o */
            ifnull 1
            aload 1 /* o */
            instanceof net.sf.cglib.reflect.FastClass
            ifne 2
         1: .line 145
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            aload 1 /* o */
            checkcast net.sf.cglib.reflect.FastClass
            getfield net.sf.cglib.reflect.FastClass.type:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // net.sf.cglib.reflect.FastClass this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lnet/sf/cglib/reflect/FastClass;
            0    3     1     o  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     

  public abstract int getIndex(java.lang.String, java.lang.Class[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                Name  Flags
      name            
      parameterTypes  

  public abstract int getIndex(java.lang.Class[]);
    descriptor: ([Ljava/lang/Class;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                Name  Flags
      parameterTypes  

  public abstract java.lang.Object invoke(int, java.lang.Object, java.lang.Object[]);
    descriptor: (ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.lang.reflect.InvocationTargetException
    MethodParameters:
       Name  Flags
      index  
      obj    
      args   

  public abstract java.lang.Object newInstance(int, java.lang.Object[]);
    descriptor: (I[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.lang.reflect.InvocationTargetException
    MethodParameters:
       Name  Flags
      index  
      args   

  public abstract int getIndex(net.sf.cglib.core.Signature);
    descriptor: (Lnet/sf/cglib/core/Signature;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      sig   

  public abstract int getMaxIndex();
    descriptor: ()I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected static java.lang.String getSignatureWithoutReturnType(java.lang.String, java.lang.Class[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String name
        start local 1 // java.lang.Class[] parameterTypes
         0: .line 198
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuffer sb
         1: .line 199
            aload 2 /* sb */
            aload 0 /* name */
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         2: .line 200
            aload 2 /* sb */
            bipush 40
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 201
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 7
         5: .line 202
      StackMap locals: java.lang.StringBuffer int
      StackMap stack:
            aload 2 /* sb */
            aload 1 /* parameterTypes */
            iload 3 /* i */
            aaload
            invokestatic org.objectweb.asm.Type.getDescriptor:(Ljava/lang/Class;)Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         6: .line 201
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 1 /* parameterTypes */
            arraylength
            if_icmplt 5
        end local 3 // int i
         8: .line 204
            aload 2 /* sb */
            bipush 41
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         9: .line 205
            aload 2 /* sb */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuffer sb
        end local 1 // java.lang.Class[] parameterTypes
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            name  Ljava/lang/String;
            0   10     1  parameterTypes  [Ljava/lang/Class;
            1   10     2              sb  Ljava/lang/StringBuffer;
            4    8     3               i  I
    MethodParameters:
                Name  Flags
      name            
      parameterTypes  
}
SourceFile: "FastClass.java"
NestMembers:
  net.sf.cglib.reflect.FastClass$Generator
InnerClasses:
  public Generator = net.sf.cglib.reflect.FastClass$Generator of net.sf.cglib.reflect.FastClass