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.util.ResourceBundle I18N;
    descriptor: Ljava/util/ResourceBundle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final java.util.spi.ToolProvider JLINK_TOOL;
    descriptor: Ljava/util/spi/ToolProvider;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 68
            ldc "jdk.incubator.jpackage.internal.resources.MainResources"
         1: .line 67
            invokestatic java.util.ResourceBundle.getBundle:(Ljava/lang/String;)Ljava/util/ResourceBundle;
            putstatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.I18N:Ljava/util/ResourceBundle;
         2: .line 71
            ldc "jlink"
            invokestatic java.util.spi.ToolProvider.findFirst:(Ljava/lang/String;)Ljava/util/Optional;
            invokevirtual java.util.Optional.orElseThrow:()Ljava/lang/Object;
            checkcast java.util.spi.ToolProvider
         3: .line 70
            putstatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.JLINK_TOOL:Ljava/util/spi/ToolProvider;
         4: .line 71
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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 65
            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 java.io.File getMainJar(java.util.Map<java.lang.String, ? super java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/io/File;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.util.Map params
         0: .line 74
            aconst_null
            astore 1 /* result */
        start local 1 // java.io.File result
         1: .line 76
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MAIN_JAR:Ljdk/incubator/jpackage/internal/StandardBundlerParam;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.StandardBundlerParam.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast jdk.incubator.jpackage.internal.RelativeFileSet
         2: .line 75
            astore 2 /* fileset */
        start local 2 // jdk.incubator.jpackage.internal.RelativeFileSet fileset
         3: .line 78
            aload 2 /* fileset */
            ifnull 13
         4: .line 79
            aload 2 /* fileset */
            invokevirtual jdk.incubator.jpackage.internal.RelativeFileSet.getIncludedFiles:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* filename */
        start local 3 // java.lang.String filename
         5: .line 80
            aload 2 /* fileset */
            invokevirtual jdk.incubator.jpackage.internal.RelativeFileSet.getBaseDirectory:()Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
         6: .line 81
            aload 3 /* filename */
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
         7: .line 80
            astore 1 /* result */
         8: .line 83
            aload 1 /* result */
            ifnull 9
            aload 1 /* result */
            invokevirtual java.io.File.exists:()Z
            ifne 13
         9: .line 85
      StackMap locals: java.io.File jdk.incubator.jpackage.internal.RelativeFileSet java.lang.String
      StackMap stack:
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.SOURCE_DIR:Ljdk/incubator/jpackage/internal/StandardBundlerParam;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.StandardBundlerParam.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.lang.String
        10: .line 84
            astore 4 /* srcdir */
        start local 4 // java.lang.String srcdir
        11: .line 87
            aload 4 /* srcdir */
            ifnull 13
        12: .line 88
            new java.io.File
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* srcdir */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* filename */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 1 /* result */
        end local 4 // java.lang.String srcdir
        end local 3 // java.lang.String filename
        13: .line 93
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // jdk.incubator.jpackage.internal.RelativeFileSet fileset
        end local 1 // java.io.File result
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0    params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            1   14     1    result  Ljava/io/File;
            3   14     2   fileset  Ljdk/incubator/jpackage/internal/RelativeFileSet;
            5   13     3  filename  Ljava/lang/String;
           11   13     4    srcdir  Ljava/lang/String;
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;)Ljava/io/File;
    MethodParameters:
        Name  Flags
      params  

  static java.lang.String getMainClassFromModule(java.util.Map<java.lang.String, ? super java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.util.Map params
         0: .line 97
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MODULE:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* mainModule */
        start local 1 // java.lang.String mainModule
         1: .line 98
            aload 1 /* mainModule */
            ifnull 17
         2: .line 100
            aload 1 /* mainModule */
            ldc "/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 2 /* index */
        start local 2 // int index
         3: .line 101
            iload 2 /* index */
            ifle 5
         4: .line 102
            aload 1 /* mainModule */
            iload 2 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
         5: .line 105
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 0 /* params */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getMainModuleDescription:(Ljava/util/Map;)Ljava/lang/module/ModuleDescriptor;
         6: .line 104
            astore 3 /* descriptor */
        start local 3 // java.lang.module.ModuleDescriptor descriptor
         7: .line 106
            aload 3 /* descriptor */
            ifnull 17
         8: .line 107
            aload 3 /* descriptor */
            invokevirtual java.lang.module.ModuleDescriptor.mainClass:()Ljava/util/Optional;
            astore 4 /* mainClass */
        start local 4 // java.util.Optional mainClass
         9: .line 108
            aload 4 /* mainClass */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 17
        10: .line 109
            getstatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.I18N:Ljava/util/ResourceBundle;
        11: .line 110
            ldc "message.module-class"
        12: .line 109
            invokevirtual java.util.ResourceBundle.getString:(Ljava/lang/String;)Ljava/lang/String;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        13: .line 111
            aload 4 /* mainClass */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            aastore
            dup
            iconst_1
        14: .line 112
            aload 0 /* params */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getMainModule:(Ljava/util/Map;)Ljava/lang/String;
            aastore
        15: .line 109
            invokestatic java.text.MessageFormat.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic jdk.incubator.jpackage.internal.Log.verbose:(Ljava/lang/String;)V
        16: .line 113
            aload 4 /* mainClass */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.String
            areturn
        end local 4 // java.util.Optional mainClass
        end local 3 // java.lang.module.ModuleDescriptor descriptor
        end local 2 // int index
        17: .line 118
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String mainModule
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0      params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            1   18     1  mainModule  Ljava/lang/String;
            3   17     2       index  I
            7   17     3  descriptor  Ljava/lang/module/ModuleDescriptor;
            9   17     4   mainClass  Ljava/util/Optional<Ljava/lang/String;>;
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;)Ljava/lang/String;
    MethodParameters:
        Name  Flags
      params  

  static java.lang.String getMainModule(java.util.Map<java.lang.String, ? super java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.util.Map params
         0: .line 122
            aconst_null
            astore 1 /* result */
        start local 1 // java.lang.String result
         1: .line 123
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MODULE:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* mainModule */
        start local 2 // java.lang.String mainModule
         2: .line 125
            aload 2 /* mainModule */
            ifnull 8
         3: .line 126
            aload 2 /* mainModule */
            ldc "/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 3 /* index */
        start local 3 // int index
         4: .line 128
            iload 3 /* index */
            ifle 7
         5: .line 129
            aload 2 /* mainModule */
            iconst_0
            iload 3 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* result */
         6: .line 130
            goto 8
         7: .line 131
      StackMap locals: java.lang.String java.lang.String int
      StackMap stack:
            aload 2 /* mainModule */
            astore 1 /* result */
        end local 3 // int index
         8: .line 135
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // java.lang.String mainModule
        end local 1 // java.lang.String result
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0      params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            1    9     1      result  Ljava/lang/String;
            2    9     2  mainModule  Ljava/lang/String;
            4    8     3       index  I
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;)Ljava/lang/String;
    MethodParameters:
        Name  Flags
      params  

  static void execute(java.util.Map<java.lang.String, ? super java.lang.Object>, jdk.incubator.jpackage.internal.AbstractAppImageBuilder);
    descriptor: (Ljava/util/Map;Ljdk/incubator/jpackage/internal/AbstractAppImageBuilder;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // java.util.Map params
        start local 1 // jdk.incubator.jpackage.internal.AbstractAppImageBuilder imageBuilder
         0: .line 143
            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 142
            astore 2 /* modulePath */
        start local 2 // java.util.List modulePath
         2: .line 145
            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 144
            astore 3 /* addModules */
        start local 3 // java.util.Set addModules
         4: .line 147
            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 146
            astore 4 /* limitModules */
        start local 4 // java.util.Set limitModules
         6: .line 148
            aload 1 /* imageBuilder */
            invokevirtual jdk.incubator.jpackage.internal.AbstractAppImageBuilder.getRuntimeRoot:()Ljava/nio/file/Path;
            astore 5 /* outputDir */
        start local 5 // java.nio.file.Path outputDir
         7: .line 149
            aload 0 /* params */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getMainJar:(Ljava/util/Map;)Ljava/io/File;
            astore 6 /* mainJar */
        start local 6 // java.io.File mainJar
         8: .line 150
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.Unknown:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 7 /* mainJarType */
        start local 7 // jdk.incubator.jpackage.internal.ModFile$ModType mainJarType
         9: .line 152
            aload 6 /* mainJar */
            ifnull 12
        10: .line 153
            new jdk.incubator.jpackage.internal.ModFile
            dup
            aload 6 /* mainJar */
            invokespecial jdk.incubator.jpackage.internal.ModFile.<init>:(Ljava/io/File;)V
            invokevirtual jdk.incubator.jpackage.internal.ModFile.getModType:()Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 7 /* mainJarType */
        11: .line 154
            goto 14
      StackMap locals: java.util.Map jdk.incubator.jpackage.internal.AbstractAppImageBuilder java.util.List java.util.Set java.util.Set java.nio.file.Path java.io.File jdk.incubator.jpackage.internal.ModFile$ModType
      StackMap stack:
        12: getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MODULE:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.fetchFrom:(Ljava/util/Map;)Ljava/lang/Object;
            ifnonnull 14
        13: .line 156
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.UnnamedJar:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 7 /* mainJarType */
        14: .line 160
      StackMap locals:
      StackMap stack:
            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
        15: .line 159
            istore 8 /* bindServices */
        start local 8 // boolean bindServices
        16: .line 163
            aload 0 /* params */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getMainModule:(Ljava/util/Map;)Ljava/lang/String;
            astore 9 /* mainModule */
        start local 9 // java.lang.String mainModule
        17: .line 164
            aload 9 /* mainModule */
            ifnonnull 25
        18: .line 165
            aload 7 /* mainJarType */
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.UnnamedJar:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            if_acmpne 22
        19: .line 166
            aload 3 /* addModules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 25
        20: .line 168
            aload 3 /* addModules */
            ldc "ALL-DEFAULT"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        21: .line 170
            goto 25
      StackMap locals: int java.lang.String
      StackMap stack:
        22: aload 7 /* mainJarType */
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.Unknown:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            if_acmpeq 24
        23: .line 171
            aload 7 /* mainJarType */
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.ModularJar:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            if_acmpne 25
        24: .line 172
      StackMap locals:
      StackMap stack:
            aload 3 /* addModules */
            ldc "ALL-DEFAULT"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        25: .line 176
      StackMap locals:
      StackMap stack:
            new jdk.incubator.jpackage.internal.JLinkBundlerHelper$ModuleHelper
            dup
        26: .line 177
            aload 2 /* modulePath */
            aload 3 /* addModules */
            aload 4 /* limitModules */
        27: .line 176
            invokespecial jdk.incubator.jpackage.internal.JLinkBundlerHelper$ModuleHelper.<init>:(Ljava/util/List;Ljava/util/Set;Ljava/util/Set;)V
        28: .line 177
            invokevirtual jdk.incubator.jpackage.internal.JLinkBundlerHelper$ModuleHelper.modules:()Ljava/util/Set;
        29: .line 176
            astore 10 /* modules */
        start local 10 // java.util.Set modules
        30: .line 179
            aload 9 /* mainModule */
            ifnull 32
        31: .line 180
            aload 10 /* modules */
            aload 9 /* mainModule */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        32: .line 183
      StackMap locals: java.util.Set
      StackMap stack:
            aload 5 /* outputDir */
            aload 2 /* modulePath */
            aload 10 /* modules */
            aload 4 /* limitModules */
        33: .line 184
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            iload 8 /* bindServices */
        34: .line 183
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.runJLink:(Ljava/nio/file/Path;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/HashMap;Z)V
        35: .line 186
            aload 1 /* imageBuilder */
            aload 0 /* params */
            invokevirtual jdk.incubator.jpackage.internal.AbstractAppImageBuilder.prepareApplicationFiles:(Ljava/util/Map;)V
        36: .line 187
            return
        end local 10 // java.util.Set modules
        end local 9 // java.lang.String mainModule
        end local 8 // boolean bindServices
        end local 7 // jdk.incubator.jpackage.internal.ModFile$ModType mainJarType
        end local 6 // java.io.File mainJar
        end local 5 // java.nio.file.Path outputDir
        end local 4 // java.util.Set limitModules
        end local 3 // java.util.Set addModules
        end local 2 // java.util.List modulePath
        end local 1 // jdk.incubator.jpackage.internal.AbstractAppImageBuilder imageBuilder
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   37     0        params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            0   37     1  imageBuilder  Ljdk/incubator/jpackage/internal/AbstractAppImageBuilder;
            2   37     2    modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            4   37     3    addModules  Ljava/util/Set<Ljava/lang/String;>;
            6   37     4  limitModules  Ljava/util/Set<Ljava/lang/String;>;
            7   37     5     outputDir  Ljava/nio/file/Path;
            8   37     6       mainJar  Ljava/io/File;
            9   37     7   mainJarType  Ljdk/incubator/jpackage/internal/ModFile$ModType;
           16   37     8  bindServices  Z
           17   37     9    mainModule  Ljava/lang/String;
           30   37    10       modules  Ljava/util/Set<Ljava/lang/String;>;
    Exceptions:
      throws java.io.IOException, java.lang.Exception
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;Ljdk/incubator/jpackage/internal/AbstractAppImageBuilder;)V
    MethodParameters:
              Name  Flags
      params        
      imageBuilder  

  static java.nio.file.Path findPathOfModule(java.util.List<java.nio.file.Path>, java.lang.String);
    descriptor: (Ljava/util/List;Ljava/lang/String;)Ljava/nio/file/Path;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // java.util.List modulePath
        start local 1 // java.lang.String moduleName
         0: .line 193
            aload 0 /* modulePath */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: java.util.List java.lang.String top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 2 /* path */
        start local 2 // java.nio.file.Path path
         2: .line 194
            aload 2 /* path */
            aload 1 /* moduleName */
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 4 /* moduleNamePath */
        start local 4 // java.nio.file.Path moduleNamePath
         3: .line 196
            aload 4 /* moduleNamePath */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 5
         4: .line 197
            aload 2 /* path */
            areturn
        end local 4 // java.nio.file.Path moduleNamePath
        end local 2 // java.nio.file.Path path
         5: .line 193
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 201
            aconst_null
            areturn
        end local 1 // java.lang.String moduleName
        end local 0 // java.util.List modulePath
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0      modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            0    7     1      moduleName  Ljava/lang/String;
            2    5     2            path  Ljava/nio/file/Path;
            3    5     4  moduleNamePath  Ljava/nio/file/Path;
    Signature: (Ljava/util/List<Ljava/nio/file/Path;>;Ljava/lang/String;)Ljava/nio/file/Path;
    MethodParameters:
            Name  Flags
      modulePath  
      moduleName  

  static java.lang.module.ModuleDescriptor getMainModuleDescription(java.util.Map<java.lang.String, ? super java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/lang/module/ModuleDescriptor;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.util.Map params
         0: .line 205
            aload 0 /* params */
            getstatic jdk.incubator.jpackage.internal.StandardBundlerParam.MODULE:Ljdk/incubator/jpackage/internal/BundlerParamInfo;
            invokevirtual jdk.incubator.jpackage.internal.BundlerParamInfo.getID:()Ljava/lang/String;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            istore 1 /* hasModule */
        start local 1 // boolean hasModule
         1: .line 206
            iload 1 /* hasModule */
            ifeq 9
         2: .line 207
            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
            astore 2 /* modulePath */
        start local 2 // java.util.List modulePath
         3: .line 208
            aload 2 /* modulePath */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 9
         4: .line 209
            aload 2 /* modulePath */
            iconst_0
            anewarray java.nio.file.Path
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.nio.file.Path[]
            invokestatic java.lang.module.ModuleFinder.of:([Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
            astore 3 /* finder */
        start local 3 // java.lang.module.ModuleFinder finder
         5: .line 210
            aload 0 /* params */
            invokestatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.getMainModule:(Ljava/util/Map;)Ljava/lang/String;
            astore 4 /* mainModule */
        start local 4 // java.lang.String mainModule
         6: .line 211
            aload 3 /* finder */
            aload 4 /* mainModule */
            invokeinterface java.lang.module.ModuleFinder.find:(Ljava/lang/String;)Ljava/util/Optional;
            astore 5 /* omref */
        start local 5 // java.util.Optional omref
         7: .line 212
            aload 5 /* omref */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 9
         8: .line 213
            aload 5 /* omref */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.module.ModuleReference
            invokevirtual java.lang.module.ModuleReference.descriptor:()Ljava/lang/module/ModuleDescriptor;
            areturn
        end local 5 // java.util.Optional omref
        end local 4 // java.lang.String mainModule
        end local 3 // java.lang.module.ModuleFinder finder
        end local 2 // java.util.List modulePath
         9: .line 218
      StackMap locals: int
      StackMap stack:
            aconst_null
            areturn
        end local 1 // boolean hasModule
        end local 0 // java.util.Map params
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0      params  Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;
            1   10     1   hasModule  Z
            3    9     2  modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            5    9     3      finder  Ljava/lang/module/ModuleFinder;
            6    9     4  mainModule  Ljava/lang/String;
            7    9     5       omref  Ljava/util/Optional<Ljava/lang/module/ModuleReference;>;
    Signature: (Ljava/util/Map<Ljava/lang/String;-Ljava/lang/Object;>;)Ljava/lang/module/ModuleDescriptor;
    MethodParameters:
        Name  Flags
      params  

  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 229
            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 230
            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 231
            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 232
            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 229
            astore 2 /* systemRoots */
        start local 2 // java.util.stream.Stream systemRoots
         5: .line 234
            aload 2 /* systemRoots */
         6: .line 235
            aload 1 /* addModules */
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
         7: .line 234
            invokestatic java.util.stream.Stream.concat:(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
         8: .line 235
            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 234
            astore 3 /* roots */
        start local 3 // java.util.Set roots
        10: .line 237
            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 239
            invokestatic java.lang.module.Configuration.empty:()Ljava/lang/module/Configuration;
        12: .line 240
            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 241
            invokevirtual java.lang.module.Configuration.modules:()Ljava/util/Set;
        14: .line 242
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        15: .line 243
            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 244
            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 239
            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 251
            aload 0 /* descriptor */
            invokevirtual java.lang.module.ModuleDescriptor.exports:()Ljava/util/Set;
         1: .line 252
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         2: .line 253
            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 251
            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  

  private static java.lang.module.ModuleFinder createModuleFinder(java.util.Collection<java.nio.file.Path>);
    descriptor: (Ljava/util/Collection;)Ljava/lang/module/ModuleFinder;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // java.util.Collection modulePath
         0: .line 257
            iconst_2
            anewarray java.lang.module.ModuleFinder
            dup
            iconst_0
         1: .line 258
            invokestatic java.util.jar.JarFile.runtimeVersion:()Ljava/lang/Runtime$Version;
            iconst_1
         2: .line 259
            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 258
            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 260
            invokestatic java.lang.module.ModuleFinder.ofSystem:()Ljava/lang/module/ModuleFinder;
            aastore
         5: .line 257
            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 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.HashMap<java.lang.String, java.lang.String>, );
    descriptor: (Ljava/nio/file/Path;Ljava/util/List;Ljava/util/Set;Ljava/util/Set;Ljava/util/HashMap;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.HashMap user
        start local 5 // boolean bindServices
         0: .line 325
            aload 0 /* output */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokestatic jdk.incubator.jpackage.internal.IOUtils.deleteRecursive:(Ljava/io/File;)V
         1: .line 326
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
         3: .line 327
            new jdk.incubator.jpackage.internal.PackagerException
            dup
            aload 6 /* ioe */
            invokespecial jdk.incubator.jpackage.internal.PackagerException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.io.IOException ioe
         4: .line 330
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* args */
        start local 6 // java.util.ArrayList args
         5: .line 331
            aload 6 /* args */
            ldc "--output"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         6: .line 332
            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
         7: .line 333
            aload 1 /* modulePath */
            ifnull 10
            aload 1 /* modulePath */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 10
         8: .line 334
            aload 6 /* args */
            ldc "--module-path"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         9: .line 335
            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
        10: .line 337
      StackMap locals: java.util.ArrayList
      StackMap stack:
            aload 2 /* modules */
            ifnull 13
            aload 2 /* modules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 13
        11: .line 338
            aload 6 /* args */
            ldc "--add-modules"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        12: .line 339
            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
        13: .line 341
      StackMap locals:
      StackMap stack:
            aload 3 /* limitModules */
            ifnull 16
            aload 3 /* limitModules */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 16
        14: .line 342
            aload 6 /* args */
            ldc "--limit-modules"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        15: .line 343
            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
        16: .line 345
      StackMap locals:
      StackMap stack:
            aload 4 /* user */
            ifnull 23
            aload 4 /* user */
            invokevirtual java.util.HashMap.isEmpty:()Z
            ifne 23
        17: .line 346
            aload 4 /* user */
            invokevirtual java.util.HashMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 21
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.HashMap int java.util.ArrayList top java.util.Iterator
      StackMap stack:
        18: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* entry */
        start local 7 // java.util.Map$Entry entry
        19: .line 347
            aload 6 /* args */
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        20: .line 348
            aload 6 /* args */
            aload 7 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // java.util.Map$Entry entry
        21: .line 346
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        22: .line 350
            goto 29
        23: .line 351
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.HashMap int java.util.ArrayList
      StackMap stack:
            aload 6 /* args */
            ldc "--strip-native-commands"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        24: .line 352
            aload 6 /* args */
            ldc "--strip-debug"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        25: .line 353
            aload 6 /* args */
            ldc "--no-man-pages"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        26: .line 354
            aload 6 /* args */
            ldc "--no-header-files"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        27: .line 355
            iload 5 /* bindServices */
            ifeq 29
        28: .line 356
            aload 6 /* args */
            ldc "--bind-services"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        29: .line 360
      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
        30: .line 361
            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
        31: .line 363
            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
        32: .line 364
            getstatic jdk.incubator.jpackage.internal.JLinkBundlerHelper.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
        33: .line 365
            aload 7 /* writer */
            invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
            astore 10 /* jlinkOut */
        start local 10 // java.lang.String jlinkOut
        34: .line 367
            iload 9 /* retVal */
            ifeq 36
        35: .line 368
            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
        36: .line 369
      StackMap locals: java.nio.file.Path java.util.List java.util.Set java.util.Set java.util.HashMap int java.util.ArrayList java.io.StringWriter java.io.PrintWriter int java.lang.String
      StackMap stack:
            aload 10 /* jlinkOut */
            invokevirtual java.lang.String.length:()I
            ifle 38
        37: .line 370
            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
        38: .line 372
      StackMap locals:
      StackMap stack:
            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.HashMap user
        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   39     0        output  Ljava/nio/file/Path;
            0   39     1    modulePath  Ljava/util/List<Ljava/nio/file/Path;>;
            0   39     2       modules  Ljava/util/Set<Ljava/lang/String;>;
            0   39     3  limitModules  Ljava/util/Set<Ljava/lang/String;>;
            0   39     4          user  Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;
            0   39     5  bindServices  Z
            3    4     6           ioe  Ljava/io/IOException;
            5   39     6          args  Ljava/util/ArrayList<Ljava/lang/String;>;
           19   21     7         entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
           30   39     7        writer  Ljava/io/StringWriter;
           31   39     8            pw  Ljava/io/PrintWriter;
           33   39     9        retVal  I
           34   39    10      jlinkOut  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    Exceptions:
      throws jdk.incubator.jpackage.internal.PackagerException
    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/HashMap<Ljava/lang/String;Ljava/lang/String;>;Z)V
    MethodParameters:
              Name  Flags
      output        
      modulePath    
      modules       
      limitModules  
      user          
      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=3, locals=5, args_size=1
        start local 0 // java.util.List pathList
         0: .line 375
            aconst_null
            astore 1 /* ret */
        start local 1 // java.lang.String ret
         1: .line 376
            aload 0 /* pathList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 8
      StackMap locals: java.util.List java.lang.String top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 2 /* p */
        start local 2 // java.nio.file.Path p
         3: .line 377
            aload 2 /* p */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* s */
        start local 4 // java.lang.String s
         4: .line 378
            aload 1 /* ret */
            ifnonnull 7
         5: .line 379
            aload 4 /* s */
            astore 1 /* ret */
         6: .line 380
            goto 8
         7: .line 381
      StackMap locals: java.util.List java.lang.String java.nio.file.Path java.util.Iterator java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* ret */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* ret */
        end local 4 // java.lang.String s
        end local 2 // java.nio.file.Path p
         8: .line 376
      StackMap locals: java.util.List java.lang.String top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         9: .line 384
            aload 1 /* ret */
            areturn
        end local 1 // java.lang.String ret
        end local 0 // java.util.List pathList
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0  pathList  Ljava/util/List<Ljava/nio/file/Path;>;
            1   10     1       ret  Ljava/lang/String;
            3    8     2         p  Ljava/nio/file/Path;
            4    8     4         s  Ljava/lang/String;
    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=3, locals=4, args_size=1
        start local 0 // java.util.Set strings
         0: .line 388
            aconst_null
            astore 1 /* ret */
        start local 1 // java.lang.String ret
         1: .line 389
            aload 0 /* strings */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: java.util.Set java.lang.String top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* s */
        start local 2 // java.lang.String s
         3: .line 390
            aload 1 /* ret */
            ifnonnull 6
         4: .line 391
            aload 2 /* s */
            astore 1 /* ret */
         5: .line 392
            goto 7
         6: .line 393
      StackMap locals: java.util.Set java.lang.String java.lang.String java.util.Iterator
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* ret */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* ret */
        end local 2 // java.lang.String s
         7: .line 389
      StackMap locals: java.util.Set java.lang.String top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 396
            aload 1 /* ret */
            ifnonnull 9
            aconst_null
            goto 10
      StackMap locals: java.util.Set java.lang.String
      StackMap stack:
         9: aload 1 /* ret */
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        10: areturn
        end local 1 // java.lang.String ret
        end local 0 // java.util.Set strings
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0  strings  Ljava/util/Set<Ljava/lang/String;>;
            1   11     1      ret  Ljava/lang/String;
            3    7     2        s  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 253
            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
}
SourceFile: "JLinkBundlerHelper.java"
NestMembers:
  jdk.incubator.jpackage.internal.JLinkBundlerHelper$ModuleHelper
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
  public abstract Entry = java.util.Map$Entry of java.util.Map
  private ModuleHelper = jdk.incubator.jpackage.internal.JLinkBundlerHelper$ModuleHelper of jdk.incubator.jpackage.internal.JLinkBundlerHelper
  final ModType = jdk.incubator.jpackage.internal.ModFile$ModType of jdk.incubator.jpackage.internal.ModFile