final class jdk.internal.net.http.hpack.StringReader
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.internal.net.http.hpack.StringReader
  super_class: java.lang.Object
{
  private static final int NEW;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int FIRST_BYTE_READ;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int LENGTH_READ;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int DONE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private final jdk.internal.net.http.hpack.IntegerReader intReader;
    descriptor: Ljdk/internal/net/http/hpack/IntegerReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.hpack.Huffman$Reader huffmanReader;
    descriptor: Ljdk/internal/net/http/hpack/Huffman$Reader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.net.http.hpack.ISO_8859_1$Reader plainReader;
    descriptor: Ljdk/internal/net/http/hpack/ISO_8859_1$Reader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private boolean huffman;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.hpack.StringReader this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
            new jdk.internal.net.http.hpack.IntegerReader
            dup
            invokespecial jdk.internal.net.http.hpack.IntegerReader.<init>:()V
            putfield jdk.internal.net.http.hpack.StringReader.intReader:Ljdk/internal/net/http/hpack/IntegerReader;
         2: .line 47
            aload 0 /* this */
            new jdk.internal.net.http.hpack.QuickHuffman$Reader
            dup
            invokespecial jdk.internal.net.http.hpack.QuickHuffman$Reader.<init>:()V
            putfield jdk.internal.net.http.hpack.StringReader.huffmanReader:Ljdk/internal/net/http/hpack/Huffman$Reader;
         3: .line 48
            aload 0 /* this */
            new jdk.internal.net.http.hpack.ISO_8859_1$Reader
            dup
            invokespecial jdk.internal.net.http.hpack.ISO_8859_1$Reader.<init>:()V
            putfield jdk.internal.net.http.hpack.StringReader.plainReader:Ljdk/internal/net/http/hpack/ISO_8859_1$Reader;
         4: .line 50
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.hpack.StringReader.state:I
         5: .line 39
            return
        end local 0 // jdk.internal.net.http.hpack.StringReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/internal/net/http/hpack/StringReader;

  boolean read(java.nio.ByteBuffer, java.lang.Appendable);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/lang/Appendable;)Z
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // jdk.internal.net.http.hpack.StringReader this
        start local 1 // java.nio.ByteBuffer input
        start local 2 // java.lang.Appendable output
         0: .line 56
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            iconst_4
            if_icmpne 2
         1: .line 57
            iconst_1
            ireturn
         2: .line 59
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 4
         3: .line 60
            iconst_0
            ireturn
         4: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            ifne 11
         5: .line 63
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 3 /* p */
        start local 3 // int p
         6: .line 64
            aload 0 /* this */
            aload 1 /* input */
            iload 3 /* p */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            sipush 128
            iand
            ifeq 7
            iconst_1
            goto 8
      StackMap locals: jdk.internal.net.http.hpack.StringReader java.nio.ByteBuffer java.lang.Appendable int
      StackMap stack: jdk.internal.net.http.hpack.StringReader
         7: iconst_0
      StackMap locals: jdk.internal.net.http.hpack.StringReader java.nio.ByteBuffer java.lang.Appendable int
      StackMap stack: jdk.internal.net.http.hpack.StringReader int
         8: putfield jdk.internal.net.http.hpack.StringReader.huffman:Z
         9: .line 65
            aload 0 /* this */
            iconst_1
            putfield jdk.internal.net.http.hpack.StringReader.state:I
        10: .line 66
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.intReader:Ljdk/internal/net/http/hpack/IntegerReader;
            bipush 7
            invokevirtual jdk.internal.net.http.hpack.IntegerReader.configure:(I)Ljdk/internal/net/http/hpack/IntegerReader;
            pop
        end local 3 // int p
        11: .line 68
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            iconst_1
            if_icmpne 17
        12: .line 69
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.intReader:Ljdk/internal/net/http/hpack/IntegerReader;
            aload 1 /* input */
            invokevirtual jdk.internal.net.http.hpack.IntegerReader.read:(Ljava/nio/ByteBuffer;)Z
            istore 3 /* lengthRead */
        start local 3 // boolean lengthRead
        13: .line 70
            iload 3 /* lengthRead */
            ifne 15
        14: .line 71
            iconst_0
            ireturn
        15: .line 73
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.intReader:Ljdk/internal/net/http/hpack/IntegerReader;
            invokevirtual jdk.internal.net.http.hpack.IntegerReader.get:()I
            putfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
        16: .line 74
            aload 0 /* this */
            iconst_2
            putfield jdk.internal.net.http.hpack.StringReader.state:I
        end local 3 // boolean lengthRead
        17: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            iconst_2
            if_icmpne 33
        18: .line 77
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
            if_icmplt 19
            iconst_1
            goto 20
      StackMap locals:
      StackMap stack:
        19: iconst_0
      StackMap locals:
      StackMap stack: int
        20: istore 3 /* isLast */
        start local 3 // boolean isLast
        21: .line 78
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 4 /* oldLimit */
        start local 4 // int oldLimit
        22: .line 79
            iload 3 /* isLast */
            ifeq 24
        23: .line 80
            aload 1 /* input */
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
        24: .line 82
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
            invokestatic java.lang.Math.min:(II)I
            isub
            putfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
        25: .line 83
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffman:Z
            ifeq 28
        26: .line 84
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffmanReader:Ljdk/internal/net/http/hpack/Huffman$Reader;
            aload 1 /* input */
            aload 2 /* output */
            iload 3 /* isLast */
            invokeinterface jdk.internal.net.http.hpack.Huffman$Reader.read:(Ljava/nio/ByteBuffer;Ljava/lang/Appendable;Z)V
        27: .line 85
            goto 29
        28: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.plainReader:Ljdk/internal/net/http/hpack/ISO_8859_1$Reader;
            aload 1 /* input */
            aload 2 /* output */
            invokevirtual jdk.internal.net.http.hpack.ISO_8859_1$Reader.read:(Ljava/nio/ByteBuffer;Ljava/lang/Appendable;)V
        29: .line 88
      StackMap locals:
      StackMap stack:
            iload 3 /* isLast */
            ifeq 32
        30: .line 89
            aload 1 /* input */
            iload 4 /* oldLimit */
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
            pop
        31: .line 90
            aload 0 /* this */
            iconst_4
            putfield jdk.internal.net.http.hpack.StringReader.state:I
        32: .line 92
      StackMap locals:
      StackMap stack:
            iload 3 /* isLast */
            ireturn
        end local 4 // int oldLimit
        end local 3 // boolean isLast
        33: .line 94
      StackMap locals:
      StackMap stack:
            new java.lang.InternalError
            dup
        34: .line 95
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffman:Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.remainingLength:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        35: .line 94
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Appendable output
        end local 1 // java.nio.ByteBuffer input
        end local 0 // jdk.internal.net.http.hpack.StringReader this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   36     0        this  Ljdk/internal/net/http/hpack/StringReader;
            0   36     1       input  Ljava/nio/ByteBuffer;
            0   36     2      output  Ljava/lang/Appendable;
            6   11     3           p  I
           13   17     3  lengthRead  Z
           21   33     3      isLast  Z
           22   33     4    oldLimit  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      input   
      output  

  boolean isHuffmanEncoded();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.hpack.StringReader this
         0: .line 99
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.state:I
            iconst_1
            if_icmpge 2
         1: .line 100
            new java.lang.IllegalStateException
            dup
            ldc "Has not been fully read yet"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffman:Z
            ireturn
        end local 0 // jdk.internal.net.http.hpack.StringReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/internal/net/http/hpack/StringReader;

  void reset();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.hpack.StringReader this
         0: .line 106
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffman:Z
            ifeq 3
         1: .line 107
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.huffmanReader:Ljdk/internal/net/http/hpack/Huffman$Reader;
            invokeinterface jdk.internal.net.http.hpack.Huffman$Reader.reset:()V
         2: .line 108
            goto 4
         3: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.plainReader:Ljdk/internal/net/http/hpack/ISO_8859_1$Reader;
            invokevirtual jdk.internal.net.http.hpack.ISO_8859_1$Reader.reset:()Ljdk/internal/net/http/hpack/ISO_8859_1$Reader;
            pop
         4: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.net.http.hpack.StringReader.intReader:Ljdk/internal/net/http/hpack/IntegerReader;
            invokevirtual jdk.internal.net.http.hpack.IntegerReader.reset:()Ljdk/internal/net/http/hpack/IntegerReader;
            pop
         5: .line 112
            aload 0 /* this */
            iconst_0
            putfield jdk.internal.net.http.hpack.StringReader.state:I
         6: .line 113
            return
        end local 0 // jdk.internal.net.http.hpack.StringReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/internal/net/http/hpack/StringReader;
}
SourceFile: "StringReader.java"
InnerClasses:
  public abstract Reader = jdk.internal.net.http.hpack.Huffman$Reader of jdk.internal.net.http.hpack.Huffman
  public final Reader = jdk.internal.net.http.hpack.ISO_8859_1$Reader of jdk.internal.net.http.hpack.ISO_8859_1
  final Reader = jdk.internal.net.http.hpack.QuickHuffman$Reader of jdk.internal.net.http.hpack.QuickHuffman