public final class jdk.tools.jlink.internal.ImagePluginStack
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: jdk.tools.jlink.internal.ImagePluginStack
  super_class: java.lang.Object
{
  private final jdk.tools.jlink.builder.ImageBuilder imageBuilder;
    descriptor: Ljdk/tools/jlink/builder/ImageBuilder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.tools.jlink.plugin.Plugin lastSorter;
    descriptor: Ljdk/tools/jlink/plugin/Plugin;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<jdk.tools.jlink.plugin.Plugin> plugins;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljdk/tools/jlink/plugin/Plugin;>;

  private final java.util.List<jdk.tools.jlink.internal.ResourcePrevisitor> resourcePrevisitors;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljdk/tools/jlink/internal/ResourcePrevisitor;>;

  private final boolean validate;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
         0: .line 168
            aload 0 /* this */
            aconst_null
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            aconst_null
            invokespecial jdk.tools.jlink.internal.ImagePluginStack.<init>:(Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List;Ljdk/tools/jlink/plugin/Plugin;)V
         1: .line 169
            return
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/tools/jlink/internal/ImagePluginStack;

  public void <init>(jdk.tools.jlink.builder.ImageBuilder, java.util.List<jdk.tools.jlink.plugin.Plugin>, jdk.tools.jlink.plugin.Plugin);
    descriptor: (Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List;Ljdk/tools/jlink/plugin/Plugin;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.builder.ImageBuilder imageBuilder
        start local 2 // java.util.List plugins
        start local 3 // jdk.tools.jlink.plugin.Plugin lastSorter
         0: .line 174
            aload 0 /* this */
            aload 1 /* imageBuilder */
            aload 2 /* plugins */
            aload 3 /* lastSorter */
            iconst_1
            invokespecial jdk.tools.jlink.internal.ImagePluginStack.<init>:(Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List;Ljdk/tools/jlink/plugin/Plugin;Z)V
         1: .line 175
            return
        end local 3 // jdk.tools.jlink.plugin.Plugin lastSorter
        end local 2 // java.util.List plugins
        end local 1 // jdk.tools.jlink.builder.ImageBuilder imageBuilder
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0    2     1  imageBuilder  Ljdk/tools/jlink/builder/ImageBuilder;
            0    2     2       plugins  Ljava/util/List<Ljdk/tools/jlink/plugin/Plugin;>;
            0    2     3    lastSorter  Ljdk/tools/jlink/plugin/Plugin;
    Signature: (Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List<Ljdk/tools/jlink/plugin/Plugin;>;Ljdk/tools/jlink/plugin/Plugin;)V
    MethodParameters:
              Name  Flags
      imageBuilder  
      plugins       
      lastSorter    

  public void <init>(jdk.tools.jlink.builder.ImageBuilder, java.util.List<jdk.tools.jlink.plugin.Plugin>, jdk.tools.jlink.plugin.Plugin, );
    descriptor: (Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List;Ljdk/tools/jlink/plugin/Plugin;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.builder.ImageBuilder imageBuilder
        start local 2 // java.util.List plugins
        start local 3 // jdk.tools.jlink.plugin.Plugin lastSorter
        start local 4 // boolean validate
         0: .line 177
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 163
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield jdk.tools.jlink.internal.ImagePluginStack.plugins:Ljava/util/List;
         2: .line 164
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield jdk.tools.jlink.internal.ImagePluginStack.resourcePrevisitors:Ljava/util/List;
         3: .line 181
            aload 0 /* this */
            aload 1 /* imageBuilder */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.tools.jlink.builder.ImageBuilder
            putfield jdk.tools.jlink.internal.ImagePluginStack.imageBuilder:Ljdk/tools/jlink/builder/ImageBuilder;
         4: .line 182
            aload 0 /* this */
            aload 3 /* lastSorter */
            putfield jdk.tools.jlink.internal.ImagePluginStack.lastSorter:Ljdk/tools/jlink/plugin/Plugin;
         5: .line 183
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.plugins:Ljava/util/List;
            aload 2 /* plugins */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         6: .line 184
            aload 2 /* plugins */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            aload 0 /* this */
            invokedynamic accept(Ljdk/tools/jlink/internal/ImagePluginStack;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$0(Ljdk/tools/jlink/plugin/Plugin;)V (7)
                  (Ljdk/tools/jlink/plugin/Plugin;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         7: .line 190
            aload 0 /* this */
            iload 4 /* validate */
            putfield jdk.tools.jlink.internal.ImagePluginStack.validate:Z
         8: .line 191
            return
        end local 4 // boolean validate
        end local 3 // jdk.tools.jlink.plugin.Plugin lastSorter
        end local 2 // java.util.List plugins
        end local 1 // jdk.tools.jlink.builder.ImageBuilder imageBuilder
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0    9     1  imageBuilder  Ljdk/tools/jlink/builder/ImageBuilder;
            0    9     2       plugins  Ljava/util/List<Ljdk/tools/jlink/plugin/Plugin;>;
            0    9     3    lastSorter  Ljdk/tools/jlink/plugin/Plugin;
            0    9     4      validate  Z
    Signature: (Ljdk/tools/jlink/builder/ImageBuilder;Ljava/util/List<Ljdk/tools/jlink/plugin/Plugin;>;Ljdk/tools/jlink/plugin/Plugin;Z)V
    MethodParameters:
              Name  Flags
      imageBuilder  
      plugins       
      lastSorter    
      validate      

  public void operate(jdk.tools.jlink.internal.ImagePluginStack$ImageProvider);
    descriptor: (Ljdk/tools/jlink/internal/ImagePluginStack$ImageProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.internal.ImagePluginStack$ImageProvider provider
         0: .line 194
            aload 1 /* provider */
            aload 0 /* this */
            invokeinterface jdk.tools.jlink.internal.ImagePluginStack$ImageProvider.retrieve:(Ljdk/tools/jlink/internal/ImagePluginStack;)Ljdk/tools/jlink/internal/ExecutableImage;
            astore 2 /* img */
        start local 2 // jdk.tools.jlink.internal.ExecutableImage img
         1: .line 195
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* arguments */
        start local 3 // java.util.List arguments
         2: .line 196
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.plugins:Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         3: .line 197
            ldc Ljdk/tools/jlink/internal/PostProcessor;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic test(Ljava/lang/Class;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  java/lang/Class.isInstance(Ljava/lang/Object;)Z (5)
                  (Ljdk/tools/jlink/plugin/Plugin;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         4: .line 198
            aload 2 /* img */
            invokedynamic apply(Ljdk/tools/jlink/internal/ExecutableImage;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$2(Ljdk/tools/jlink/internal/ExecutableImage;Ljdk/tools/jlink/plugin/Plugin;)Ljava/util/List; (6)
                  (Ljdk/tools/jlink/plugin/Plugin;)Ljava/util/List;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 199
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$3(Ljava/util/List;)Z (6)
                  (Ljava/util/List;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         6: .line 200
            aload 3 /* arguments */
            invokedynamic accept(Ljava/util/List;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$4(Ljava/util/List;Ljava/util/List;)V (6)
                  (Ljava/util/List;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         7: .line 203
            aload 2 /* img */
            aload 3 /* arguments */
            invokeinterface jdk.tools.jlink.internal.ExecutableImage.storeLaunchArgs:(Ljava/util/List;)V
         8: .line 204
            return
        end local 3 // java.util.List arguments
        end local 2 // jdk.tools.jlink.internal.ExecutableImage img
        end local 1 // jdk.tools.jlink.internal.ImagePluginStack$ImageProvider provider
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0    9     1   provider  Ljdk/tools/jlink/internal/ImagePluginStack$ImageProvider;
            1    9     2        img  Ljdk/tools/jlink/internal/ExecutableImage;
            2    9     3  arguments  Ljava/util/List<Ljava/lang/String;>;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      provider  

  public java.io.DataOutputStream getJImageFileOutputStream();
    descriptor: ()Ljava/io/DataOutputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
         0: .line 207
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.imageBuilder:Ljdk/tools/jlink/builder/ImageBuilder;
            invokeinterface jdk.tools.jlink.builder.ImageBuilder.getJImageOutputStream:()Ljava/io/DataOutputStream;
            areturn
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/internal/ImagePluginStack;
    Exceptions:
      throws java.io.IOException

  public jdk.tools.jlink.builder.ImageBuilder getImageBuilder();
    descriptor: ()Ljdk/tools/jlink/builder/ImageBuilder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
         0: .line 211
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.imageBuilder:Ljdk/tools/jlink/builder/ImageBuilder;
            areturn
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/internal/ImagePluginStack;

  public jdk.tools.jlink.plugin.ResourcePool visitResources(jdk.tools.jlink.internal.ResourcePoolManager);
    descriptor: (Ljdk/tools/jlink/internal/ResourcePoolManager;)Ljdk/tools/jlink/plugin/ResourcePool;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.internal.ResourcePoolManager resources
         0: .line 224
            aload 1 /* resources */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 225
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.isEmpty:()Z
            ifeq 7
         2: .line 226
            new jdk.tools.jlink.internal.ResourcePoolManager
            dup
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.byteOrder:()Ljava/nio/ByteOrder;
         3: .line 227
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.getStringTable:()Ljdk/tools/jlink/internal/StringTable;
         4: .line 226
            invokespecial jdk.tools.jlink.internal.ResourcePoolManager.<init>:(Ljava/nio/ByteOrder;Ljdk/tools/jlink/internal/StringTable;)V
         5: .line 227
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.resourcePool:()Ljdk/tools/jlink/plugin/ResourcePool;
         6: .line 226
            areturn
         7: .line 229
      StackMap locals:
      StackMap stack:
            new jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings
            dup
            invokespecial jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings.<init>:()V
            astore 2 /* previsit */
        start local 2 // jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings previsit
         8: .line 230
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.resourcePrevisitors:Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            aload 1 /* resources */
            aload 2 /* previsit */
            invokedynamic accept(Ljdk/tools/jlink/internal/ResourcePoolManager;Ljdk/tools/jlink/internal/ImagePluginStack$PreVisitStrings;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$5(Ljdk/tools/jlink/internal/ResourcePoolManager;Ljdk/tools/jlink/internal/ImagePluginStack$PreVisitStrings;Ljdk/tools/jlink/internal/ResourcePrevisitor;)V (6)
                  (Ljdk/tools/jlink/internal/ResourcePrevisitor;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
         9: .line 235
            aload 2 /* previsit */
            invokevirtual jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings.getSortedStrings:()Ljava/util/List;
            astore 3 /* sorted */
        start local 3 // java.util.List sorted
        10: .line 236
            aload 3 /* sorted */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            aload 1 /* resources */
            invokedynamic accept(Ljdk/tools/jlink/internal/ResourcePoolManager;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  jdk/tools/jlink/internal/ImagePluginStack.lambda$6(Ljdk/tools/jlink/internal/ResourcePoolManager;Ljava/lang/String;)V (6)
                  (Ljava/lang/String;)V
            invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
        11: .line 240
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.resourcePool:()Ljdk/tools/jlink/plugin/ResourcePool;
            astore 4 /* resPool */
        start local 4 // jdk.tools.jlink.plugin.ResourcePool resPool
        12: .line 241
            aconst_null
            astore 5 /* frozenOrder */
        start local 5 // java.util.List frozenOrder
        13: .line 242
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.plugins:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 44
      StackMap locals: jdk.tools.jlink.internal.ImagePluginStack jdk.tools.jlink.internal.ResourcePoolManager jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings java.util.List jdk.tools.jlink.plugin.ResourcePool java.util.List top java.util.Iterator
      StackMap stack:
        14: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast jdk.tools.jlink.plugin.Plugin
            astore 6 /* p */
        start local 6 // jdk.tools.jlink.plugin.Plugin p
        15: .line 243
            aconst_null
            astore 8 /* resMgr */
        start local 8 // jdk.tools.jlink.internal.ResourcePoolManager resMgr
        16: .line 244
            aload 6 /* p */
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.lastSorter:Ljdk/tools/jlink/plugin/Plugin;
            if_acmpne 25
        17: .line 245
            aload 5 /* frozenOrder */
            ifnull 21
        18: .line 246
            new java.lang.Exception
            dup
            new java.lang.StringBuilder
            dup
            ldc "Order of resources is already frozen. Plugin "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 247
            aload 6 /* p */
            invokeinterface jdk.tools.jlink.plugin.Plugin.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is badly located"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 246
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 250
      StackMap locals: jdk.tools.jlink.internal.ImagePluginStack jdk.tools.jlink.internal.ResourcePoolManager jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings java.util.List jdk.tools.jlink.plugin.ResourcePool java.util.List jdk.tools.jlink.plugin.Plugin java.util.Iterator jdk.tools.jlink.internal.ResourcePoolManager
      StackMap stack:
            new jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager
            dup
            aload 4 /* resPool */
            invokeinterface jdk.tools.jlink.plugin.ResourcePool.byteOrder:()Ljava/nio/ByteOrder;
        22: .line 251
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.getStringTable:()Ljdk/tools/jlink/internal/StringTable;
        23: .line 250
            invokespecial jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager.<init>:(Ljava/nio/ByteOrder;Ljdk/tools/jlink/internal/StringTable;)V
            astore 8 /* resMgr */
        24: .line 252
            goto 33
        25: .line 253
      StackMap locals:
      StackMap stack:
            aload 5 /* frozenOrder */
            ifnull 30
        26: .line 254
            new jdk.tools.jlink.internal.ImagePluginStack$CheckOrderResourcePoolManager
            dup
            aload 4 /* resPool */
            invokeinterface jdk.tools.jlink.plugin.ResourcePool.byteOrder:()Ljava/nio/ByteOrder;
        27: .line 255
            aload 5 /* frozenOrder */
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.getStringTable:()Ljdk/tools/jlink/internal/StringTable;
        28: .line 254
            invokespecial jdk.tools.jlink.internal.ImagePluginStack$CheckOrderResourcePoolManager.<init>:(Ljava/nio/ByteOrder;Ljava/util/List;Ljdk/tools/jlink/internal/StringTable;)V
            astore 8 /* resMgr */
        29: .line 256
            goto 33
        30: .line 257
      StackMap locals:
      StackMap stack:
            new jdk.tools.jlink.internal.ResourcePoolManager
            dup
            aload 4 /* resPool */
            invokeinterface jdk.tools.jlink.plugin.ResourcePool.byteOrder:()Ljava/nio/ByteOrder;
        31: .line 258
            aload 1 /* resources */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.getStringTable:()Ljdk/tools/jlink/internal/StringTable;
        32: .line 257
            invokespecial jdk.tools.jlink.internal.ResourcePoolManager.<init>:(Ljava/nio/ByteOrder;Ljdk/tools/jlink/internal/StringTable;)V
            astore 8 /* resMgr */
        33: .line 262
      StackMap locals:
      StackMap stack:
            aload 6 /* p */
            aload 4 /* resPool */
            aload 8 /* resMgr */
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.resourcePoolBuilder:()Ljdk/tools/jlink/plugin/ResourcePoolBuilder;
            invokeinterface jdk.tools.jlink.plugin.Plugin.transform:(Ljdk/tools/jlink/plugin/ResourcePool;Ljdk/tools/jlink/plugin/ResourcePoolBuilder;)Ljdk/tools/jlink/plugin/ResourcePool;
            astore 4 /* resPool */
        34: .line 263
            goto 40
      StackMap locals:
      StackMap stack: jdk.tools.jlink.plugin.PluginException
        35: astore 9 /* pe */
        start local 9 // jdk.tools.jlink.plugin.PluginException pe
        36: .line 264
            getstatic jdk.tools.jlink.internal.JlinkTask.DEBUG:Z
            ifeq 39
        37: .line 265
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Plugin "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* p */
            invokeinterface jdk.tools.jlink.plugin.Plugin.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " threw exception during transform"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        38: .line 266
            aload 9 /* pe */
            invokevirtual jdk.tools.jlink.plugin.PluginException.printStackTrace:()V
        39: .line 268
      StackMap locals: jdk.tools.jlink.plugin.PluginException
      StackMap stack:
            aload 9 /* pe */
            athrow
        end local 9 // jdk.tools.jlink.plugin.PluginException pe
        40: .line 270
      StackMap locals:
      StackMap stack:
            aload 4 /* resPool */
            invokeinterface jdk.tools.jlink.plugin.ResourcePool.isEmpty:()Z
            ifeq 42
        41: .line 271
            new java.lang.Exception
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid resource pool for plugin "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* p */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            athrow
        42: .line 273
      StackMap locals:
      StackMap stack:
            aload 4 /* resPool */
            instanceof jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager$OrderedResourcePool
            ifeq 44
        43: .line 274
            aload 4 /* resPool */
            checkcast jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager$OrderedResourcePool
            invokevirtual jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager$OrderedResourcePool.getOrderedList:()Ljava/util/List;
            astore 5 /* frozenOrder */
        end local 8 // jdk.tools.jlink.internal.ResourcePoolManager resMgr
        end local 6 // jdk.tools.jlink.plugin.Plugin p
        44: .line 242
      StackMap locals: jdk.tools.jlink.internal.ImagePluginStack jdk.tools.jlink.internal.ResourcePoolManager jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings java.util.List jdk.tools.jlink.plugin.ResourcePool java.util.List top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        45: .line 278
            aload 4 /* resPool */
            areturn
        end local 5 // java.util.List frozenOrder
        end local 4 // jdk.tools.jlink.plugin.ResourcePool resPool
        end local 3 // java.util.List sorted
        end local 2 // jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings previsit
        end local 1 // jdk.tools.jlink.internal.ResourcePoolManager resources
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   46     0         this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0   46     1    resources  Ljdk/tools/jlink/internal/ResourcePoolManager;
            8   46     2     previsit  Ljdk/tools/jlink/internal/ImagePluginStack$PreVisitStrings;
           10   46     3       sorted  Ljava/util/List<Ljava/lang/String;>;
           12   46     4      resPool  Ljdk/tools/jlink/plugin/ResourcePool;
           13   46     5  frozenOrder  Ljava/util/List<Ljdk/tools/jlink/plugin/ResourcePoolEntry;>;
           15   44     6            p  Ljdk/tools/jlink/plugin/Plugin;
           16   44     8       resMgr  Ljdk/tools/jlink/internal/ResourcePoolManager;
           36   40     9           pe  Ljdk/tools/jlink/plugin/PluginException;
      Exception table:
        from    to  target  type
          33    34      35  Class jdk.tools.jlink.plugin.PluginException
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
           Name  Flags
      resources  

  public void storeFiles(jdk.tools.jlink.plugin.ResourcePool, jdk.tools.jlink.plugin.ResourcePool, jdk.tools.jlink.internal.BasicImageWriter);
    descriptor: (Ljdk/tools/jlink/plugin/ResourcePool;Ljdk/tools/jlink/plugin/ResourcePool;Ljdk/tools/jlink/internal/BasicImageWriter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.plugin.ResourcePool original
        start local 2 // jdk.tools.jlink.plugin.ResourcePool transformed
        start local 3 // jdk.tools.jlink.internal.BasicImageWriter writer
         0: .line 480
            aload 1 /* original */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 481
            aload 2 /* transformed */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 482
            new jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager
            dup
            aload 0 /* this */
            aload 2 /* transformed */
            invokespecial jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager.<init>:(Ljdk/tools/jlink/internal/ImagePluginStack;Ljdk/tools/jlink/plugin/ResourcePool;)V
            invokevirtual jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager.resourcePool:()Ljdk/tools/jlink/plugin/ResourcePool;
            astore 4 /* lastPool */
        start local 4 // jdk.tools.jlink.plugin.ResourcePool lastPool
         3: .line 483
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.validate:Z
            ifeq 5
         4: .line 484
            aload 4 /* lastPool */
            invokestatic jdk.tools.jlink.internal.ResourcePoolConfiguration.validate:(Ljdk/tools/jlink/plugin/ResourcePool;)Ljava/lang/module/Configuration;
            pop
         5: .line 486
      StackMap locals: jdk.tools.jlink.plugin.ResourcePool
      StackMap stack:
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.imageBuilder:Ljdk/tools/jlink/builder/ImageBuilder;
            aload 4 /* lastPool */
            invokeinterface jdk.tools.jlink.builder.ImageBuilder.storeFiles:(Ljdk/tools/jlink/plugin/ResourcePool;)V
         6: .line 487
            return
        end local 4 // jdk.tools.jlink.plugin.ResourcePool lastPool
        end local 3 // jdk.tools.jlink.internal.BasicImageWriter writer
        end local 2 // jdk.tools.jlink.plugin.ResourcePool transformed
        end local 1 // jdk.tools.jlink.plugin.ResourcePool original
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0    7     1     original  Ljdk/tools/jlink/plugin/ResourcePool;
            0    7     2  transformed  Ljdk/tools/jlink/plugin/ResourcePool;
            0    7     3       writer  Ljdk/tools/jlink/internal/BasicImageWriter;
            3    7     4     lastPool  Ljdk/tools/jlink/plugin/ResourcePool;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
             Name  Flags
      original     
      transformed  
      writer       

  public jdk.tools.jlink.internal.ExecutableImage getExecutableImage();
    descriptor: ()Ljdk/tools/jlink/internal/ExecutableImage;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
         0: .line 490
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.imageBuilder:Ljdk/tools/jlink/builder/ImageBuilder;
            invokeinterface jdk.tools.jlink.builder.ImageBuilder.getExecutableImage:()Ljdk/tools/jlink/internal/ExecutableImage;
            areturn
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/internal/ImagePluginStack;
    Exceptions:
      throws java.io.IOException

  private void lambda$0(jdk.tools.jlink.plugin.Plugin);
    descriptor: (Ljdk/tools/jlink/plugin/Plugin;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.tools.jlink.internal.ImagePluginStack this
        start local 1 // jdk.tools.jlink.plugin.Plugin p
         0: .line 185
            aload 1 /* p */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 186
            aload 1 /* p */
            instanceof jdk.tools.jlink.internal.ResourcePrevisitor
            ifeq 3
         2: .line 187
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.ImagePluginStack.resourcePrevisitors:Ljava/util/List;
            aload 1 /* p */
            checkcast jdk.tools.jlink.internal.ResourcePrevisitor
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.tools.jlink.plugin.Plugin p
        end local 0 // jdk.tools.jlink.internal.ImagePluginStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/tools/jlink/internal/ImagePluginStack;
            0    4     1     p  Ljdk/tools/jlink/plugin/Plugin;

  private static java.util.List lambda$2(jdk.tools.jlink.internal.ExecutableImage, jdk.tools.jlink.plugin.Plugin);
    descriptor: (Ljdk/tools/jlink/internal/ExecutableImage;Ljdk/tools/jlink/plugin/Plugin;)Ljava/util/List;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // jdk.tools.jlink.plugin.Plugin plugin
         0: .line 198
            aload 1 /* plugin */
            checkcast jdk.tools.jlink.internal.PostProcessor
            aload 0
            invokeinterface jdk.tools.jlink.internal.PostProcessor.process:(Ljdk/tools/jlink/internal/ExecutableImage;)Ljava/util/List;
            areturn
        end local 1 // jdk.tools.jlink.plugin.Plugin plugin
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     1  plugin  Ljdk/tools/jlink/plugin/Plugin;

  private static boolean lambda$3(java.util.List);
    descriptor: (Ljava/util/List;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.List lst
         0: .line 199
            aload 0 /* lst */
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.util.List lst
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   lst  Ljava/util/List<Ljava/lang/String;>;

  private static void lambda$4(java.util.List, java.util.List);
    descriptor: (Ljava/util/List;Ljava/util/List;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.List lst
         0: .line 201
            aload 0
            aload 1 /* lst */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         1: .line 202
            return
        end local 1 // java.util.List lst
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1   lst  Ljava/util/List<Ljava/lang/String;>;

  private static void lambda$5(jdk.tools.jlink.internal.ResourcePoolManager, jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings, jdk.tools.jlink.internal.ResourcePrevisitor);
    descriptor: (Ljdk/tools/jlink/internal/ResourcePoolManager;Ljdk/tools/jlink/internal/ImagePluginStack$PreVisitStrings;Ljdk/tools/jlink/internal/ResourcePrevisitor;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 2 // jdk.tools.jlink.internal.ResourcePrevisitor p
         0: .line 231
            aload 2 /* p */
            aload 0
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.resourcePool:()Ljdk/tools/jlink/plugin/ResourcePool;
            aload 1
            invokeinterface jdk.tools.jlink.internal.ResourcePrevisitor.previsit:(Ljdk/tools/jlink/plugin/ResourcePool;Ljdk/tools/jlink/internal/StringTable;)V
         1: .line 232
            return
        end local 2 // jdk.tools.jlink.internal.ResourcePrevisitor p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     2     p  Ljdk/tools/jlink/internal/ResourcePrevisitor;

  private static void lambda$6(jdk.tools.jlink.internal.ResourcePoolManager, java.lang.String);
    descriptor: (Ljdk/tools/jlink/internal/ResourcePoolManager;Ljava/lang/String;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.String s
         0: .line 237
            aload 0
            invokevirtual jdk.tools.jlink.internal.ResourcePoolManager.getStringTable:()Ljdk/tools/jlink/internal/StringTable;
            aload 1 /* s */
            invokeinterface jdk.tools.jlink.internal.StringTable.addString:(Ljava/lang/String;)I
            pop
         1: .line 238
            return
        end local 1 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     s  Ljava/lang/String;
}
SourceFile: "ImagePluginStack.java"
NestMembers:
  jdk.tools.jlink.internal.ImagePluginStack$CheckOrderResourcePoolManager  jdk.tools.jlink.internal.ImagePluginStack$ImageProvider  jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager  jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager$LastModule  jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager  jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager$OrderedResourcePool  jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private final CheckOrderResourcePoolManager = jdk.tools.jlink.internal.ImagePluginStack$CheckOrderResourcePoolManager of jdk.tools.jlink.internal.ImagePluginStack
  public abstract ImageProvider = jdk.tools.jlink.internal.ImagePluginStack$ImageProvider of jdk.tools.jlink.internal.ImagePluginStack
  private LastPoolManager = jdk.tools.jlink.internal.ImagePluginStack$LastPoolManager of jdk.tools.jlink.internal.ImagePluginStack
  public final OrderedResourcePoolManager = jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager of jdk.tools.jlink.internal.ImagePluginStack
  OrderedResourcePool = jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager$OrderedResourcePool of jdk.tools.jlink.internal.ImagePluginStack$OrderedResourcePoolManager
  private final PreVisitStrings = jdk.tools.jlink.internal.ImagePluginStack$PreVisitStrings of jdk.tools.jlink.internal.ImagePluginStack