final class jdk.incubator.jpackage.internal.LauncherData$ModuleInfo
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.incubator.jpackage.internal.LauncherData$ModuleInfo
  super_class: java.lang.Object
{
  java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String version;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  java.lang.String mainClass;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

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

  static jdk.incubator.jpackage.internal.LauncherData$ModuleInfo fromModuleDescriptor(java.lang.module.ModuleDescriptor);
    descriptor: (Ljava/lang/module/ModuleDescriptor;)Ljdk/incubator/jpackage/internal/LauncherData$ModuleInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.module.ModuleDescriptor md
         0: .line 328
            new jdk.incubator.jpackage.internal.LauncherData$ModuleInfo
            dup
            invokespecial jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.<init>:()V
            astore 1 /* result */
        start local 1 // jdk.incubator.jpackage.internal.LauncherData$ModuleInfo result
         1: .line 329
            aload 1 /* result */
            aload 0 /* md */
            invokevirtual java.lang.module.ModuleDescriptor.name:()Ljava/lang/String;
            putfield jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.name:Ljava/lang/String;
         2: .line 330
            aload 1 /* result */
            aload 0 /* md */
            invokevirtual java.lang.module.ModuleDescriptor.mainClass:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.mainClass:Ljava/lang/String;
         3: .line 332
            aload 0 /* md */
            invokevirtual java.lang.module.ModuleDescriptor.version:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.module.ModuleDescriptor$Version
            astore 2 /* ver */
        start local 2 // java.lang.module.ModuleDescriptor$Version ver
         4: .line 333
            aload 2 /* ver */
            ifnull 7
         5: .line 334
            aload 1 /* result */
            aload 2 /* ver */
            invokevirtual java.lang.module.ModuleDescriptor$Version.toString:()Ljava/lang/String;
            putfield jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.version:Ljava/lang/String;
         6: .line 335
            goto 8
         7: .line 336
      StackMap locals: jdk.incubator.jpackage.internal.LauncherData$ModuleInfo java.lang.module.ModuleDescriptor$Version
      StackMap stack:
            aload 1 /* result */
            aload 0 /* md */
            invokevirtual java.lang.module.ModuleDescriptor.rawVersion:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.version:Ljava/lang/String;
         8: .line 339
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // java.lang.module.ModuleDescriptor$Version ver
        end local 1 // jdk.incubator.jpackage.internal.LauncherData$ModuleInfo result
        end local 0 // java.lang.module.ModuleDescriptor md
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0      md  Ljava/lang/module/ModuleDescriptor;
            1    9     1  result  Ljdk/incubator/jpackage/internal/LauncherData$ModuleInfo;
            4    9     2     ver  Ljava/lang/module/ModuleDescriptor$Version;
    MethodParameters:
      Name  Flags
      md    

  static jdk.incubator.jpackage.internal.LauncherData$ModuleInfo fromCookedRuntime(java.lang.String, java.nio.file.Path);
    descriptor: (Ljava/lang/String;Ljava/nio/file/Path;)Ljdk/incubator/jpackage/internal/LauncherData$ModuleInfo;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.lang.String moduleName
        start local 1 // java.nio.file.Path cookedRuntime
         0: .line 344
            aload 0 /* moduleName */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 354
            invokestatic jdk.incubator.jpackage.internal.Platform.isMac:()Z
            ifne 4
         2: .line 355
            aload 1 /* cookedRuntime */
            ldc "release"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* releaseFile */
        start local 2 // java.nio.file.Path releaseFile
         3: .line 356
            goto 8
        end local 2 // java.nio.file.Path releaseFile
         4: .line 358
      StackMap locals:
      StackMap stack:
            aload 1 /* cookedRuntime */
            ldc "Contents/Home"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 3 /* runtimeHome */
        start local 3 // java.nio.file.Path runtimeHome
         5: .line 359
            aload 3 /* runtimeHome */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 7
         6: .line 360
            aload 1 /* cookedRuntime */
            astore 3 /* runtimeHome */
         7: .line 362
      StackMap locals: java.lang.String java.nio.file.Path top java.nio.file.Path
      StackMap stack:
            aload 3 /* runtimeHome */
            ldc "release"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* releaseFile */
        end local 3 // java.nio.file.Path runtimeHome
        start local 2 // java.nio.file.Path releaseFile
         8: .line 365
      StackMap locals: java.lang.String java.nio.file.Path java.nio.file.Path
      StackMap stack:
            aconst_null
            astore 3
            aconst_null
            astore 4
         9: aload 2 /* releaseFile */
            invokestatic java.nio.file.Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader;
            astore 5 /* reader */
        start local 5 // java.io.Reader reader
        10: .line 366
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 6 /* props */
        start local 6 // java.util.Properties props
        11: .line 367
            aload 6 /* props */
            aload 5 /* reader */
            invokevirtual java.util.Properties.load:(Ljava/io/Reader;)V
        12: .line 368
            aload 6 /* props */
            ldc "MODULES"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* moduleList */
        start local 7 // java.lang.String moduleList
        13: .line 369
            aload 7 /* moduleList */
            ifnonnull 16
        14: .line 382
            aload 5 /* reader */
            ifnull 15
            aload 5 /* reader */
            invokevirtual java.io.Reader.close:()V
        15: .line 370
      StackMap locals: java.lang.String java.nio.file.Path java.nio.file.Path java.lang.Throwable java.lang.Throwable java.io.Reader java.util.Properties java.lang.String
      StackMap stack:
            aconst_null
            areturn
        16: .line 373
      StackMap locals:
      StackMap stack:
            aload 7 /* moduleList */
            ldc "\""
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 17
            aload 7 /* moduleList */
            ldc "\""
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 21
        17: .line 374
      StackMap locals:
      StackMap stack:
            aload 7 /* moduleList */
            ldc "'"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 22
            aload 7 /* moduleList */
        18: .line 375
            ldc "'"
        19: .line 374
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
        20: .line 375
            ifeq 22
        21: .line 376
      StackMap locals:
      StackMap stack:
            aload 7 /* moduleList */
            iconst_1
            aload 7 /* moduleList */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* moduleList */
        22: .line 379
      StackMap locals:
      StackMap stack:
            aload 7 /* moduleList */
            ldc "\\s+"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            invokestatic java.util.List.of:([Ljava/lang/Object;)Ljava/util/List;
            aload 0 /* moduleName */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 25
        23: .line 382
            aload 5 /* reader */
            ifnull 24
            aload 5 /* reader */
            invokevirtual java.io.Reader.close:()V
        24: .line 380
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 7 // java.lang.String moduleList
        end local 6 // java.util.Properties props
        25: .line 382
      StackMap locals:
      StackMap stack:
            aload 5 /* reader */
            ifnull 34
            aload 5 /* reader */
            invokevirtual java.io.Reader.close:()V
            goto 34
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 3
            aload 5 /* reader */
            ifnull 27
            aload 5 /* reader */
            invokevirtual java.io.Reader.close:()V
        end local 5 // java.io.Reader reader
      StackMap locals:
      StackMap stack:
        27: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 4
            aload 3
            ifnonnull 29
            aload 4
            astore 3
            goto 30
      StackMap locals:
      StackMap stack:
        29: aload 3
            aload 4
            if_acmpeq 30
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        30: aload 3
            athrow
      StackMap locals: java.lang.String java.nio.file.Path java.nio.file.Path
      StackMap stack: java.lang.Exception
        31: astore 3 /* ex */
        start local 3 // java.lang.Exception ex
        32: .line 383
            aload 3 /* ex */
            invokestatic jdk.incubator.jpackage.internal.Log.verbose:(Ljava/lang/Throwable;)V
        33: .line 384
            aconst_null
            areturn
        end local 3 // java.lang.Exception ex
        34: .line 387
      StackMap locals:
      StackMap stack:
            new jdk.incubator.jpackage.internal.LauncherData$ModuleInfo
            dup
            invokespecial jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.<init>:()V
            astore 3 /* result */
        start local 3 // jdk.incubator.jpackage.internal.LauncherData$ModuleInfo result
        35: .line 388
            aload 3 /* result */
            aload 0 /* moduleName */
            putfield jdk.incubator.jpackage.internal.LauncherData$ModuleInfo.name:Ljava/lang/String;
        36: .line 390
            aload 3 /* result */
            areturn
        end local 3 // jdk.incubator.jpackage.internal.LauncherData$ModuleInfo result
        end local 2 // java.nio.file.Path releaseFile
        end local 1 // java.nio.file.Path cookedRuntime
        end local 0 // java.lang.String moduleName
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   37     0     moduleName  Ljava/lang/String;
            0   37     1  cookedRuntime  Ljava/nio/file/Path;
            3    4     2    releaseFile  Ljava/nio/file/Path;
            8   37     2    releaseFile  Ljava/nio/file/Path;
            5    8     3    runtimeHome  Ljava/nio/file/Path;
           10   27     5         reader  Ljava/io/Reader;
           11   25     6          props  Ljava/util/Properties;
           13   25     7     moduleList  Ljava/lang/String;
           32   34     3             ex  Ljava/lang/Exception;
           35   37     3         result  Ljdk/incubator/jpackage/internal/LauncherData$ModuleInfo;
      Exception table:
        from    to  target  type
          10    14      26  any
          16    23      26  any
           9    15      28  any
          16    24      28  any
          25    28      28  any
           8    15      31  Class java.io.IOException
          16    24      31  Class java.io.IOException
          25    31      31  Class java.io.IOException
           8    15      31  Class java.lang.IllegalArgumentException
          16    24      31  Class java.lang.IllegalArgumentException
          25    31      31  Class java.lang.IllegalArgumentException
    MethodParameters:
               Name  Flags
      moduleName     
      cookedRuntime  
}
SourceFile: "LauncherData.java"
NestHost: jdk.incubator.jpackage.internal.LauncherData
InnerClasses:
  public final Version = java.lang.module.ModuleDescriptor$Version of java.lang.module.ModuleDescriptor
  private final ModuleInfo = jdk.incubator.jpackage.internal.LauncherData$ModuleInfo of jdk.incubator.jpackage.internal.LauncherData