public final class jdk.internal.jimage.decompressor.Decompressor
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.internal.jimage.decompressor.Decompressor
  super_class: java.lang.Object
{
  private final java.util.Map<java.lang.Integer, jdk.internal.jimage.decompressor.ResourceDecompressor> pluginsCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Integer;Ljdk/internal/jimage/decompressor/ResourceDecompressor;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.jimage.decompressor.Decompressor this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield jdk.internal.jimage.decompressor.Decompressor.pluginsCache:Ljava/util/Map;
         2: .line 51
            return
        end local 0 // jdk.internal.jimage.decompressor.Decompressor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/internal/jimage/decompressor/Decompressor;

  public byte[] decompressResource(java.nio.ByteOrder, jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider, byte[]);
    descriptor: (Ljava/nio/ByteOrder;Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // jdk.internal.jimage.decompressor.Decompressor this
        start local 1 // java.nio.ByteOrder order
        start local 2 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider provider
        start local 3 // byte[] content
         0: .line 63
            aload 1 /* order */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 64
            aload 2 /* provider */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 65
            aload 3 /* content */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 68
      StackMap locals:
      StackMap stack:
            aload 1 /* order */
            aload 3 /* content */
            invokestatic jdk.internal.jimage.decompressor.CompressedResourceHeader.readFromResource:(Ljava/nio/ByteOrder;[B)Ljdk/internal/jimage/decompressor/CompressedResourceHeader;
            astore 4 /* header */
        start local 4 // jdk.internal.jimage.decompressor.CompressedResourceHeader header
         4: .line 69
            aload 4 /* header */
            ifnull 38
         5: .line 71
            aload 0 /* this */
            getfield jdk.internal.jimage.decompressor.Decompressor.pluginsCache:Ljava/util/Map;
            aload 4 /* header */
            invokevirtual jdk.internal.jimage.decompressor.CompressedResourceHeader.getDecompressorNameOffset:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.internal.jimage.decompressor.ResourceDecompressor
         6: .line 70
            astore 5 /* decompressor */
        start local 5 // jdk.internal.jimage.decompressor.ResourceDecompressor decompressor
         7: .line 72
            aload 5 /* decompressor */
            ifnonnull 32
         8: .line 74
            aload 2 /* provider */
            aload 4 /* header */
            invokevirtual jdk.internal.jimage.decompressor.CompressedResourceHeader.getDecompressorNameOffset:()I
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider.getString:(I)Ljava/lang/String;
         9: .line 73
            astore 6 /* pluginName */
        start local 6 // java.lang.String pluginName
        10: .line 75
            aload 6 /* pluginName */
            ifnonnull 12
        11: .line 76
            new java.io.IOException
            dup
            ldc "Plugin name not found"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 78
      StackMap locals: jdk.internal.jimage.decompressor.CompressedResourceHeader jdk.internal.jimage.decompressor.ResourceDecompressor java.lang.String
      StackMap stack:
            aload 4 /* header */
            aload 2 /* provider */
            invokevirtual jdk.internal.jimage.decompressor.CompressedResourceHeader.getStoredContent:(Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;)Ljava/lang/String;
            astore 7 /* storedContent */
        start local 7 // java.lang.String storedContent
        13: .line 79
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 8 /* props */
        start local 8 // java.util.Properties props
        14: .line 80
            aload 7 /* storedContent */
            ifnull 27
        15: .line 81
            aconst_null
            astore 9
            aconst_null
            astore 10
        16: .line 82
            new java.io.ByteArrayInputStream
            dup
            aload 7 /* storedContent */
        17: .line 83
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
        18: .line 82
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
        19: .line 81
            astore 11 /* stream */
        start local 11 // java.io.ByteArrayInputStream stream
        20: .line 84
            aload 8 /* props */
            aload 11 /* stream */
            invokevirtual java.util.Properties.loadFromXML:(Ljava/io/InputStream;)V
        21: .line 85
            aload 11 /* stream */
            ifnull 27
            aload 11 /* stream */
            invokevirtual java.io.ByteArrayInputStream.close:()V
            goto 27
      StackMap locals: jdk.internal.jimage.decompressor.Decompressor java.nio.ByteOrder jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider byte[] jdk.internal.jimage.decompressor.CompressedResourceHeader jdk.internal.jimage.decompressor.ResourceDecompressor java.lang.String java.lang.String java.util.Properties java.lang.Throwable java.lang.Throwable java.io.ByteArrayInputStream
      StackMap stack: java.lang.Throwable
        22: astore 9
            aload 11 /* stream */
            ifnull 23
            aload 11 /* stream */
            invokevirtual java.io.ByteArrayInputStream.close:()V
        end local 11 // java.io.ByteArrayInputStream stream
      StackMap locals:
      StackMap stack:
        23: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 10
            aload 9
            ifnonnull 25
            aload 10
            astore 9
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 9
            aload 10
            if_acmpeq 26
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 9
            athrow
        27: .line 88
      StackMap locals:
      StackMap stack:
            aload 8 /* props */
            aload 6 /* pluginName */
            invokestatic jdk.internal.jimage.decompressor.ResourceDecompressorRepository.newResourceDecompressor:(Ljava/util/Properties;Ljava/lang/String;)Ljdk/internal/jimage/decompressor/ResourceDecompressor;
        28: .line 87
            astore 5 /* decompressor */
        29: .line 89
            aload 5 /* decompressor */
            ifnonnull 31
        30: .line 90
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Plugin not found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* pluginName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.jimage.decompressor.Decompressor.pluginsCache:Ljava/util/Map;
            aload 4 /* header */
            invokevirtual jdk.internal.jimage.decompressor.CompressedResourceHeader.getDecompressorNameOffset:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* decompressor */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.util.Properties props
        end local 7 // java.lang.String storedContent
        end local 6 // java.lang.String pluginName
        32: .line 96
      StackMap locals:
      StackMap stack:
            aload 5 /* decompressor */
            aload 2 /* provider */
            aload 3 /* content */
        33: .line 97
            invokestatic jdk.internal.jimage.decompressor.CompressedResourceHeader.getSize:()I
            aload 4 /* header */
            invokevirtual jdk.internal.jimage.decompressor.CompressedResourceHeader.getUncompressedSize:()J
        34: .line 96
            invokeinterface jdk.internal.jimage.decompressor.ResourceDecompressor.decompress:(Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;[BIJ)[B
            astore 3 /* content */
        35: .line 98
            goto 38
      StackMap locals:
      StackMap stack: java.lang.Exception
        36: astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        37: .line 99
            new java.io.IOException
            dup
            aload 6 /* ex */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Exception ex
        end local 5 // jdk.internal.jimage.decompressor.ResourceDecompressor decompressor
        38: .line 102
      StackMap locals:
      StackMap stack:
            aload 4 /* header */
            ifnonnull 3
        39: .line 103
            aload 3 /* content */
            areturn
        end local 4 // jdk.internal.jimage.decompressor.CompressedResourceHeader header
        end local 3 // byte[] content
        end local 2 // jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider provider
        end local 1 // java.nio.ByteOrder order
        end local 0 // jdk.internal.jimage.decompressor.Decompressor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   40     0           this  Ljdk/internal/jimage/decompressor/Decompressor;
            0   40     1          order  Ljava/nio/ByteOrder;
            0   40     2       provider  Ljdk/internal/jimage/decompressor/ResourceDecompressor$StringsProvider;
            0   40     3        content  [B
            4   40     4         header  Ljdk/internal/jimage/decompressor/CompressedResourceHeader;
            7   38     5   decompressor  Ljdk/internal/jimage/decompressor/ResourceDecompressor;
           10   32     6     pluginName  Ljava/lang/String;
           13   32     7  storedContent  Ljava/lang/String;
           14   32     8          props  Ljava/util/Properties;
           20   23    11         stream  Ljava/io/ByteArrayInputStream;
           37   38     6             ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          20    21      22  any
          16    24      24  any
          32    35      36  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      order     
      provider  
      content   
}
SourceFile: "Decompressor.java"
InnerClasses:
  public abstract StringsProvider = jdk.internal.jimage.decompressor.ResourceDecompressor$StringsProvider of jdk.internal.jimage.decompressor.ResourceDecompressor