final class jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage implements jdk.tools.jlink.internal.ExecutableImage
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage
  super_class: java.lang.Object
{
  private final java.nio.file.Path home;
    descriptor: Ljava/nio/file/Path;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<java.lang.String> args;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private final java.util.Set<java.lang.String> modules;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  void <init>(java.nio.file.Path, java.util.Set<java.lang.String>);
    descriptor: (Ljava/nio/file/Path;Ljava/util/Set;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
        start local 1 // java.nio.file.Path home
        start local 2 // java.util.Set modules
         0: .line 91
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 92
            aload 1 /* home */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 93
            aload 1 /* home */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 4
         3: .line 94
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid image home"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 96
      StackMap locals: jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage java.nio.file.Path java.util.Set
      StackMap stack:
            aload 0 /* this */
            aload 1 /* home */
            putfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.home:Ljava/nio/file/Path;
         5: .line 97
            aload 0 /* this */
            aload 2 /* modules */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            putfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.modules:Ljava/util/Set;
         6: .line 98
            aload 0 /* this */
            aload 1 /* home */
            invokestatic jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.createArgs:(Ljava/nio/file/Path;)Ljava/util/List;
            putfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.args:Ljava/util/List;
         7: .line 99
            return
        end local 2 // java.util.Set modules
        end local 1 // java.nio.file.Path home
        end local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Ljdk/tools/jlink/builder/DefaultImageBuilder$DefaultExecutableImage;
            0    8     1     home  Ljava/nio/file/Path;
            0    8     2  modules  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Ljava/nio/file/Path;Ljava/util/Set<Ljava/lang/String;>;)V
    MethodParameters:
         Name  Flags
      home     
      modules  

  private static java.util.List<java.lang.String> createArgs(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.nio.file.Path home
         0: .line 102
            aload 0 /* home */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 103
            aload 0 /* home */
            ldc "bin"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* binDir */
        start local 1 // java.nio.file.Path binDir
         2: .line 104
            aload 1 /* binDir */
            ldc "java"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 3
            ldc "java"
            goto 4
      StackMap locals: java.nio.file.Path
      StackMap stack:
         3: ldc "java.exe"
      StackMap locals:
      StackMap stack: java.lang.String
         4: astore 2 /* java */
        start local 2 // java.lang.String java
         5: .line 105
            aload 1 /* binDir */
            aload 2 /* java */
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.util.List.of:(Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 2 // java.lang.String java
        end local 1 // java.nio.file.Path binDir
        end local 0 // java.nio.file.Path home
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    home  Ljava/nio/file/Path;
            2    6     1  binDir  Ljava/nio/file/Path;
            5    6     2    java  Ljava/lang/String;
    Signature: (Ljava/nio/file/Path;)Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      home  

  public java.nio.file.Path getHome();
    descriptor: ()Ljava/nio/file/Path;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
         0: .line 110
            aload 0 /* this */
            getfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.home:Ljava/nio/file/Path;
            areturn
        end local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/builder/DefaultImageBuilder$DefaultExecutableImage;

  public java.util.Set<java.lang.String> getModules();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
         0: .line 115
            aload 0 /* this */
            getfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.modules:Ljava/util/Set;
            areturn
        end local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/builder/DefaultImageBuilder$DefaultExecutableImage;
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  public java.util.List<java.lang.String> getExecutionArgs();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
         0: .line 120
            aload 0 /* this */
            getfield jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage.args:Ljava/util/List;
            areturn
        end local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/tools/jlink/builder/DefaultImageBuilder$DefaultExecutableImage;
    Signature: ()Ljava/util/List<Ljava/lang/String;>;

  public void storeLaunchArgs(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
        start local 1 // java.util.List args
         0: .line 126
            aload 0 /* this */
            aload 1 /* args */
            invokestatic jdk.tools.jlink.builder.DefaultImageBuilder.patchScripts:(Ljdk/tools/jlink/internal/ExecutableImage;Ljava/util/List;)V
         1: .line 127
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 2 /* ex */
        start local 2 // java.io.IOException ex
         3: .line 128
            new java.io.UncheckedIOException
            dup
            aload 2 /* ex */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 2 // java.io.IOException ex
         4: .line 130
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List args
        end local 0 // jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/tools/jlink/builder/DefaultImageBuilder$DefaultExecutableImage;
            0    5     1  args  Ljava/util/List<Ljava/lang/String;>;
            3    4     2    ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    Signature: (Ljava/util/List<Ljava/lang/String;>;)V
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "DefaultImageBuilder.java"
NestHost: jdk.tools.jlink.builder.DefaultImageBuilder
InnerClasses:
  final DefaultExecutableImage = jdk.tools.jlink.builder.DefaultImageBuilder$DefaultExecutableImage of jdk.tools.jlink.builder.DefaultImageBuilder