final class jdk.incubator.jpackage.internal.JLinkBundlerHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.incubator.jpackage.internal.JLinkBundlerHelper
  super_class: java.lang.Object
{
  private static final java.lang.String ALL_MODULE_PATH;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "ALL-MODULE-PATH"

  private static final java.lang.String ALL_DEFAULT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "ALL-DEFAULT"

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.jpackage.internal.JLinkBundlerHelper this
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.incubator.jpackage.internal.JLinkBundlerHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/jpackage/internal/JLinkBundlerHelper;

  static void execute(java.util.Map<java.lang.String, ? super java.lang.Object>, java.nio.file.Path);
    descriptor: (Ljava/util/Map;Ljava/nio/file/Path;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // java.util.Map params
        start local 1 // java.nio.file.Path outputDir
         0: .line 60
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MODULE_PATH:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.util.List
         1: .line 59
            astore 2 /* modulePath */
        start local 2 // java.util.List modulePath
         2: .line 62
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.ADD_MODULES:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.util.Set
         3: .line 61
            astore 3 /* addModules */
        start local 3 // java.util.Set addModules
         4: .line 64
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.LIMIT_MODULES:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.util.Set
         5: .line 63
            astore 4 /* limitModules */
        start local 4 // java.util.Set limitModules
         6: .line 66
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.JLINK_OPTIONS:Ljdk/incubator/jpackage/internal/StandardBundlerParam;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.StandardBundlerParam.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.util.List
         7: .line 65
            astore 5 /* options */
        start local 5 // java.util.List options
         8: .line 68
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.LAUNCHER_DATA:Ljdk/incubator/jpackage/internal/StandardBundlerParam;
         9: .line 69
            aload 0 /* params */
        10: .line 68
            invokevirtual jdk.incubator.jpackage.internal.StandardBundlerParam.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast jdk.incubator.jpackage.internal.LauncherData
            astore 6 /* launcherData */
        start local 6 // jdk.incubator.jpackage.internal.LauncherData launcherData
        11: .line 72
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.BIND_SERVICES:Ljdk/incubator/jpackage/internal/StandardBundlerParam;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.StandardBundlerParam.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
        12: .line 71
            istore 7 /* bindServices */
        start local 7 // boolean bindServices
        13: .line 75
            aload 6 /* launcherData */
            invokevirtual jdk.incubator.jpackage.internal.LauncherData.isModular:()Z
            ifne 15
            aload 3 /* addModules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 15
        14: .line 76
            aload 3 /* addModules */
            ldc "ALL-DEFAULT"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 79
      StackMap locals: java.util.Map java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List jdk.incubator.jpackage.internal.LauncherData int
      StackMap stack:
            aload 2 /* modulePath */
            aload 3 /* addModules */
            aload 4 /* limitModules */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.createModuleList:(Ljava/util/List;Ljava/util/Set;Ljava/util/Set;)Ljava/util/Set;
            astore 8 /* modules */
        start local 8 // java.util.Set modules
        16: .line 81
            aload 6 /* launcherData */
            invokevirtual jdk.incubator.jpackage.internal.LauncherData.isModular:()Z
            ifeq 18
        17: .line 82
            aload 8 /* modules */
            aload 6 /* launcherData */
            invokevirtual jdk.incubator.jpackage.internal.LauncherData.moduleName:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        18: .line 85
      StackMap locals: java.util.Set
      StackMap stack:
            aload 1 /* outputDir */
            aload 2 /* modulePath */
            aload 8 /* modules */
            aload 4 /* limitModules */
        19: .line 86
            aload 5 /* options */
            iload 7 /* bindServices */
        20: .line 85
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.runJLink:(Ljava/nio/file/Path;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/List;Z)V
        21: .line 87
            return
        end local 8 // java.util.Set modules
        end local 7 // boolean bindServices
        end local 6 // jdk.incubator.jpackage.internal.LauncherData launcherData
        end local 5 // java.util.List options
        end local 4 // java.util.Set limitModules
        end local 3 // java.util.Set addModules
        end local 2 // java.util.List modulePath
        end local 1 // java.nio.file.Path outputDir
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0        params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            0   22     1     outputDir  Ljava/nio/file/Path;
            2   22     2    modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            4   22     3    addModules  Ljava/util/Set<Ljava/lang/String;>;
            6   22     4  limitModules  Ljava/util/Set<Ljava/lang/String;>;
            8   22     5       options  Ljava/util/List<Ljava/lang/String;>;
           11   22     6  launcherData  Ljdk/incubator/jpackage/internal/LauncherData;
           13   22     7  bindServices  Z
           16   22     8       modules  Ljava/util/Set<Ljava/lang/String;>;
    Exceptions:
      throws java.io.IOException, jdk.incubator.jpackage.internal.PackagerException
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;Ljava/nio/file/Path;)V
    MethodParameters:
           Name  Flags
      params     
      outputDir  

  private static java.util.Set<java.lang.String> getDefaultModules(java.util.Collection<java.nio.file.Path>, java.util.Collection<java.lang.String>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.util.Collection paths
        start local 1 // java.util.Collection addModules
         0: .line 97
            invokestatic java.lang.module.ModuleFinder.ofSystem:()Ljava/lang/module/ModuleFinder;
            invokeinterface java.lang.module.ModuleFinder.findAll:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         1: .line 98
            invokedynamic apply()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;
                  java/lang/module/ModuleReference.descriptor()Ljava/lang/module/ModuleDescriptor; (5)
                  (Ljava/lang/module/ModuleReference;)Ljava/lang/module/ModuleDescriptor;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         2: .line 99
            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/incubator/jpackage/internal/JLinkBundlerHelper.exportsAPI(Ljava/lang/module/ModuleDescriptor;)Z (6)
                  (Ljava/lang/module/ModuleDescriptor;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         3: .line 100
            invokedynamic apply()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;
                  java/lang/module/ModuleDescriptor.name()Ljava/lang/String; (5)
                  (Ljava/lang/module/ModuleDescriptor;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         4: .line 97
            astore 2 /* systemRoots */
        start local 2 // java.util.stream.Stream systemRoots
         5: .line 102
            aload 2 /* systemRoots */
         6: .line 103
            aload 1 /* addModules */
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
         7: .line 102
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
         8: .line 103
            invokestatic java.util.stream.Collectors.toSet:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Set
         9: .line 102
            astore 3 /* roots */
        start local 3 // java.util.Set roots
        10: .line 105
            aload 0 /* paths */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.createModuleFinder:(Ljava/util/Collection;)Ljava/lang/module/ModuleFinder;
            astore 4 /* finder */
        start local 4 // java.lang.module.ModuleFinder finder
        11: .line 107
            invokestatic java.lang.module.Configuration.empty:()Ljava/lang/module/Configuration;
        12: .line 108
            aload 4 /* finder */
            iconst_0
            anewarray java.nio.file.Path
            invokestatic java.lang.module.ModuleFinder.of:([Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
            aload 3 /* roots */
            invokevirtual java.lang.module.Configuration.resolveAndBind:(Ljava/lang/module/ModuleFinder;Ljava/lang/module/ModuleFinder;Ljava/util/Collection;)Ljava/lang/module/Configuration;
        13: .line 109
            invokevirtual java.lang.module.Configuration.modules:()Ljava/util/Set;
        14: .line 110
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        15: .line 111
            invokedynamic apply()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;
                  java/lang/module/ResolvedModule.name()Ljava/lang/String; (5)
                  (Ljava/lang/module/ResolvedModule;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        16: .line 112
            invokestatic java.util.stream.Collectors.toSet:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Set
        17: .line 107
            areturn
        end local 4 // java.lang.module.ModuleFinder finder
        end local 3 // java.util.Set roots
        end local 2 // java.util.stream.Stream systemRoots
        end local 1 // java.util.Collection addModules
        end local 0 // java.util.Collection paths
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0        paths  Ljava/util/Collection<Ljava/nio/file/Path;>;
            0   18     1   addModules  Ljava/util/Collection<Ljava/lang/String;>;
            5   18     2  systemRoots  Ljava/util/stream/Stream<Ljava/lang/String;>;
           10   18     3        roots  Ljava/util/Set<Ljava/lang/String;>;
           11   18     4       finder  Ljava/lang/module/ModuleFinder;
    Signature: (Ljava/util/Collection<Ljava/nio/file/Path;>;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
            Name  Flags
      paths       
      addModules  

  private static boolean exportsAPI(java.lang.module.ModuleDescriptor);
    descriptor: (Ljava/lang/module/ModuleDescriptor;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.module.ModuleDescriptor descriptor
         0: .line 119
            aload 0 /* descriptor */
            invokevirtual java.lang.module.ModuleDescriptor.exports:()Ljava/util/Set;
         1: .line 120
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         2: .line 121
            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/incubator/jpackage/internal/JLinkBundlerHelper.lambda$4(Ljava/lang/module/ModuleDescriptor$Exports;)Z (6)
                  (Ljava/lang/module/ModuleDescriptor$Exports;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
         3: .line 119
            ireturn
        end local 0 // java.lang.module.ModuleDescriptor descriptor
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  descriptor  Ljava/lang/module/ModuleDescriptor;
    MethodParameters:
            Name  Flags
      descriptor  

  static java.lang.module.ModuleFinder createModuleFinder(java.util.Collection<java.nio.file.Path>);
    descriptor: (Ljava/util/Collection;)Ljava/lang/module/ModuleFinder;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // java.util.Collection modulePath
         0: .line 125
            iconst_2
            anewarray java.lang.module.ModuleFinder
            dup
            iconst_0
         1: .line 126
            invokestatic java.util.jar.JarFile.runtimeVersion:()Ljava/lang/Runtime$Version;
            iconst_1
         2: .line 127
            aload 0 /* modulePath */
            invokedynamic apply()Ljava/util/function/IntFunction;
              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:
                  (I)Ljava/lang/Object;
                  jdk/incubator/jpackage/internal/JLinkBundlerHelper.lambda$5(I)[Ljava/nio/file/Path; (6)
                  (I)[Ljava/nio/file/Path;
            invokeinterface java.util.Collection.toArray:(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
            checkcast java.nio.file.Path[]
         3: .line 126
            invokestatic jdk.internal.module.ModulePath.of:(Ljava/lang/Runtime$Version;Z[Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
            aastore
            dup
            iconst_1
         4: .line 128
            invokestatic java.lang.module.ModuleFinder.ofSystem:()Ljava/lang/module/ModuleFinder;
            aastore
         5: .line 125
            invokestatic java.lang.module.ModuleFinder.compose:([Ljava/lang/module/ModuleFinder;)Ljava/lang/module/ModuleFinder;
            areturn
        end local 0 // java.util.Collection modulePath
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0  modulePath  Ljava/util/Collection<Ljava/nio/file/Path;>;
    Signature: (Ljava/util/Collection<Ljava/nio/file/Path;>;)Ljava/lang/module/ModuleFinder;
    MethodParameters:
            Name  Flags
      modulePath  

  private static java.util.Set<java.lang.String> createModuleList(java.util.List<java.nio.file.Path>, java.util.Set<java.lang.String>, java.util.Set<java.lang.String>);
    descriptor: (Ljava/util/List;Ljava/util/Set;Ljava/util/Set;)Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // java.util.List paths
        start local 1 // java.util.Set addModules
        start local 2 // java.util.Set limitModules
         0: .line 134
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 3 /* modules */
        start local 3 // java.util.Set modules
         1: .line 137
            ldc "ALL-MODULE-PATH"
         2: .line 138
            aload 0 /* paths */
            invokedynamic get(Ljava/util/List;)Ljava/util/function/Supplier;
              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;
                  jdk/incubator/jpackage/internal/JLinkBundlerHelper.lambda$6(Ljava/util/List;)Ljava/util/Collection; (6)
                  ()Ljava/util/Collection;
         3: .line 144
            ldc "ALL-DEFAULT"
         4: .line 145
            aload 0 /* paths */
            aload 3 /* modules */
            invokedynamic get(Ljava/util/List;Ljava/util/Set;)Ljava/util/function/Supplier;
              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;
                  jdk/incubator/jpackage/internal/JLinkBundlerHelper.lambda$7(Ljava/util/List;Ljava/util/Set;)Ljava/util/Collection; (6)
                  ()Ljava/util/Collection;
         5: .line 136
            invokestatic java.util.Map.of:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
            astore 4 /* phonyModules */
        start local 4 // java.util.Map phonyModules
         6: .line 147
            aconst_null
            astore 5 /* phonyModule */
        start local 5 // java.util.function.Supplier phonyModule
         7: .line 148
            aload 1 /* addModules */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 12
      StackMap locals: java.util.List java.util.Set java.util.Set java.util.Set java.util.Map java.util.function.Supplier top java.util.Iterator
      StackMap stack:
         8: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* module */
        start local 6 // java.lang.String module
         9: .line 149
            aload 4 /* phonyModules */
            aload 6 /* module */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.function.Supplier
            astore 5 /* phonyModule */
        10: .line 150
            aload 5 /* phonyModule */
            ifnonnull 12
        11: .line 151
            aload 3 /* modules */
            aload 6 /* module */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.lang.String module
        12: .line 148
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        13: .line 155
            aload 5 /* phonyModule */
            ifnull 15
        14: .line 156
            aload 3 /* modules */
            aload 5 /* phonyModule */
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast java.util.Collection
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        15: .line 159
      StackMap locals: java.util.List java.util.Set java.util.Set java.util.Set java.util.Map java.util.function.Supplier
      StackMap stack:
            aload 3 /* modules */
            areturn
        end local 5 // java.util.function.Supplier phonyModule
        end local 4 // java.util.Map phonyModules
        end local 3 // java.util.Set modules
        end local 2 // java.util.Set limitModules
        end local 1 // java.util.Set addModules
        end local 0 // java.util.List paths
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0         paths  Ljava/util/List<Ljava/nio/file/Path;>;
            0   16     1    addModules  Ljava/util/Set<Ljava/lang/String;>;
            0   16     2  limitModules  Ljava/util/Set<Ljava/lang/String;>;
            1   16     3       modules  Ljava/util/Set<Ljava/lang/String;>;
            6   16     4  phonyModules  Ljava/util/Map<Ljava/lang/String;Ljava/util/function/Supplier<Ljava/util/Collection<Ljava/lang/String;>;>;>;
            7   16     5   phonyModule  Ljava/util/function/Supplier<Ljava/util/Collection<Ljava/lang/String;>;>;
            9   12     6        module  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/nio/file/Path;>;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/lang/String;>;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
              Name  Flags
      paths         
      addModules    
      limitModules  

  private static void runJLink(java.nio.file.Path, java.util.List<java.nio.file.Path>, java.util.Set<java.lang.String>, java.util.Set<java.lang.String>, java.util.List<java.lang.String>, );
    descriptor: (Ljava/nio/file/Path;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/List;Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=11, args_size=6
        start local 0 // java.nio.file.Path output
        start local 1 // java.util.List modulePath
        start local 2 // java.util.Set modules
        start local 3 // java.util.Set limitModules
        start local 4 // java.util.List options
        start local 5 // boolean bindServices
         0: .line 167
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* args */
        start local 6 // java.util.ArrayList args
         1: .line 168
            aload 6 /* args */
            ldc "--output"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 169
            aload 6 /* args */
            aload 0 /* output */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         3: .line 170
            aload 1 /* modulePath */
            ifnull 6
            aload 1 /* modulePath */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 6
         4: .line 171
            aload 6 /* args */
            ldc "--module-path"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         5: .line 172
            aload 6 /* args */
            aload 1 /* modulePath */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getPathList:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         6: .line 174
      StackMap locals: java.util.ArrayList
      StackMap stack:
            aload 2 /* modules */
            ifnull 9
            aload 2 /* modules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 9
         7: .line 175
            aload 6 /* args */
            ldc "--add-modules"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         8: .line 176
            aload 6 /* args */
            aload 2 /* modules */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getStringList:(Ljava/util/Set;)Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         9: .line 178
      StackMap locals:
      StackMap stack:
            aload 3 /* limitModules */
            ifnull 12
            aload 3 /* limitModules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 12
        10: .line 179
            aload 6 /* args */
            ldc "--limit-modules"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        11: .line 180
            aload 6 /* args */
            aload 3 /* limitModules */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getStringList:(Ljava/util/Set;)Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        12: .line 182
      StackMap locals:
      StackMap stack:
            aload 4 /* options */
            ifnull 21
        13: .line 183
            aload 4 /* options */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 20
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List int java.util.ArrayList top java.util.Iterator
      StackMap stack:
        14: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* option */
        start local 7 // java.lang.String option
        15: .line 184
            aload 7 /* option */
            ldc "--output"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 18
        16: .line 185
            aload 7 /* option */
            ldc "--add-modules"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 18
        17: .line 186
            aload 7 /* option */
            ldc "--module-path"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
        18: .line 187
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List int java.util.ArrayList java.lang.String java.util.Iterator
      StackMap stack:
            new jdk.incubator.jpackage.internal.PackagerException
            dup
            ldc "error.blocked.option"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 7 /* option */
            aastore
            invokespecial jdk.incubator.jpackage.internal.PackagerException.<init>:(Ljava/lang/String;[Ljava/lang/String;)V
            athrow
        19: .line 189
      StackMap locals:
      StackMap stack:
            aload 6 /* args */
            aload 7 /* option */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.lang.String option
        20: .line 183
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List int java.util.ArrayList top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        21: .line 192
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List int java.util.ArrayList
      StackMap stack:
            iload 5 /* bindServices */
            ifeq 23
        22: .line 193
            aload 6 /* args */
            ldc "--bind-services"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        23: .line 196
      StackMap locals:
      StackMap stack:
            new java.io.StringWriter
            dup
            invokespecial java.io.StringWriter.<init>:()V
            astore 7 /* writer */
        start local 7 // java.io.StringWriter writer
        24: .line 197
            new java.io.PrintWriter
            dup
            aload 7 /* writer */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
            astore 8 /* pw */
        start local 8 // java.io.PrintWriter pw
        25: .line 199
            new java.lang.StringBuilder
            dup
            ldc "jlink arguments: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* args */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.incubator.jpackage.internal.Log.verbose:(Ljava/lang/String;)V
        26: .line 200
            getstatic jdk.incubator.jpackage.internal.JLinkBundlerHelper$LazyLoad.JLINK_TOOL:Ljava/util/spi/ToolProvider;
            aload 8 /* pw */
            aload 8 /* pw */
            aload 6 /* args */
            iconst_0
            anewarray java.lang.String
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            invokeinterface java.util.spi.ToolProvider.run:(Ljava/io/PrintWriter;Ljava/io/PrintWriter;[Ljava/lang/String;)I
            istore 9 /* retVal */
        start local 9 // int retVal
        27: .line 201
            aload 7 /* writer */
            invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
            astore 10 /* jlinkOut */
        start local 10 // java.lang.String jlinkOut
        28: .line 203
            iload 9 /* retVal */
            ifeq 30
        29: .line 204
            new jdk.incubator.jpackage.internal.PackagerException
            dup
            ldc "error.jlink.failed"
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 10 /* jlinkOut */
            aastore
            invokespecial jdk.incubator.jpackage.internal.PackagerException.<init>:(Ljava/lang/String;[Ljava/lang/String;)V
            athrow
        30: .line 207
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.List int java.util.ArrayList java.io.StringWriter java.io.PrintWriter int java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "jlink output: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* jlinkOut */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic jdk.incubator.jpackage.internal.Log.verbose:(Ljava/lang/String;)V
        31: .line 208
            return
        end local 10 // java.lang.String jlinkOut
        end local 9 // int retVal
        end local 8 // java.io.PrintWriter pw
        end local 7 // java.io.StringWriter writer
        end local 6 // java.util.ArrayList args
        end local 5 // boolean bindServices
        end local 4 // java.util.List options
        end local 3 // java.util.Set limitModules
        end local 2 // java.util.Set modules
        end local 1 // java.util.List modulePath
        end local 0 // java.nio.file.Path output
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   32     0        output  Ljava/nio/file/Path;
            0   32     1    modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            0   32     2       modules  Ljava/util/Set<Ljava/lang/String;>;
            0   32     3  limitModules  Ljava/util/Set<Ljava/lang/String;>;
            0   32     4       options  Ljava/util/List<Ljava/lang/String;>;
            0   32     5  bindServices  Z
            1   32     6          args  Ljava/util/ArrayList<Ljava/lang/String;>;
           15   20     7        option  Ljava/lang/String;
           24   32     7        writer  Ljava/io/StringWriter;
           25   32     8            pw  Ljava/io/PrintWriter;
           27   32     9        retVal  I
           28   32    10      jlinkOut  Ljava/lang/String;
    Exceptions:
      throws jdk.incubator.jpackage.internal.PackagerException, java.io.IOException
    Signature: (Ljava/nio/file/Path;Ljava/util/List<Ljava/nio/file/Path;>;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/List<Ljava/lang/String;>;Z)V
    MethodParameters:
              Name  Flags
      output        
      modulePath    
      modules       
      limitModules  
      options       
      bindServices  

  private static java.lang.String getPathList(java.util.List<java.nio.file.Path>);
    descriptor: (Ljava/util/List;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.List pathList
         0: .line 211
            aload 0 /* pathList */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         1: .line 212
            invokedynamic apply()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;
                  java/nio/file/Path.toString()Ljava/lang/String; (9 itf)
                  (Ljava/nio/file/Path;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         2: .line 213
            invokedynamic apply()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;
                  java/util/regex/Matcher.quoteReplacement(Ljava/lang/String;)Ljava/lang/String; (6)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 214
            getstatic java.io.File.pathSeparator:Ljava/lang/String;
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
         4: .line 211
            areturn
        end local 0 // java.util.List pathList
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0  pathList  Ljava/util/List<Ljava/nio/file/Path;>;
    Signature: (Ljava/util/List<Ljava/nio/file/Path;>;)Ljava/lang/String;
    MethodParameters:
          Name  Flags
      pathList  

  private static java.lang.String getStringList(java.util.Set<java.lang.String>);
    descriptor: (Ljava/util/Set;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Set strings
         0: .line 218
            aload 0 /* strings */
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         1: .line 219
            ldc ","
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
         2: .line 218
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.util.Set strings
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  strings  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Ljava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
         Name  Flags
      strings  

  private static boolean lambda$4(java.lang.module.ModuleDescriptor$Exports);
    descriptor: (Ljava/lang/module/ModuleDescriptor$Exports;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.module.ModuleDescriptor$Exports e
         0: .line 121
            aload 0 /* e */
            invokevirtual java.lang.module.ModuleDescriptor$Exports.isQualified:()Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.module.ModuleDescriptor$Exports e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Ljava/lang/module/ModuleDescriptor$Exports;

  private static java.nio.file.Path[] lambda$5(int);
    descriptor: (I)[Ljava/nio/file/Path;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            iload 0
            anewarray java.nio.file.Path
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.util.Collection lambda$6(java.util.List);
    descriptor: (Ljava/util/List;)Ljava/util/Collection;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: .line 138
            aload 0
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.createModuleFinder:(Ljava/util/Collection;)Ljava/lang/module/ModuleFinder;
         1: .line 139
            invokeinterface java.lang.module.ModuleFinder.findAll:()Ljava/util/Set;
         2: .line 140
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         3: .line 141
            invokedynamic apply()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;
                  java/lang/module/ModuleReference.descriptor()Ljava/lang/module/ModuleDescriptor; (5)
                  (Ljava/lang/module/ModuleReference;)Ljava/lang/module/ModuleDescriptor;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         4: .line 142
            invokedynamic apply()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;
                  java/lang/module/ModuleDescriptor.name()Ljava/lang/String; (5)
                  (Ljava/lang/module/ModuleDescriptor;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 143
            invokestatic java.util.stream.Collectors.toSet:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Collection
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.util.Collection lambda$7(java.util.List, java.util.Set);
    descriptor: (Ljava/util/List;Ljava/util/Set;)Ljava/util/Collection;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 145
            aload 0
            aload 1
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getDefaultModules:(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Set;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "JLinkBundlerHelper.java"
NestMembers:
  jdk.incubator.jpackage.internal.JLinkBundlerHelper$LazyLoad
InnerClasses:
  public final Version = java.lang.Runtime$Version of java.lang.Runtime
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Exports = java.lang.module.ModuleDescriptor$Exports of java.lang.module.ModuleDescriptor
  private LazyLoad = jdk.incubator.jpackage.internal.JLinkBundlerHelper$LazyLoad of jdk.incubator.jpackage.internal.JLinkBundlerHelper