public class jdk.internal.jimage.decompressor.StringSharingDecompressor implements jdk.internal.jimage.decompressor.ResourceDecompressor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.jimage.decompressor.StringSharingDecompressor
  super_class: java.lang.Object
{
  public static final int EXTERNALIZED_STRING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 23

  public static final int EXTERNALIZED_STRING_DESCRIPTOR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private static final int[] SIZES;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 70
            bipush 21
            newarray 10
            putstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
         1: .line 75
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            iconst_3
            iconst_4
            iastore
         2: .line 76
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            iconst_4
            iconst_4
            iastore
         3: .line 77
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            iconst_5
            bipush 8
            iastore
         4: .line 78
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 6
            bipush 8
            iastore
         5: .line 79
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 7
            iconst_2
            iastore
         6: .line 80
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 8
            iconst_2
            iastore
         7: .line 81
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 9
            iconst_4
            iastore
         8: .line 82
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 10
            iconst_4
            iastore
         9: .line 83
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 11
            iconst_4
            iastore
        10: .line 84
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 12
            iconst_4
            iastore
        11: .line 85
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 15
            iconst_3
            iastore
        12: .line 86
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 16
            iconst_2
            iastore
        13: .line 87
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 18
            iconst_4
            iastore
        14: .line 88
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 19
            iconst_2
            iastore
        15: .line 89
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            bipush 20
            iconst_2
            iastore
        16: .line 90
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static int[] getSizes();
    descriptor: ()[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 93
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            invokevirtual int[].clone:()Ljava/lang/Object;
            checkcast int[]
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static byte[] normalize(jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider, byte[], int);
    descriptor: (Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;[BI)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=13, args_size=3
        start local 0 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider provider
        start local 1 // byte[] transformed
        start local 2 // int offset
         0: .line 99
            new java.io.DataInputStream
            dup
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* transformed */
         1: .line 100
            iload 2 /* offset */
            aload 1 /* transformed */
            arraylength
            iload 2 /* offset */
            isub
            invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
         2: .line 99
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 3 /* stream */
        start local 3 // java.io.DataInputStream stream
         3: .line 101
            new java.io.ByteArrayOutputStream
            dup
            aload 1 /* transformed */
            arraylength
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 4 /* outStream */
        start local 4 // java.io.ByteArrayOutputStream outStream
         4: .line 102
            new java.io.DataOutputStream
            dup
            aload 4 /* outStream */
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 5 /* out */
        start local 5 // java.io.DataOutputStream out
         5: .line 103
            bipush 8
            newarray 8
            astore 6 /* header */
        start local 6 // byte[] header
         6: .line 104
            aload 3 /* stream */
            aload 6 /* header */
            invokevirtual java.io.DataInputStream.readFully:([B)V
         7: .line 105
            aload 5 /* out */
            aload 6 /* header */
            invokevirtual java.io.DataOutputStream.write:([B)V
         8: .line 106
            aload 3 /* stream */
            invokevirtual java.io.DataInputStream.readUnsignedShort:()I
            istore 7 /* count */
        start local 7 // int count
         9: .line 107
            aload 5 /* out */
            iload 7 /* count */
            invokevirtual java.io.DataOutputStream.writeShort:(I)V
        10: .line 108
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        11: goto 34
        12: .line 109
      StackMap locals: jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider byte[] int java.io.DataInputStream java.io.ByteArrayOutputStream java.io.DataOutputStream byte[] int int
      StackMap stack:
            aload 3 /* stream */
            invokevirtual java.io.DataInputStream.readUnsignedByte:()I
            istore 9 /* tag */
        start local 9 // int tag
        13: .line 111
            iload 9 /* tag */
            lookupswitch { // 5
                    1: 14
                    5: 27
                    6: 27
                   23: 18
                   25: 23
              default: 28
          }
        14: .line 113
      StackMap locals: int
      StackMap stack:
            aload 5 /* out */
            iload 9 /* tag */
            invokevirtual java.io.DataOutputStream.write:(I)V
        15: .line 114
            aload 3 /* stream */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 11 /* utf */
        start local 11 // java.lang.String utf
        16: .line 115
            aload 5 /* out */
            aload 11 /* utf */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        17: .line 116
            goto 33
        end local 11 // java.lang.String utf
        18: .line 120
      StackMap locals:
      StackMap stack:
            aload 3 /* stream */
            invokestatic jdk.internal.jimage.decompressor.CompressIndexes.readInt:(Ljava/io/DataInputStream;)I
            istore 11 /* index */
        start local 11 // int index
        19: .line 121
            aload 0 /* provider */
            iload 11 /* index */
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider.getString:(I)Ljava/lang/String;
            astore 12 /* orig */
        start local 12 // java.lang.String orig
        20: .line 122
            aload 5 /* out */
            iconst_1
            invokevirtual java.io.DataOutputStream.write:(I)V
        21: .line 123
            aload 5 /* out */
            aload 12 /* orig */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        22: .line 124
            goto 33
        end local 12 // java.lang.String orig
        end local 11 // int index
        23: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* provider */
            aload 3 /* stream */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.reconstruct:(Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;Ljava/io/DataInputStream;)Ljava/lang/String;
            astore 11 /* orig */
        start local 11 // java.lang.String orig
        24: .line 129
            aload 5 /* out */
            iconst_1
            invokevirtual java.io.DataOutputStream.write:(I)V
        25: .line 130
            aload 5 /* out */
            aload 11 /* orig */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
        26: .line 131
            goto 33
        end local 11 // java.lang.String orig
        27: .line 135
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
        28: .line 138
      StackMap locals:
      StackMap stack:
            aload 5 /* out */
            iload 9 /* tag */
            invokevirtual java.io.DataOutputStream.write:(I)V
        29: .line 139
            getstatic jdk.internal.jimage.decompressor.StringSharingDecompressor.SIZES:[I
            iload 9 /* tag */
            iaload
            istore 11 /* size */
        start local 11 // int size
        30: .line 140
            iload 11 /* size */
            newarray 8
            astore 10 /* arr */
        start local 10 // byte[] arr
        31: .line 141
            aload 3 /* stream */
            aload 10 /* arr */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        32: .line 142
            aload 5 /* out */
            aload 10 /* arr */
            invokevirtual java.io.DataOutputStream.write:([B)V
        end local 11 // int size
        end local 10 // byte[] arr
        end local 9 // int tag
        33: .line 108
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 8 /* i */
            iload 7 /* count */
            if_icmplt 12
        end local 8 // int i
        35: .line 146
            aload 5 /* out */
            aload 1 /* transformed */
            aload 1 /* transformed */
            arraylength
            aload 3 /* stream */
            invokevirtual java.io.DataInputStream.available:()I
            isub
        36: .line 147
            aload 3 /* stream */
            invokevirtual java.io.DataInputStream.available:()I
        37: .line 146
            invokevirtual java.io.DataOutputStream.write:([BII)V
        38: .line 148
            aload 5 /* out */
            invokevirtual java.io.DataOutputStream.flush:()V
        39: .line 150
            aload 4 /* outStream */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 7 // int count
        end local 6 // byte[] header
        end local 5 // java.io.DataOutputStream out
        end local 4 // java.io.ByteArrayOutputStream outStream
        end local 3 // java.io.DataInputStream stream
        end local 2 // int offset
        end local 1 // byte[] transformed
        end local 0 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider provider
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   40     0     provider  Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;
            0   40     1  transformed  [B
            0   40     2       offset  I
            3   40     3       stream  Ljava/io/DataInputStream;
            4   40     4    outStream  Ljava/io/ByteArrayOutputStream;
            5   40     5          out  Ljava/io/DataOutputStream;
            6   40     6       header  [B
            9   40     7        count  I
           11   35     8            i  I
           13   33     9          tag  I
           31   33    10          arr  [B
           16   18    11          utf  Ljava/lang/String;
           19   23    11        index  I
           20   23    12         orig  Ljava/lang/String;
           24   27    11         orig  Ljava/lang/String;
           30   33    11         size  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      provider     
      transformed  
      offset       

  private static java.lang.String reconstruct(jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider, java.io.DataInputStream);
    descriptor: (Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;Ljava/io/DataInputStream;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=19, args_size=2
        start local 0 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider reader
        start local 1 // java.io.DataInputStream cr
         0: .line 155
            aload 1 /* cr */
            invokestatic jdk.internal.jimage.decompressor.CompressIndexes.readInt:(Ljava/io/DataInputStream;)I
            istore 2 /* descIndex */
        start local 2 // int descIndex
         1: .line 156
            aload 0 /* reader */
            iload 2 /* descIndex */
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider.getString:(I)Ljava/lang/String;
            astore 3 /* desc */
        start local 3 // java.lang.String desc
         2: .line 157
            aload 3 /* desc */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.getEncoded:(Ljava/lang/String;)[B
            astore 4 /* encodedDesc */
        start local 4 // byte[] encodedDesc
         3: .line 158
            aload 1 /* cr */
            invokestatic jdk.internal.jimage.decompressor.CompressIndexes.readInt:(Ljava/io/DataInputStream;)I
            istore 5 /* indexes_length */
        start local 5 // int indexes_length
         4: .line 159
            iload 5 /* indexes_length */
            newarray 8
            astore 6 /* bytes */
        start local 6 // byte[] bytes
         5: .line 160
            aload 1 /* cr */
            aload 6 /* bytes */
            invokevirtual java.io.DataInputStream.readFully:([B)V
         6: .line 161
            aload 6 /* bytes */
            invokestatic jdk.internal.jimage.decompressor.CompressIndexes.decompressFlow:([B)Ljava/util/List;
            astore 7 /* indices */
        start local 7 // java.util.List indices
         7: .line 162
            aload 4 /* encodedDesc */
            arraylength
            iconst_2
            imul
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        start local 8 // java.nio.ByteBuffer buffer
         8: .line 163
            aload 8 /* buffer */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         9: .line 164
            iconst_0
            istore 9 /* argIndex */
        start local 9 // int argIndex
        10: .line 165
            aload 4 /* encodedDesc */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 29
      StackMap locals: jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider java.io.DataInputStream int java.lang.String byte[] int byte[] java.util.List java.nio.ByteBuffer int top int int byte[]
      StackMap stack:
        11: aload 13
            iload 11
            baload
            istore 10 /* c */
        start local 10 // byte c
        12: .line 166
            iload 10 /* c */
            bipush 76
            if_icmpne 27
        13: .line 167
            aload 8 /* buffer */
            iload 10 /* c */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.safeAdd:(Ljava/nio/ByteBuffer;B)Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        14: .line 168
            aload 7 /* indices */
            iload 9 /* argIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 14 /* index */
        start local 14 // int index
        15: .line 169
            iinc 9 /* argIndex */ 1
        16: .line 170
            aload 0 /* reader */
            iload 14 /* index */
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider.getString:(I)Ljava/lang/String;
            astore 15 /* pkg */
        start local 15 // java.lang.String pkg
        17: .line 171
            aload 15 /* pkg */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 21
        18: .line 172
            new java.lang.StringBuilder
            dup
            aload 15 /* pkg */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 15 /* pkg */
        19: .line 173
            aload 15 /* pkg */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.getEncoded:(Ljava/lang/String;)[B
            astore 16 /* encoded */
        start local 16 // byte[] encoded
        20: .line 174
            aload 8 /* buffer */
            aload 16 /* encoded */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.safeAdd:(Ljava/nio/ByteBuffer;[B)Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        end local 16 // byte[] encoded
        21: .line 176
      StackMap locals: jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider java.io.DataInputStream int java.lang.String byte[] int byte[] java.util.List java.nio.ByteBuffer int int int int byte[] int java.lang.String
      StackMap stack:
            aload 7 /* indices */
            iload 9 /* argIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 16 /* classIndex */
        start local 16 // int classIndex
        22: .line 177
            iinc 9 /* argIndex */ 1
        23: .line 178
            aload 0 /* reader */
            iload 16 /* classIndex */
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider.getString:(I)Ljava/lang/String;
            astore 17 /* clazz */
        start local 17 // java.lang.String clazz
        24: .line 179
            aload 17 /* clazz */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.getEncoded:(Ljava/lang/String;)[B
            astore 18 /* encoded */
        start local 18 // byte[] encoded
        25: .line 180
            aload 8 /* buffer */
            aload 18 /* encoded */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.safeAdd:(Ljava/nio/ByteBuffer;[B)Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        end local 18 // byte[] encoded
        end local 17 // java.lang.String clazz
        end local 16 // int classIndex
        end local 15 // java.lang.String pkg
        end local 14 // int index
        26: .line 181
            goto 28
        27: .line 182
      StackMap locals:
      StackMap stack:
            aload 8 /* buffer */
            iload 10 /* c */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.safeAdd:(Ljava/nio/ByteBuffer;B)Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        end local 10 // byte c
        28: .line 165
      StackMap locals: jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider java.io.DataInputStream int java.lang.String byte[] int byte[] java.util.List java.nio.ByteBuffer int top int int byte[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        29: iload 11
            iload 12
            if_icmplt 11
        30: .line 186
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 10 /* encoded */
        start local 10 // byte[] encoded
        31: .line 187
            aload 10 /* encoded */
            arraylength
            iconst_2
            iadd
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 11 /* result */
        start local 11 // java.nio.ByteBuffer result
        32: .line 188
            aload 11 /* result */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
        33: .line 189
            aload 11 /* result */
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            i2s
            invokevirtual java.nio.ByteBuffer.putShort:(S)Ljava/nio/ByteBuffer;
            pop
        34: .line 190
            aload 11 /* result */
            aload 10 /* encoded */
            iconst_0
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
        35: .line 191
            new java.io.ByteArrayInputStream
            dup
            aload 11 /* result */
            invokevirtual java.nio.ByteBuffer.array:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 12 /* stream */
        start local 12 // java.io.ByteArrayInputStream stream
        36: .line 192
            new java.io.DataInputStream
            dup
            aload 12 /* stream */
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 13 /* inStream */
        start local 13 // java.io.DataInputStream inStream
        37: .line 193
            aload 13 /* inStream */
            invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
            astore 14 /* str */
        start local 14 // java.lang.String str
        38: .line 194
            aload 14 /* str */
            areturn
        end local 14 // java.lang.String str
        end local 13 // java.io.DataInputStream inStream
        end local 12 // java.io.ByteArrayInputStream stream
        end local 11 // java.nio.ByteBuffer result
        end local 10 // byte[] encoded
        end local 9 // int argIndex
        end local 8 // java.nio.ByteBuffer buffer
        end local 7 // java.util.List indices
        end local 6 // byte[] bytes
        end local 5 // int indexes_length
        end local 4 // byte[] encodedDesc
        end local 3 // java.lang.String desc
        end local 2 // int descIndex
        end local 1 // java.io.DataInputStream cr
        end local 0 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider reader
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   39     0          reader  Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;
            0   39     1              cr  Ljava/io/DataInputStream;
            1   39     2       descIndex  I
            2   39     3            desc  Ljava/lang/String;
            3   39     4     encodedDesc  [B
            4   39     5  indexes_length  I
            5   39     6           bytes  [B
            7   39     7         indices  Ljava/util/List<Ljava/lang/Integer;>;
            8   39     8          buffer  Ljava/nio/ByteBuffer;
           10   39     9        argIndex  I
           12   28    10               c  B
           15   26    14           index  I
           17   26    15             pkg  Ljava/lang/String;
           20   21    16         encoded  [B
           22   26    16      classIndex  I
           24   26    17           clazz  Ljava/lang/String;
           25   26    18         encoded  [B
           31   39    10         encoded  [B
           32   39    11          result  Ljava/nio/ByteBuffer;
           36   39    12          stream  Ljava/io/ByteArrayInputStream;
           37   39    13        inStream  Ljava/io/DataInputStream;
           38   39    14             str  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      reader  
      cr      

  public static byte[] getEncoded(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.String pre
         0: .line 198
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 1 /* resultStream */
        start local 1 // java.io.ByteArrayOutputStream resultStream
         1: .line 199
            new java.io.DataOutputStream
            dup
            aload 1 /* resultStream */
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 2 /* resultOut */
        start local 2 // java.io.DataOutputStream resultOut
         2: .line 200
            aload 2 /* resultOut */
            aload 0 /* pre */
            invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
         3: .line 201
            aload 1 /* resultStream */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            astore 3 /* content */
        start local 3 // byte[] content
         4: .line 203
            aload 3 /* content */
            arraylength
            iconst_2
            if_icmpgt 6
         5: .line 204
            iconst_0
            newarray 8
            areturn
         6: .line 206
      StackMap locals: java.io.ByteArrayOutputStream java.io.DataOutputStream byte[]
      StackMap stack:
            aload 3 /* content */
            iconst_2
            aload 3 /* content */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([BII)[B
            areturn
        end local 3 // byte[] content
        end local 2 // java.io.DataOutputStream resultOut
        end local 1 // java.io.ByteArrayOutputStream resultStream
        end local 0 // java.lang.String pre
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0           pre  Ljava/lang/String;
            1    7     1  resultStream  Ljava/io/ByteArrayOutputStream;
            2    7     2     resultOut  Ljava/io/DataOutputStream;
            4    7     3       content  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      pre   

  private static java.nio.ByteBuffer safeAdd(java.nio.ByteBuffer, byte);
    descriptor: (Ljava/nio/ByteBuffer;B)Ljava/nio/ByteBuffer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.nio.ByteBuffer current
        start local 1 // byte b
         0: .line 210
            iconst_1
            newarray 8
            dup
            iconst_0
            iload 1 /* b */
            bastore
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         1: .line 211
            aload 0 /* current */
            aload 2 /* bytes */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.safeAdd:(Ljava/nio/ByteBuffer;[B)Ljava/nio/ByteBuffer;
            areturn
        end local 2 // byte[] bytes
        end local 1 // byte b
        end local 0 // java.nio.ByteBuffer current
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  current  Ljava/nio/ByteBuffer;
            0    2     1        b  B
            1    2     2    bytes  [B
    MethodParameters:
         Name  Flags
      current  
      b        

  private static java.nio.ByteBuffer safeAdd(java.nio.ByteBuffer, byte[]);
    descriptor: (Ljava/nio/ByteBuffer;[B)Ljava/nio/ByteBuffer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.nio.ByteBuffer current
        start local 1 // byte[] bytes
         0: .line 215
            aload 0 /* current */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aload 1 /* bytes */
            arraylength
            if_icmpge 9
         1: .line 216
            aload 0 /* current */
            invokevirtual java.nio.ByteBuffer.capacity:()I
         2: .line 217
            aload 1 /* bytes */
            arraylength
         3: .line 216
            iadd
         4: .line 217
            iconst_2
         5: .line 216
            imul
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 2 /* newBuffer */
        start local 2 // java.nio.ByteBuffer newBuffer
         6: .line 218
            aload 2 /* newBuffer */
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         7: .line 219
            aload 2 /* newBuffer */
            aload 0 /* current */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            aload 0 /* current */
            invokevirtual java.nio.ByteBuffer.position:()I
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         8: .line 220
            aload 2 /* newBuffer */
            astore 0 /* current */
        end local 2 // java.nio.ByteBuffer newBuffer
         9: .line 222
      StackMap locals:
      StackMap stack:
            aload 0 /* current */
            aload 1 /* bytes */
            invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
            pop
        10: .line 223
            aload 0 /* current */
            areturn
        end local 1 // byte[] bytes
        end local 0 // java.nio.ByteBuffer current
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0    current  Ljava/nio/ByteBuffer;
            0   11     1      bytes  [B
            6    9     2  newBuffer  Ljava/nio/ByteBuffer;
    MethodParameters:
         Name  Flags
      current  
      bytes    

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
         0: .line 228
            ldc "compact-cp"
            areturn
        end local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/jimage/decompressor/StringSharingDecompressor;

  public void <init>(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
        start local 1 // java.util.Properties properties
         0: .line 231
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 233
            return
        end local 1 // java.util.Properties properties
        end local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Ljdk/internal/jimage/decompressor/StringSharingDecompressor;
            0    2     1  properties  Ljava/util/Properties;
    MethodParameters:
            Name  Flags
      properties  

  public byte[] decompress(jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider, byte[], int, long);
    descriptor: (Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;[BIJ)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=5
        start local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
        start local 1 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider reader
        start local 2 // byte[] content
        start local 3 // int offset
        start local 4 // long originalSize
         0: .line 238
            aload 1 /* reader */
            aload 2 /* content */
            iload 3 /* offset */
            invokestatic jdk.internal.jimage.decompressor.StringSharingDecompressor.normalize:(Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;[BI)[B
            areturn
        end local 4 // long originalSize
        end local 3 // int offset
        end local 2 // byte[] content
        end local 1 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider reader
        end local 0 // jdk.internal.jimage.decompressor.StringSharingDecompressor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljdk/internal/jimage/decompressor/StringSharingDecompressor;
            0    1     1        reader  Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;
            0    1     2       content  [B
            0    1     3        offset  I
            0    1     4  originalSize  J
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
              Name  Flags
      reader        
      content       
      offset        
      originalSize  
}
SourceFile: "StringSharingDecompressor.java"
InnerClasses:
  public abstract StringsProvider = jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider of jdk.internal.jimage.decompressor.ResourceDecompressor