public class com.sun.tools.classfile.ClassReader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.tools.classfile.ClassReader
  super_class: java.lang.Object
{
  private java.io.DataInputStream in;
    descriptor: Ljava/io/DataInputStream;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.tools.classfile.ClassFile classFile;
    descriptor: Lcom/sun/tools/classfile/ClassFile;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.tools.classfile.Attribute$Factory attributeFactory;
    descriptor: Lcom/sun/tools/classfile/Attribute$Factory;
    flags: (0x0002) ACC_PRIVATE

  void <init>(com.sun.tools.classfile.ClassFile, java.io.InputStream, com.sun.tools.classfile.Attribute$Factory);
    descriptor: (Lcom/sun/tools/classfile/ClassFile;Ljava/io/InputStream;Lcom/sun/tools/classfile/Attribute$Factory;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.sun.tools.classfile.ClassReader this
        start local 1 // com.sun.tools.classfile.ClassFile classFile
        start local 2 // java.io.InputStream in
        start local 3 // com.sun.tools.classfile.Attribute$Factory attributeFactory
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            aload 1 /* classFile */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.classfile.ClassFile
            putfield com.sun.tools.classfile.ClassReader.classFile:Lcom/sun/tools/classfile/ClassFile;
         2: .line 44
            aload 0 /* this */
            aload 3 /* attributeFactory */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.classfile.Attribute$Factory
            putfield com.sun.tools.classfile.ClassReader.attributeFactory:Lcom/sun/tools/classfile/Attribute$Factory;
         3: .line 45
            aload 0 /* this */
            new java.io.DataInputStream
            dup
            new java.io.BufferedInputStream
            dup
            aload 2 /* in */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            putfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
         4: .line 46
            return
        end local 3 // com.sun.tools.classfile.Attribute$Factory attributeFactory
        end local 2 // java.io.InputStream in
        end local 1 // com.sun.tools.classfile.ClassFile classFile
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lcom/sun/tools/classfile/ClassReader;
            0    5     1         classFile  Lcom/sun/tools/classfile/ClassFile;
            0    5     2                in  Ljava/io/InputStream;
            0    5     3  attributeFactory  Lcom/sun/tools/classfile/Attribute$Factory;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      classFile         
      in                
      attributeFactory  

  com.sun.tools.classfile.ClassFile getClassFile();
    descriptor: ()Lcom/sun/tools/classfile/ClassFile;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 49
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.classFile:Lcom/sun/tools/classfile/ClassFile;
            areturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;

  com.sun.tools.classfile.ConstantPool getConstantPool();
    descriptor: ()Lcom/sun/tools/classfile/ConstantPool;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 53
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.classFile:Lcom/sun/tools/classfile/ClassFile;
            getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
            areturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;

  public com.sun.tools.classfile.Attribute readAttribute();
    descriptor: ()Lcom/sun/tools/classfile/Attribute;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 57
            aload 0 /* this */
            invokevirtual com.sun.tools.classfile.ClassReader.readUnsignedShort:()I
            istore 1 /* name_index */
        start local 1 // int name_index
         1: .line 58
            aload 0 /* this */
            invokevirtual com.sun.tools.classfile.ClassReader.readInt:()I
            istore 2 /* length */
        start local 2 // int length
         2: .line 59
            iload 2 /* length */
            ifge 8
         3: .line 62
            aload 0 /* this */
            invokevirtual com.sun.tools.classfile.ClassReader.getConstantPool:()Lcom/sun/tools/classfile/ConstantPool;
            iload 1 /* name_index */
            invokevirtual com.sun.tools.classfile.ConstantPool.getUTF8Value:(I)Ljava/lang/String;
            astore 3 /* attrName */
        start local 3 // java.lang.String attrName
         4: .line 63
            goto 7
        end local 3 // java.lang.String attrName
      StackMap locals: com.sun.tools.classfile.ClassReader int int
      StackMap stack: com.sun.tools.classfile.ConstantPoolException
         5: pop
         6: .line 64
            ldc ""
            astore 3 /* attrName */
        start local 3 // java.lang.String attrName
         7: .line 66
      StackMap locals: java.lang.String
      StackMap stack:
            new com.sun.tools.classfile.FatalError
            dup
            ldc "attribute %s too big to handle"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* attrName */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial com.sun.tools.classfile.FatalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String attrName
         8: .line 68
      StackMap locals:
      StackMap stack:
            iload 2 /* length */
            newarray 8
            astore 3 /* data */
        start local 3 // byte[] data
         9: .line 69
            aload 0 /* this */
            aload 3 /* data */
            invokevirtual com.sun.tools.classfile.ClassReader.readFully:([B)V
        10: .line 71
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            astore 4 /* prev */
        start local 4 // java.io.DataInputStream prev
        11: .line 72
            aload 0 /* this */
            new java.io.DataInputStream
            dup
            new java.io.ByteArrayInputStream
            dup
            aload 3 /* data */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            putfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
        12: .line 74
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.attributeFactory:Lcom/sun/tools/classfile/Attribute$Factory;
            aload 0 /* this */
            iload 1 /* name_index */
            aload 3 /* data */
            invokevirtual com.sun.tools.classfile.Attribute$Factory.createAttribute:(Lcom/sun/tools/classfile/ClassReader;I[B)Lcom/sun/tools/classfile/Attribute;
            astore 6
        13: .line 76
            aload 0 /* this */
            aload 4 /* prev */
            putfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
        14: .line 74
            aload 6
            areturn
        15: .line 75
      StackMap locals: com.sun.tools.classfile.ClassReader int int byte[] java.io.DataInputStream
      StackMap stack: java.lang.Throwable
            astore 5
        16: .line 76
            aload 0 /* this */
            aload 4 /* prev */
            putfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
        17: .line 77
            aload 5
            athrow
        end local 4 // java.io.DataInputStream prev
        end local 3 // byte[] data
        end local 2 // int length
        end local 1 // int name_index
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/sun/tools/classfile/ClassReader;
            1   18     1  name_index  I
            2   18     2      length  I
            4    5     3    attrName  Ljava/lang/String;
            7    8     3    attrName  Ljava/lang/String;
            9   18     3        data  [B
           11   18     4        prev  Ljava/io/DataInputStream;
      Exception table:
        from    to  target  type
           3     4       5  Class com.sun.tools.classfile.ConstantPool$InvalidIndex
           3     4       5  Class com.sun.tools.classfile.ConstantPool$UnexpectedEntry
          12    13      15  any
    Exceptions:
      throws java.io.IOException

  public void readFully(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.classfile.ClassReader this
        start local 1 // byte[] b
         0: .line 81
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            aload 1 /* b */
            invokevirtual java.io.DataInputStream.readFully:([B)V
         1: .line 82
            return
        end local 1 // byte[] b
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/tools/classfile/ClassReader;
            0    2     1     b  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     

  public int readUnsignedByte();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 85
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readUnsignedByte:()I
            ireturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public int readUnsignedShort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 89
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readUnsignedShort:()I
            ireturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public int readInt();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 93
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readInt:()I
            ireturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public long readLong();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 97
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readLong:()J
            lreturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public float readFloat();
    descriptor: ()F
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 101
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readFloat:()F
            freturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public double readDouble();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 105
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readDouble:()D
            dreturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException

  public java.lang.String readUTF();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.tools.classfile.ClassReader this
         0: .line 109
            aload 0 /* this */
            getfield com.sun.tools.classfile.ClassReader.in:Ljava/io/DataInputStream;
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            areturn
        end local 0 // com.sun.tools.classfile.ClassReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/tools/classfile/ClassReader;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "ClassReader.java"
InnerClasses:
  public Factory = com.sun.tools.classfile.Attribute$Factory of com.sun.tools.classfile.Attribute
  public InvalidIndex = com.sun.tools.classfile.ConstantPool$InvalidIndex of com.sun.tools.classfile.ConstantPool
  public UnexpectedEntry = com.sun.tools.classfile.ConstantPool$UnexpectedEntry of com.sun.tools.classfile.ConstantPool