public class org.apache.tomcat.util.buf.B2CConverter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tomcat.util.buf.B2CConverter
  super_class: java.lang.Object
{
  private static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.tomcat.util.buf.CharsetCache charsetCache;
    descriptor: Lorg/apache/tomcat/util/buf/CharsetCache;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected static final int LEFTOVER_SIZE;
    descriptor: I
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  private final java.nio.charset.CharsetDecoder decoder;
    descriptor: Ljava/nio/charset/CharsetDecoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.nio.ByteBuffer bb;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.CharBuffer cb;
    descriptor: Ljava/nio/CharBuffer;
    flags: (0x0002) ACC_PRIVATE

  private final java.nio.ByteBuffer leftovers;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 37
            ldc Lorg/apache/tomcat/util/buf/B2CConverter;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.tomcat.util.buf.B2CConverter.sm:Lorg/apache/tomcat/util/res/StringManager;
         1: .line 39
            new org.apache.tomcat.util.buf.CharsetCache
            dup
            invokespecial org.apache.tomcat.util.buf.CharsetCache.<init>:()V
            putstatic org.apache.tomcat.util.buf.B2CConverter.charsetCache:Lorg/apache/tomcat/util/buf/CharsetCache;
         2: .line 43
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.nio.charset.Charset getCharset(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/charset/Charset;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=3, args_size=1
        start local 0 // java.lang.String enc
         0: .line 58
            aload 0 /* enc */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 1 /* lowerCaseEnc */
        start local 1 // java.lang.String lowerCaseEnc
         1: .line 60
            getstatic org.apache.tomcat.util.buf.B2CConverter.charsetCache:Lorg/apache/tomcat/util/buf/CharsetCache;
            aload 1 /* lowerCaseEnc */
            invokevirtual org.apache.tomcat.util.buf.CharsetCache.getCharset:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            astore 2 /* charset */
        start local 2 // java.nio.charset.Charset charset
         2: .line 62
            aload 2 /* charset */
            ifnonnull 6
         3: .line 64
            new java.io.UnsupportedEncodingException
            dup
         4: .line 65
            getstatic org.apache.tomcat.util.buf.B2CConverter.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "b2cConverter.unknownEncoding"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* lowerCaseEnc */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         5: .line 64
            invokespecial java.io.UnsupportedEncodingException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 67
      StackMap locals: java.lang.String java.nio.charset.Charset
      StackMap stack:
            aload 2 /* charset */
            areturn
        end local 2 // java.nio.charset.Charset charset
        end local 1 // java.lang.String lowerCaseEnc
        end local 0 // java.lang.String enc
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0           enc  Ljava/lang/String;
            1    7     1  lowerCaseEnc  Ljava/lang/String;
            2    7     2       charset  Ljava/nio/charset/Charset;
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
      Name  Flags
      enc   

  public void <init>(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
        start local 1 // java.nio.charset.Charset charset
         0: .line 81
            aload 0 /* this */
            aload 1 /* charset */
            iconst_0
            invokespecial org.apache.tomcat.util.buf.B2CConverter.<init>:(Ljava/nio/charset/Charset;Z)V
         1: .line 82
            return
        end local 1 // java.nio.charset.Charset charset
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/tomcat/util/buf/B2CConverter;
            0    2     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      charset  

  public void <init>(java.nio.charset.Charset, boolean);
    descriptor: (Ljava/nio/charset/Charset;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
        start local 1 // java.nio.charset.Charset charset
        start local 2 // boolean replaceOnError
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 72
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
         2: .line 73
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
         3: .line 85
            bipush 9
            newarray 8
            astore 3 /* left */
        start local 3 // byte[] left
         4: .line 86
            aload 0 /* this */
            aload 3 /* left */
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
         5: .line 88
            iload 2 /* replaceOnError */
            ifeq 8
         6: .line 89
            getstatic java.nio.charset.CodingErrorAction.REPLACE:Ljava/nio/charset/CodingErrorAction;
            astore 4 /* action */
        start local 4 // java.nio.charset.CodingErrorAction action
         7: .line 90
            goto 9
        end local 4 // java.nio.charset.CodingErrorAction action
         8: .line 91
      StackMap locals: org.apache.tomcat.util.buf.B2CConverter java.nio.charset.Charset int byte[]
      StackMap stack:
            getstatic java.nio.charset.CodingErrorAction.REPORT:Ljava/nio/charset/CodingErrorAction;
            astore 4 /* action */
        start local 4 // java.nio.charset.CodingErrorAction action
         9: .line 96
      StackMap locals: java.nio.charset.CodingErrorAction
      StackMap stack:
            aload 1 /* charset */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.equals:(Ljava/lang/Object;)Z
            ifeq 12
        10: .line 97
            aload 0 /* this */
            new org.apache.tomcat.util.buf.Utf8Decoder
            dup
            invokespecial org.apache.tomcat.util.buf.Utf8Decoder.<init>:()V
            putfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
        11: .line 98
            goto 13
        12: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* charset */
            invokevirtual java.nio.charset.Charset.newDecoder:()Ljava/nio/charset/CharsetDecoder;
            putfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
        13: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 4 /* action */
            invokevirtual java.nio.charset.CharsetDecoder.onMalformedInput:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
            pop
        14: .line 102
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 4 /* action */
            invokevirtual java.nio.charset.CharsetDecoder.onUnmappableCharacter:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
            pop
        15: .line 103
            return
        end local 4 // java.nio.charset.CodingErrorAction action
        end local 3 // byte[] left
        end local 2 // boolean replaceOnError
        end local 1 // java.nio.charset.Charset charset
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0            this  Lorg/apache/tomcat/util/buf/B2CConverter;
            0   16     1         charset  Ljava/nio/charset/Charset;
            0   16     2  replaceOnError  Z
            4   16     3            left  [B
            7    8     4          action  Ljava/nio/charset/CodingErrorAction;
            9   16     4          action  Ljava/nio/charset/CodingErrorAction;
    MethodParameters:
                Name  Flags
      charset         
      replaceOnError  

  public void recycle();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
         0: .line 109
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            invokevirtual java.nio.charset.CharsetDecoder.reset:()Ljava/nio/charset/CharsetDecoder;
            pop
         1: .line 110
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         2: .line 111
            return
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/buf/B2CConverter;

  public void convert(org.apache.tomcat.util.buf.ByteChunk, org.apache.tomcat.util.buf.CharChunk, boolean);
    descriptor: (Lorg/apache/tomcat/util/buf/ByteChunk;Lorg/apache/tomcat/util/buf/CharChunk;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
        start local 1 // org.apache.tomcat.util.buf.ByteChunk bc
        start local 2 // org.apache.tomcat.util.buf.CharChunk cc
        start local 3 // boolean endOfInput
         0: .line 124
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            ifnull 1
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBuffer:()[B
            if_acmpeq 3
         1: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBuffer:()[B
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getStart:()I
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getLength:()I
            invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
         2: .line 127
            goto 5
         3: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getEnd:()I
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         4: .line 130
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getStart:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         5: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            ifnull 6
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.array:()[C
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getBuffer:()[C
            if_acmpeq 10
         6: .line 134
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getBuffer:()[C
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getEnd:()I
         7: .line 135
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getBuffer:()[C
            arraylength
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getEnd:()I
            isub
         8: .line 134
            invokestatic java.nio.CharBuffer.wrap:([CII)Ljava/nio/CharBuffer;
            putfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
         9: .line 136
            goto 12
        10: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getBuffer:()[C
            arraylength
            invokevirtual java.nio.CharBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        11: .line 139
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            aload 2 /* cc */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.getEnd:()I
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        12: .line 141
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* result */
        start local 4 // java.nio.charset.CoderResult result
        13: .line 143
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 25
        14: .line 144
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            istore 5 /* pos */
        start local 5 // int pos
        15: .line 147
      StackMap locals: java.nio.charset.CoderResult int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.subtractB:()B
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        16: .line 148
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        17: .line 149
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            iload 3 /* endOfInput */
            invokevirtual java.nio.charset.CharsetDecoder.decode:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 4 /* result */
        18: .line 150
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        19: .line 151
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            arraylength
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        20: .line 152
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 21
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            iload 5 /* pos */
            if_icmpeq 15
        21: .line 153
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifne 22
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isMalformed:()Z
            ifeq 23
        22: .line 154
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        23: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getStart:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        24: .line 157
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 5 // int pos
        25: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            iload 3 /* endOfInput */
            invokevirtual java.nio.charset.CharsetDecoder.decode:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 4 /* result */
        26: .line 162
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifne 27
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isMalformed:()Z
            ifeq 29
        27: .line 163
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        28: .line 164
            goto 40
      StackMap locals:
      StackMap stack:
        29: aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isOverflow:()Z
            ifeq 33
        30: .line 167
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.setOffset:(I)V
        31: .line 168
            aload 2 /* cc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            invokevirtual org.apache.tomcat.util.buf.CharChunk.setEnd:(I)V
        32: .line 169
            goto 40
      StackMap locals:
      StackMap stack:
        33: aload 4 /* result */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 40
        34: .line 171
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.setOffset:(I)V
        35: .line 172
            aload 2 /* cc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            invokevirtual org.apache.tomcat.util.buf.CharChunk.setEnd:(I)V
        36: .line 174
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getLength:()I
            ifle 40
        37: .line 175
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            arraylength
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        38: .line 176
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getLength:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        39: .line 177
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            aload 1 /* bc */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getLength:()I
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.subtract:([BII)I
            pop
        40: .line 180
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.nio.charset.CoderResult result
        end local 3 // boolean endOfInput
        end local 2 // org.apache.tomcat.util.buf.CharChunk cc
        end local 1 // org.apache.tomcat.util.buf.ByteChunk bc
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   41     0        this  Lorg/apache/tomcat/util/buf/B2CConverter;
            0   41     1          bc  Lorg/apache/tomcat/util/buf/ByteChunk;
            0   41     2          cc  Lorg/apache/tomcat/util/buf/CharChunk;
            0   41     3  endOfInput  Z
           13   41     4      result  Ljava/nio/charset/CoderResult;
           15   25     5         pos  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      bc          
      cc          
      endOfInput  

  public void convert(java.nio.ByteBuffer, java.nio.CharBuffer, org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel, boolean);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Lorg/apache/tomcat/util/buf/ByteChunk$ByteInputChannel;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
        start local 1 // java.nio.ByteBuffer bc
        start local 2 // java.nio.CharBuffer cc
        start local 3 // org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel ic
        start local 4 // boolean endOfInput
         0: .line 194
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            ifnull 1
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.array:()[B
            if_acmpeq 3
         1: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.array:()[B
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.position:()I
            iadd
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
            putfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
         2: .line 197
            goto 5
         3: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         4: .line 200
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         5: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            ifnull 6
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.array:()[C
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.array:()[C
            if_acmpeq 8
         6: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.array:()[C
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.limit:()I
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.capacity:()I
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.limit:()I
            isub
            invokestatic java.nio.CharBuffer.wrap:([CII)Ljava/nio/CharBuffer;
            putfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
         7: .line 205
            goto 10
         8: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.capacity:()I
            invokevirtual java.nio.CharBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         9: .line 208
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            aload 2 /* cc */
            invokevirtual java.nio.CharBuffer.limit:()I
            invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/Buffer;
            pop
        10: .line 210
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* result */
        start local 5 // java.nio.charset.CoderResult result
        11: .line 212
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 30
        12: .line 213
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            istore 6 /* pos */
        start local 6 // int pos
        13: .line 217
      StackMap locals: java.nio.charset.CoderResult int
      StackMap stack:
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 19
        14: .line 218
            aload 3 /* ic */
            invokeinterface org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel.realReadBytes:()I
            istore 8 /* n */
        start local 8 // int n
        15: .line 219
            iload 8 /* n */
            ifge 16
            iconst_m1
            goto 17
      StackMap locals: org.apache.tomcat.util.buf.B2CConverter java.nio.ByteBuffer java.nio.CharBuffer org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel int java.nio.charset.CoderResult int top int
      StackMap stack:
        16: aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.get:()B
      StackMap locals:
      StackMap stack: int
        17: istore 7 /* chr */
        end local 8 // int n
        start local 7 // byte chr
        18: .line 220
            goto 20
        end local 7 // byte chr
        19: .line 221
      StackMap locals: org.apache.tomcat.util.buf.B2CConverter java.nio.ByteBuffer java.nio.CharBuffer org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel int java.nio.charset.CoderResult int
      StackMap stack:
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.get:()B
            istore 7 /* chr */
        start local 7 // byte chr
        20: .line 223
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            iload 7 /* chr */
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        21: .line 224
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        22: .line 225
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            iload 4 /* endOfInput */
            invokevirtual java.nio.charset.CharsetDecoder.decode:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 5 /* result */
        23: .line 226
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        24: .line 227
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            arraylength
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        end local 7 // byte chr
        25: .line 228
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 26
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            iload 6 /* pos */
            if_icmpeq 13
        26: .line 229
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifne 27
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isMalformed:()Z
            ifeq 28
        27: .line 230
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        28: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        29: .line 233
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 6 // int pos
        30: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            iload 4 /* endOfInput */
            invokevirtual java.nio.charset.CharsetDecoder.decode:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 5 /* result */
        31: .line 238
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isError:()Z
            ifne 32
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isMalformed:()Z
            ifeq 34
        32: .line 239
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        33: .line 240
            goto 45
      StackMap locals:
      StackMap stack:
        34: aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isOverflow:()Z
            ifeq 38
        35: .line 243
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        36: .line 244
            aload 2 /* cc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            invokevirtual java.nio.CharBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        37: .line 245
            goto 45
      StackMap locals:
      StackMap stack:
        38: aload 5 /* result */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifeq 45
        39: .line 247
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.bb:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        40: .line 248
            aload 2 /* cc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.cb:Ljava/nio/CharBuffer;
            invokevirtual java.nio.CharBuffer.position:()I
            invokevirtual java.nio.CharBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        41: .line 250
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 45
        42: .line 251
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            arraylength
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        43: .line 252
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        44: .line 253
            aload 1 /* bc */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.leftovers:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            aload 1 /* bc */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        45: .line 256
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.nio.charset.CoderResult result
        end local 4 // boolean endOfInput
        end local 3 // org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel ic
        end local 2 // java.nio.CharBuffer cc
        end local 1 // java.nio.ByteBuffer bc
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   46     0        this  Lorg/apache/tomcat/util/buf/B2CConverter;
            0   46     1          bc  Ljava/nio/ByteBuffer;
            0   46     2          cc  Ljava/nio/CharBuffer;
            0   46     3          ic  Lorg/apache/tomcat/util/buf/ByteChunk$ByteInputChannel;
            0   46     4  endOfInput  Z
           11   46     5      result  Ljava/nio/charset/CoderResult;
           13   30     6         pos  I
           18   19     7         chr  B
           20   25     7         chr  B
           15   18     8           n  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      bc          
      cc          
      ic          
      endOfInput  

  public java.nio.charset.Charset getCharset();
    descriptor: ()Ljava/nio/charset/Charset;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.buf.B2CConverter this
         0: .line 260
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.B2CConverter.decoder:Ljava/nio/charset/CharsetDecoder;
            invokevirtual java.nio.charset.CharsetDecoder.charset:()Ljava/nio/charset/Charset;
            areturn
        end local 0 // org.apache.tomcat.util.buf.B2CConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/buf/B2CConverter;
}
SourceFile: "B2CConverter.java"
InnerClasses:
  public abstract ByteInputChannel = org.apache.tomcat.util.buf.ByteChunk$ByteInputChannel of org.apache.tomcat.util.buf.ByteChunk