class java.lang.StringCoding
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.lang.StringCoding
  super_class: java.lang.Object
{
  private static final java.lang.ThreadLocal<java.lang.ref.SoftReference<java.lang.StringCoding$StringDecoder>> decoder;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringDecoder;>;>;

  private static final java.lang.ThreadLocal<java.lang.ref.SoftReference<java.lang.StringCoding$StringEncoder>> encoder;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/lang/StringCoding$StringEncoder;>;>;

  private static boolean warnUnsupportedCharset;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
         1: .line 55
            putstatic java.lang.StringCoding.decoder:Ljava/lang/ThreadLocal;
         2: .line 58
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
         3: .line 57
            putstatic java.lang.StringCoding.encoder:Ljava/lang/ThreadLocal;
         4: .line 60
            iconst_1
            putstatic java.lang.StringCoding.warnUnsupportedCharset:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.StringCoding this
         0: .line 52
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // java.lang.StringCoding this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/StringCoding;

  private static <T> T deref(java.lang.ThreadLocal<java.lang.ref.SoftReference<T>>);
    descriptor: (Ljava/lang/ThreadLocal;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.lang.ThreadLocal tl
         0: .line 63
            aload 0 /* tl */
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.lang.ref.SoftReference
            astore 1 /* sr */
        start local 1 // java.lang.ref.SoftReference sr
         1: .line 64
            aload 1 /* sr */
            ifnonnull 3
         2: .line 65
            aconst_null
            areturn
         3: .line 66
      StackMap locals: java.lang.ref.SoftReference
      StackMap stack:
            aload 1 /* sr */
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            areturn
        end local 1 // java.lang.ref.SoftReference sr
        end local 0 // java.lang.ThreadLocal tl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    tl  Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;
            1    4     1    sr  Ljava/lang/ref/SoftReference<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;)TT;
    MethodParameters:
      Name  Flags
      tl    

  private static <T> void set(java.lang.ThreadLocal<java.lang.ref.SoftReference<T>>, );
    descriptor: (Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.ThreadLocal tl
        start local 1 // java.lang.Object ob
         0: .line 70
            aload 0 /* tl */
            new java.lang.ref.SoftReference
            dup
            aload 1 /* ob */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         1: .line 71
            return
        end local 1 // java.lang.Object ob
        end local 0 // java.lang.ThreadLocal tl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0    tl  Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;
            0    2     1    ob  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<TT;>;>;TT;)V
    MethodParameters:
      Name  Flags
      tl    
      ob    

  private static byte[] safeTrim(byte[], int, java.nio.charset.Charset, boolean);
    descriptor: ([BILjava/nio/charset/Charset;Z)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // byte[] ba
        start local 1 // int len
        start local 2 // java.nio.charset.Charset cs
        start local 3 // boolean isTrusted
         0: .line 76
            iload 1 /* len */
            aload 0 /* ba */
            arraylength
            if_icmpne 2
            iload 3 /* isTrusted */
            ifne 1
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnonnull 2
         1: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* ba */
            areturn
         2: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* ba */
            iload 1 /* len */
            invokestatic java.util.Arrays.copyOf:([BI)[B
            areturn
        end local 3 // boolean isTrusted
        end local 2 // java.nio.charset.Charset cs
        end local 1 // int len
        end local 0 // byte[] ba
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0         ba  [B
            0    3     1        len  I
            0    3     2         cs  Ljava/nio/charset/Charset;
            0    3     3  isTrusted  Z
    MethodParameters:
           Name  Flags
      ba         
      len        
      cs         
      isTrusted  

  private static char[] safeTrim(char[], int, java.nio.charset.Charset, boolean);
    descriptor: ([CILjava/nio/charset/Charset;Z)[C
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // char[] ca
        start local 1 // int len
        start local 2 // java.nio.charset.Charset cs
        start local 3 // boolean isTrusted
         0: .line 86
            iload 1 /* len */
            aload 0 /* ca */
            arraylength
            if_icmpne 2
            iload 3 /* isTrusted */
            ifne 1
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnonnull 2
         1: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* ca */
            areturn
         2: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* ca */
            iload 1 /* len */
            invokestatic java.util.Arrays.copyOf:([CI)[C
            areturn
        end local 3 // boolean isTrusted
        end local 2 // java.nio.charset.Charset cs
        end local 1 // int len
        end local 0 // char[] ca
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0         ca  [C
            0    3     1        len  I
            0    3     2         cs  Ljava/nio/charset/Charset;
            0    3     3  isTrusted  Z
    MethodParameters:
           Name  Flags
      ca         
      len        
      cs         
      isTrusted  

  private static int scale(int, float);
    descriptor: (IF)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int len
        start local 1 // float expansionFactor
         0: .line 95
            iload 0 /* len */
            i2d
            fload 1 /* expansionFactor */
            f2d
            dmul
            d2i
            ireturn
        end local 1 // float expansionFactor
        end local 0 // int len
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0              len  I
            0    1     1  expansionFactor  F
    MethodParameters:
                 Name  Flags
      len              
      expansionFactor  

  private static java.nio.charset.Charset lookupCharset(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/nio/charset/Charset;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String csn
         0: .line 99
            aload 0 /* csn */
            invokestatic java.nio.charset.Charset.isSupported:(Ljava/lang/String;)Z
            ifeq 5
         1: .line 101
            aload 0 /* csn */
            invokestatic java.nio.charset.Charset.forName:(Ljava/lang/String;)Ljava/nio/charset/Charset;
         2: areturn
         3: .line 102
      StackMap locals:
      StackMap stack: java.nio.charset.UnsupportedCharsetException
            astore 1 /* x */
        start local 1 // java.nio.charset.UnsupportedCharsetException x
         4: .line 103
            new java.lang.Error
            dup
            aload 1 /* x */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.nio.charset.UnsupportedCharsetException x
         5: .line 106
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String csn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   csn  Ljava/lang/String;
            4    5     1     x  Ljava/nio/charset/UnsupportedCharsetException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.nio.charset.UnsupportedCharsetException
    MethodParameters:
      Name  Flags
      csn   

  private static void warnUnsupportedCharset(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String csn
         0: .line 110
            getstatic java.lang.StringCoding.warnUnsupportedCharset:Z
            ifeq 5
         1: .line 114
            new java.lang.StringBuilder
            dup
            ldc "WARNING: Default charset "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* csn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 115
            ldc " not supported, using ISO-8859-1 instead"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 114
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic sun.misc.MessageUtils.err:(Ljava/lang/String;)V
         4: .line 116
            iconst_0
            putstatic java.lang.StringCoding.warnUnsupportedCharset:Z
         5: .line 118
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String csn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   csn  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      csn   

  static char[] decode(java.lang.String, byte[], int, int);
    descriptor: (Ljava/lang/String;[BII)[C
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // java.lang.String charsetName
        start local 1 // byte[] ba
        start local 2 // int off
        start local 3 // int len
         0: .line 179
            getstatic java.lang.StringCoding.decoder:Ljava/lang/ThreadLocal;
            invokestatic java.lang.StringCoding.deref:(Ljava/lang/ThreadLocal;)Ljava/lang/Object;
            checkcast java.lang.StringCoding$StringDecoder
            astore 4 /* sd */
        start local 4 // java.lang.StringCoding$StringDecoder sd
         1: .line 180
            aload 0 /* charsetName */
            ifnonnull 2
            ldc "ISO-8859-1"
            goto 3
      StackMap locals: java.lang.StringCoding$StringDecoder
      StackMap stack:
         2: aload 0 /* charsetName */
      StackMap locals:
      StackMap stack: java.lang.String
         3: astore 5 /* csn */
        start local 5 // java.lang.String csn
         4: .line 181
            aload 4 /* sd */
            ifnull 6
            aload 5 /* csn */
            aload 4 /* sd */
            invokevirtual java.lang.StringCoding$StringDecoder.requestedCharsetName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
         5: .line 182
            aload 5 /* csn */
            aload 4 /* sd */
            invokevirtual java.lang.StringCoding$StringDecoder.charsetName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
         6: .line 183
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            astore 4 /* sd */
         7: .line 185
            aload 5 /* csn */
            invokestatic java.lang.StringCoding.lookupCharset:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            astore 6 /* cs */
        start local 6 // java.nio.charset.Charset cs
         8: .line 186
            aload 6 /* cs */
            ifnull 12
         9: .line 187
            new java.lang.StringCoding$StringDecoder
            dup
            aload 6 /* cs */
            aload 5 /* csn */
            invokespecial java.lang.StringCoding$StringDecoder.<init>:(Ljava/nio/charset/Charset;Ljava/lang/String;)V
            astore 4 /* sd */
        end local 6 // java.nio.charset.Charset cs
        10: .line 188
            goto 12
      StackMap locals:
      StackMap stack: java.nio.charset.IllegalCharsetNameException
        11: pop
        12: .line 189
      StackMap locals:
      StackMap stack:
            aload 4 /* sd */
            ifnonnull 14
        13: .line 190
            new java.io.UnsupportedEncodingException
            dup
            aload 5 /* csn */
            invokespecial java.io.UnsupportedEncodingException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 191
      StackMap locals:
      StackMap stack:
            getstatic java.lang.StringCoding.decoder:Ljava/lang/ThreadLocal;
            aload 4 /* sd */
            invokestatic java.lang.StringCoding.set:(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
        15: .line 193
      StackMap locals:
      StackMap stack:
            aload 4 /* sd */
            aload 1 /* ba */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual java.lang.StringCoding$StringDecoder.decode:([BII)[C
            areturn
        end local 5 // java.lang.String csn
        end local 4 // java.lang.StringCoding$StringDecoder sd
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] ba
        end local 0 // java.lang.String charsetName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0  charsetName  Ljava/lang/String;
            0   16     1           ba  [B
            0   16     2          off  I
            0   16     3          len  I
            1   16     4           sd  Ljava/lang/StringCoding$StringDecoder;
            4   16     5          csn  Ljava/lang/String;
            8   10     6           cs  Ljava/nio/charset/Charset;
      Exception table:
        from    to  target  type
           7    10      11  Class java.nio.charset.IllegalCharsetNameException
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
             Name  Flags
      charsetName  
      ba           
      off          
      len          

  static char[] decode(java.nio.charset.Charset, byte[], int, int);
    descriptor: (Ljava/nio/charset/Charset;[BII)[C
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // java.nio.charset.Charset cs
        start local 1 // byte[] ba
        start local 2 // int off
        start local 3 // int len
         0: .line 213
            aload 0 /* cs */
            invokevirtual java.nio.charset.Charset.newDecoder:()Ljava/nio/charset/CharsetDecoder;
            astore 4 /* cd */
        start local 4 // java.nio.charset.CharsetDecoder cd
         1: .line 214
            iload 3 /* len */
            aload 4 /* cd */
            invokevirtual java.nio.charset.CharsetDecoder.maxCharsPerByte:()F
            invokestatic java.lang.StringCoding.scale:(IF)I
            istore 5 /* en */
        start local 5 // int en
         2: .line 215
            iload 5 /* en */
            newarray 5
            astore 6 /* ca */
        start local 6 // char[] ca
         3: .line 216
            iload 3 /* len */
            ifne 5
         4: .line 217
            aload 6 /* ca */
            areturn
         5: .line 218
      StackMap locals: java.nio.charset.CharsetDecoder int char[]
      StackMap stack:
            iconst_0
            istore 7 /* isTrusted */
        start local 7 // boolean isTrusted
         6: .line 219
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 12
         7: .line 220
            aload 0 /* cs */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader0:()Ljava/lang/ClassLoader;
            ifnonnull 8
            iconst_1
            goto 9
      StackMap locals: int
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: dup
            istore 7 /* isTrusted */
            ifne 12
        10: .line 221
            aload 1 /* ba */
            iload 2 /* off */
            iload 2 /* off */
            iload 3 /* len */
            iadd
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            astore 1 /* ba */
        11: .line 222
            iconst_0
            istore 2 /* off */
        12: .line 225
      StackMap locals:
      StackMap stack:
            aload 4 /* cd */
            getstatic java.nio.charset.CodingErrorAction.REPLACE:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetDecoder.onMalformedInput:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
        13: .line 226
            getstatic java.nio.charset.CodingErrorAction.REPLACE:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetDecoder.onUnmappableCharacter:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
        14: .line 227
            invokevirtual java.nio.charset.CharsetDecoder.reset:()Ljava/nio/charset/CharsetDecoder;
            pop
        15: .line 228
            aload 4 /* cd */
            instanceof sun.nio.cs.ArrayDecoder
            ifeq 18
        16: .line 229
            aload 4 /* cd */
            checkcast sun.nio.cs.ArrayDecoder
            aload 1 /* ba */
            iload 2 /* off */
            iload 3 /* len */
            aload 6 /* ca */
            invokeinterface sun.nio.cs.ArrayDecoder.decode:([BII[C)I
            istore 8 /* clen */
        start local 8 // int clen
        17: .line 230
            aload 6 /* ca */
            iload 8 /* clen */
            aload 0 /* cs */
            iload 7 /* isTrusted */
            invokestatic java.lang.StringCoding.safeTrim:([CILjava/nio/charset/Charset;Z)[C
            areturn
        end local 8 // int clen
        18: .line 232
      StackMap locals:
      StackMap stack:
            aload 1 /* ba */
            iload 2 /* off */
            iload 3 /* len */
            invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
            astore 8 /* bb */
        start local 8 // java.nio.ByteBuffer bb
        19: .line 233
            aload 6 /* ca */
            invokestatic java.nio.CharBuffer.wrap:([C)Ljava/nio/CharBuffer;
            astore 9 /* cb */
        start local 9 // java.nio.CharBuffer cb
        20: .line 235
            aload 4 /* cd */
            aload 8 /* bb */
            aload 9 /* cb */
            iconst_1
            invokevirtual java.nio.charset.CharsetDecoder.decode:(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 10 /* cr */
        start local 10 // java.nio.charset.CoderResult cr
        21: .line 236
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifne 23
        22: .line 237
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        23: .line 238
      StackMap locals: java.nio.ByteBuffer java.nio.CharBuffer java.nio.charset.CoderResult
      StackMap stack:
            aload 4 /* cd */
            aload 9 /* cb */
            invokevirtual java.nio.charset.CharsetDecoder.flush:(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
            astore 10 /* cr */
        24: .line 239
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifne 29
        25: .line 240
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        end local 10 // java.nio.charset.CoderResult cr
        26: .line 241
            goto 29
      StackMap locals: java.nio.charset.Charset byte[] int int java.nio.charset.CharsetDecoder int char[] int java.nio.ByteBuffer java.nio.CharBuffer
      StackMap stack: java.nio.charset.CharacterCodingException
        27: astore 10 /* x */
        start local 10 // java.nio.charset.CharacterCodingException x
        28: .line 244
            new java.lang.Error
            dup
            aload 10 /* x */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.nio.charset.CharacterCodingException x
        29: .line 246
      StackMap locals:
      StackMap stack:
            aload 6 /* ca */
            aload 9 /* cb */
            invokevirtual java.nio.CharBuffer.position:()I
            aload 0 /* cs */
            iload 7 /* isTrusted */
            invokestatic java.lang.StringCoding.safeTrim:([CILjava/nio/charset/Charset;Z)[C
            areturn
        end local 9 // java.nio.CharBuffer cb
        end local 8 // java.nio.ByteBuffer bb
        end local 7 // boolean isTrusted
        end local 6 // char[] ca
        end local 5 // int en
        end local 4 // java.nio.charset.CharsetDecoder cd
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] ba
        end local 0 // java.nio.charset.Charset cs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   30     0         cs  Ljava/nio/charset/Charset;
            0   30     1         ba  [B
            0   30     2        off  I
            0   30     3        len  I
            1   30     4         cd  Ljava/nio/charset/CharsetDecoder;
            2   30     5         en  I
            3   30     6         ca  [C
            6   30     7  isTrusted  Z
           17   18     8       clen  I
           19   30     8         bb  Ljava/nio/ByteBuffer;
           20   30     9         cb  Ljava/nio/CharBuffer;
           21   26    10         cr  Ljava/nio/charset/CoderResult;
           28   29    10          x  Ljava/nio/charset/CharacterCodingException;
      Exception table:
        from    to  target  type
          20    26      27  Class java.nio.charset.CharacterCodingException
    MethodParameters:
      Name  Flags
      cs    
      ba    
      off   
      len   

  static char[] decode(byte[], int, int);
    descriptor: ([BII)[C
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // byte[] ba
        start local 1 // int off
        start local 2 // int len
         0: .line 251
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
            astore 3 /* csn */
        start local 3 // java.lang.String csn
         1: .line 254
            aload 3 /* csn */
            aload 0 /* ba */
            iload 1 /* off */
            iload 2 /* len */
            invokestatic java.lang.StringCoding.decode:(Ljava/lang/String;[BII)[C
         2: areturn
         3: .line 255
      StackMap locals: byte[] int int java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
            pop
         4: .line 256
            aload 3 /* csn */
            invokestatic java.lang.StringCoding.warnUnsupportedCharset:(Ljava/lang/String;)V
         5: .line 259
            ldc "ISO-8859-1"
            aload 0 /* ba */
            iload 1 /* off */
            iload 2 /* len */
            invokestatic java.lang.StringCoding.decode:(Ljava/lang/String;[BII)[C
         6: areturn
         7: .line 260
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 4 /* x */
        start local 4 // java.io.UnsupportedEncodingException x
         8: .line 263
            new java.lang.StringBuilder
            dup
            ldc "ISO-8859-1 charset not available: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 264
            aload 4 /* x */
            invokevirtual java.io.UnsupportedEncodingException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 263
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic sun.misc.MessageUtils.err:(Ljava/lang/String;)V
        11: .line 267
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        12: .line 268
            aconst_null
            areturn
        end local 4 // java.io.UnsupportedEncodingException x
        end local 3 // java.lang.String csn
        end local 2 // int len
        end local 1 // int off
        end local 0 // byte[] ba
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0    ba  [B
            0   13     1   off  I
            0   13     2   len  I
            1   13     3   csn  Ljava/lang/String;
            8   13     4     x  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.UnsupportedEncodingException
           5     6       7  Class java.io.UnsupportedEncodingException
    MethodParameters:
      Name  Flags
      ba    
      off   
      len   

  static byte[] encode(java.lang.String, char[], int, int);
    descriptor: (Ljava/lang/String;[CII)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // java.lang.String charsetName
        start local 1 // char[] ca
        start local 2 // int off
        start local 3 // int len
         0: .line 330
            getstatic java.lang.StringCoding.encoder:Ljava/lang/ThreadLocal;
            invokestatic java.lang.StringCoding.deref:(Ljava/lang/ThreadLocal;)Ljava/lang/Object;
            checkcast java.lang.StringCoding$StringEncoder
            astore 4 /* se */
        start local 4 // java.lang.StringCoding$StringEncoder se
         1: .line 331
            aload 0 /* charsetName */
            ifnonnull 2
            ldc "ISO-8859-1"
            goto 3
      StackMap locals: java.lang.StringCoding$StringEncoder
      StackMap stack:
         2: aload 0 /* charsetName */
      StackMap locals:
      StackMap stack: java.lang.String
         3: astore 5 /* csn */
        start local 5 // java.lang.String csn
         4: .line 332
            aload 4 /* se */
            ifnull 6
            aload 5 /* csn */
            aload 4 /* se */
            invokevirtual java.lang.StringCoding$StringEncoder.requestedCharsetName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
         5: .line 333
            aload 5 /* csn */
            aload 4 /* se */
            invokevirtual java.lang.StringCoding$StringEncoder.charsetName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 15
         6: .line 334
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            astore 4 /* se */
         7: .line 336
            aload 5 /* csn */
            invokestatic java.lang.StringCoding.lookupCharset:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            astore 6 /* cs */
        start local 6 // java.nio.charset.Charset cs
         8: .line 337
            aload 6 /* cs */
            ifnull 12
         9: .line 338
            new java.lang.StringCoding$StringEncoder
            dup
            aload 6 /* cs */
            aload 5 /* csn */
            invokespecial java.lang.StringCoding$StringEncoder.<init>:(Ljava/nio/charset/Charset;Ljava/lang/String;)V
            astore 4 /* se */
        end local 6 // java.nio.charset.Charset cs
        10: .line 339
            goto 12
      StackMap locals:
      StackMap stack: java.nio.charset.IllegalCharsetNameException
        11: pop
        12: .line 340
      StackMap locals:
      StackMap stack:
            aload 4 /* se */
            ifnonnull 14
        13: .line 341
            new java.io.UnsupportedEncodingException
            dup
            aload 5 /* csn */
            invokespecial java.io.UnsupportedEncodingException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 342
      StackMap locals:
      StackMap stack:
            getstatic java.lang.StringCoding.encoder:Ljava/lang/ThreadLocal;
            aload 4 /* se */
            invokestatic java.lang.StringCoding.set:(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
        15: .line 344
      StackMap locals:
      StackMap stack:
            aload 4 /* se */
            aload 1 /* ca */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual java.lang.StringCoding$StringEncoder.encode:([CII)[B
            areturn
        end local 5 // java.lang.String csn
        end local 4 // java.lang.StringCoding$StringEncoder se
        end local 3 // int len
        end local 2 // int off
        end local 1 // char[] ca
        end local 0 // java.lang.String charsetName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0  charsetName  Ljava/lang/String;
            0   16     1           ca  [C
            0   16     2          off  I
            0   16     3          len  I
            1   16     4           se  Ljava/lang/StringCoding$StringEncoder;
            4   16     5          csn  Ljava/lang/String;
            8   10     6           cs  Ljava/nio/charset/Charset;
      Exception table:
        from    to  target  type
           7    10      11  Class java.nio.charset.IllegalCharsetNameException
    Exceptions:
      throws java.io.UnsupportedEncodingException
    MethodParameters:
             Name  Flags
      charsetName  
      ca           
      off          
      len          

  static byte[] encode(java.nio.charset.Charset, char[], int, int);
    descriptor: (Ljava/nio/charset/Charset;[CII)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // java.nio.charset.Charset cs
        start local 1 // char[] ca
        start local 2 // int off
        start local 3 // int len
         0: .line 348
            aload 0 /* cs */
            invokevirtual java.nio.charset.Charset.newEncoder:()Ljava/nio/charset/CharsetEncoder;
            astore 4 /* ce */
        start local 4 // java.nio.charset.CharsetEncoder ce
         1: .line 349
            iload 3 /* len */
            aload 4 /* ce */
            invokevirtual java.nio.charset.CharsetEncoder.maxBytesPerChar:()F
            invokestatic java.lang.StringCoding.scale:(IF)I
            istore 5 /* en */
        start local 5 // int en
         2: .line 350
            iload 5 /* en */
            newarray 8
            astore 6 /* ba */
        start local 6 // byte[] ba
         3: .line 351
            iload 3 /* len */
            ifne 5
         4: .line 352
            aload 6 /* ba */
            areturn
         5: .line 353
      StackMap locals: java.nio.charset.CharsetEncoder int byte[]
      StackMap stack:
            iconst_0
            istore 7 /* isTrusted */
        start local 7 // boolean isTrusted
         6: .line 354
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 12
         7: .line 355
            aload 0 /* cs */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader0:()Ljava/lang/ClassLoader;
            ifnonnull 8
            iconst_1
            goto 9
      StackMap locals: int
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: dup
            istore 7 /* isTrusted */
            ifne 12
        10: .line 356
            aload 1 /* ca */
            iload 2 /* off */
            iload 2 /* off */
            iload 3 /* len */
            iadd
            invokestatic java.util.Arrays.copyOfRange:([CII)[C
            astore 1 /* ca */
        11: .line 357
            iconst_0
            istore 2 /* off */
        12: .line 360
      StackMap locals:
      StackMap stack:
            aload 4 /* ce */
            getstatic java.nio.charset.CodingErrorAction.REPLACE:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetEncoder.onMalformedInput:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
        13: .line 361
            getstatic java.nio.charset.CodingErrorAction.REPLACE:Ljava/nio/charset/CodingErrorAction;
            invokevirtual java.nio.charset.CharsetEncoder.onUnmappableCharacter:(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
        14: .line 362
            invokevirtual java.nio.charset.CharsetEncoder.reset:()Ljava/nio/charset/CharsetEncoder;
            pop
        15: .line 363
            aload 4 /* ce */
            instanceof sun.nio.cs.ArrayEncoder
            ifeq 18
        16: .line 364
            aload 4 /* ce */
            checkcast sun.nio.cs.ArrayEncoder
            aload 1 /* ca */
            iload 2 /* off */
            iload 3 /* len */
            aload 6 /* ba */
            invokeinterface sun.nio.cs.ArrayEncoder.encode:([CII[B)I
            istore 8 /* blen */
        start local 8 // int blen
        17: .line 365
            aload 6 /* ba */
            iload 8 /* blen */
            aload 0 /* cs */
            iload 7 /* isTrusted */
            invokestatic java.lang.StringCoding.safeTrim:([BILjava/nio/charset/Charset;Z)[B
            areturn
        end local 8 // int blen
        18: .line 367
      StackMap locals:
      StackMap stack:
            aload 6 /* ba */
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            astore 8 /* bb */
        start local 8 // java.nio.ByteBuffer bb
        19: .line 368
            aload 1 /* ca */
            iload 2 /* off */
            iload 3 /* len */
            invokestatic java.nio.CharBuffer.wrap:([CII)Ljava/nio/CharBuffer;
            astore 9 /* cb */
        start local 9 // java.nio.CharBuffer cb
        20: .line 370
            aload 4 /* ce */
            aload 9 /* cb */
            aload 8 /* bb */
            iconst_1
            invokevirtual java.nio.charset.CharsetEncoder.encode:(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
            astore 10 /* cr */
        start local 10 // java.nio.charset.CoderResult cr
        21: .line 371
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifne 23
        22: .line 372
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        23: .line 373
      StackMap locals: java.nio.ByteBuffer java.nio.CharBuffer java.nio.charset.CoderResult
      StackMap stack:
            aload 4 /* ce */
            aload 8 /* bb */
            invokevirtual java.nio.charset.CharsetEncoder.flush:(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
            astore 10 /* cr */
        24: .line 374
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.isUnderflow:()Z
            ifne 29
        25: .line 375
            aload 10 /* cr */
            invokevirtual java.nio.charset.CoderResult.throwException:()V
        end local 10 // java.nio.charset.CoderResult cr
        26: .line 376
            goto 29
      StackMap locals: java.nio.charset.Charset char[] int int java.nio.charset.CharsetEncoder int byte[] int java.nio.ByteBuffer java.nio.CharBuffer
      StackMap stack: java.nio.charset.CharacterCodingException
        27: astore 10 /* x */
        start local 10 // java.nio.charset.CharacterCodingException x
        28: .line 377
            new java.lang.Error
            dup
            aload 10 /* x */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.nio.charset.CharacterCodingException x
        29: .line 379
      StackMap locals:
      StackMap stack:
            aload 6 /* ba */
            aload 8 /* bb */
            invokevirtual java.nio.ByteBuffer.position:()I
            aload 0 /* cs */
            iload 7 /* isTrusted */
            invokestatic java.lang.StringCoding.safeTrim:([BILjava/nio/charset/Charset;Z)[B
            areturn
        end local 9 // java.nio.CharBuffer cb
        end local 8 // java.nio.ByteBuffer bb
        end local 7 // boolean isTrusted
        end local 6 // byte[] ba
        end local 5 // int en
        end local 4 // java.nio.charset.CharsetEncoder ce
        end local 3 // int len
        end local 2 // int off
        end local 1 // char[] ca
        end local 0 // java.nio.charset.Charset cs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   30     0         cs  Ljava/nio/charset/Charset;
            0   30     1         ca  [C
            0   30     2        off  I
            0   30     3        len  I
            1   30     4         ce  Ljava/nio/charset/CharsetEncoder;
            2   30     5         en  I
            3   30     6         ba  [B
            6   30     7  isTrusted  Z
           17   18     8       blen  I
           19   30     8         bb  Ljava/nio/ByteBuffer;
           20   30     9         cb  Ljava/nio/CharBuffer;
           21   26    10         cr  Ljava/nio/charset/CoderResult;
           28   29    10          x  Ljava/nio/charset/CharacterCodingException;
      Exception table:
        from    to  target  type
          20    26      27  Class java.nio.charset.CharacterCodingException
    MethodParameters:
      Name  Flags
      cs    
      ca    
      off   
      len   

  static byte[] encode(char[], int, int);
    descriptor: ([CII)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // char[] ca
        start local 1 // int off
        start local 2 // int len
         0: .line 384
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
            astore 3 /* csn */
        start local 3 // java.lang.String csn
         1: .line 387
            aload 3 /* csn */
            aload 0 /* ca */
            iload 1 /* off */
            iload 2 /* len */
            invokestatic java.lang.StringCoding.encode:(Ljava/lang/String;[CII)[B
         2: areturn
         3: .line 388
      StackMap locals: char[] int int java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
            pop
         4: .line 389
            aload 3 /* csn */
            invokestatic java.lang.StringCoding.warnUnsupportedCharset:(Ljava/lang/String;)V
         5: .line 392
            ldc "ISO-8859-1"
            aload 0 /* ca */
            iload 1 /* off */
            iload 2 /* len */
            invokestatic java.lang.StringCoding.encode:(Ljava/lang/String;[CII)[B
         6: areturn
         7: .line 393
      StackMap locals:
      StackMap stack: java.io.UnsupportedEncodingException
            astore 4 /* x */
        start local 4 // java.io.UnsupportedEncodingException x
         8: .line 396
            new java.lang.StringBuilder
            dup
            ldc "ISO-8859-1 charset not available: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 397
            aload 4 /* x */
            invokevirtual java.io.UnsupportedEncodingException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 396
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic sun.misc.MessageUtils.err:(Ljava/lang/String;)V
        11: .line 400
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        12: .line 401
            aconst_null
            areturn
        end local 4 // java.io.UnsupportedEncodingException x
        end local 3 // java.lang.String csn
        end local 2 // int len
        end local 1 // int off
        end local 0 // char[] ca
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0    ca  [C
            0   13     1   off  I
            0   13     2   len  I
            1   13     3   csn  Ljava/lang/String;
            8   13     4     x  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.UnsupportedEncodingException
           5     6       7  Class java.io.UnsupportedEncodingException
    MethodParameters:
      Name  Flags
      ca    
      off   
      len   
}
SourceFile: "StringCoding.java"
NestMembers:
  java.lang.StringCoding$StringDecoder  java.lang.StringCoding$StringEncoder
InnerClasses:
  private StringDecoder = java.lang.StringCoding$StringDecoder of java.lang.StringCoding
  private StringEncoder = java.lang.StringCoding$StringEncoder of java.lang.StringCoding