final class jdk.incubator.jpackage.internal.ModFile
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.incubator.jpackage.internal.ModFile
  super_class: java.lang.Object
{
  private final java.lang.String filename;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.incubator.jpackage.internal.ModFile$ModType moduleType;
    descriptor: Ljdk/incubator/jpackage/internal/ModFile$ModType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.incubator.jpackage.internal.ModFile this
        start local 1 // java.io.File aFile
         0: .line 46
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            aload 0 /* this */
            aload 1 /* aFile */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            putfield jdk.incubator.jpackage.internal.ModFile.filename:Ljava/lang/String;
         2: .line 48
            aload 0 /* this */
            aload 1 /* aFile */
            invokestatic jdk.incubator.jpackage.internal.ModFile.getModType:(Ljava/io/File;)Ljdk/incubator/jpackage/internal/ModFile$ModType;
            putfield jdk.incubator.jpackage.internal.ModFile.moduleType:Ljdk/incubator/jpackage/internal/ModFile$ModType;
         3: .line 49
            return
        end local 1 // java.io.File aFile
        end local 0 // jdk.incubator.jpackage.internal.ModFile this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Ljdk/incubator/jpackage/internal/ModFile;
            0    4     1  aFile  Ljava/io/File;
    MethodParameters:
       Name  Flags
      aFile  

  java.lang.String getModName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // jdk.incubator.jpackage.internal.ModFile this
         0: .line 52
            new java.io.File
            dup
            aload 0 /* this */
            invokevirtual jdk.incubator.jpackage.internal.ModFile.getFileName:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 1 /* file */
        start local 1 // java.io.File file
         1: .line 54
            aload 0 /* this */
            getfield jdk.incubator.jpackage.internal.ModFile.moduleType:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.ExplodedModule:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            if_acmpne 3
         2: .line 55
            aload 1 /* file */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            goto 4
      StackMap locals: java.io.File
      StackMap stack:
         3: aload 1 /* file */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokestatic jdk.incubator.jpackage.internal.ModFile.getFileWithoutExtension:(Ljava/lang/String;)Ljava/lang/String;
         4: .line 54
      StackMap locals:
      StackMap stack: java.lang.String
            areturn
        end local 1 // java.io.File file
        end local 0 // jdk.incubator.jpackage.internal.ModFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Ljdk/incubator/jpackage/internal/ModFile;
            1    5     1  file  Ljava/io/File;

  java.lang.String getFileName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.jpackage.internal.ModFile this
         0: .line 59
            aload 0 /* this */
            getfield jdk.incubator.jpackage.internal.ModFile.filename:Ljava/lang/String;
            areturn
        end local 0 // jdk.incubator.jpackage.internal.ModFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/jpackage/internal/ModFile;

  jdk.incubator.jpackage.internal.ModFile$ModType getModType();
    descriptor: ()Ljdk/incubator/jpackage/internal/ModFile$ModType;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.jpackage.internal.ModFile this
         0: .line 63
            aload 0 /* this */
            getfield jdk.incubator.jpackage.internal.ModFile.moduleType:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            areturn
        end local 0 // jdk.incubator.jpackage.internal.ModFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/incubator/jpackage/internal/ModFile;

  private static jdk.incubator.jpackage.internal.ModFile$ModType getModType(java.io.File);
    descriptor: (Ljava/io/File;)Ljdk/incubator/jpackage/internal/ModFile$ModType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.io.File aFile
         0: .line 67
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.Unknown:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 1 /* result */
        start local 1 // jdk.incubator.jpackage.internal.ModFile$ModType result
         1: .line 68
            aload 0 /* aFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 2 /* filename */
        start local 2 // java.lang.String filename
         2: .line 70
            aload 0 /* aFile */
            invokevirtual java.io.File.isFile:()Z
            ifeq 14
         3: .line 71
            aload 2 /* filename */
            ldc ".jmod"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 6
         4: .line 72
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.Jmod:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 1 /* result */
         5: .line 73
            goto 20
         6: .line 74
      StackMap locals: jdk.incubator.jpackage.internal.ModFile$ModType java.lang.String
      StackMap stack:
            aload 2 /* filename */
            ldc ".jar"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 20
         7: .line 75
            aload 2 /* filename */
            invokestatic jdk.incubator.jpackage.internal.ModFile.isModularJar:(Ljava/lang/String;)Ljdk/incubator/jpackage/internal/ModFile$JarType;
            astore 3 /* status */
        start local 3 // jdk.incubator.jpackage.internal.ModFile$JarType status
         8: .line 77
            aload 3 /* status */
            getstatic jdk.incubator.jpackage.internal.ModFile$JarType.ModularJar:Ljdk/incubator/jpackage/internal/ModFile$JarType;
            if_acmpne 11
         9: .line 78
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.ModularJar:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 1 /* result */
        10: .line 79
            goto 20
        11: .line 80
      StackMap locals: jdk.incubator.jpackage.internal.ModFile$JarType
      StackMap stack:
            aload 3 /* status */
            getstatic jdk.incubator.jpackage.internal.ModFile$JarType.UnnamedJar:Ljdk/incubator/jpackage/internal/ModFile$JarType;
            if_acmpne 20
        12: .line 81
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.UnnamedJar:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 1 /* result */
        end local 3 // jdk.incubator.jpackage.internal.ModFile$JarType status
        13: .line 84
            goto 20
        14: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* aFile */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 20
        15: .line 86
            new java.io.File
            dup
        16: .line 87
            new java.lang.StringBuilder
            dup
            aload 2 /* filename */
            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;
            ldc "module-info.class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 86
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* moduleInfo */
        start local 3 // java.io.File moduleInfo
        18: .line 89
            aload 3 /* moduleInfo */
            invokevirtual java.io.File.exists:()Z
            ifeq 20
        19: .line 90
            getstatic jdk.incubator.jpackage.internal.ModFile$ModType.ExplodedModule:Ljdk/incubator/jpackage/internal/ModFile$ModType;
            astore 1 /* result */
        end local 3 // java.io.File moduleInfo
        20: .line 94
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 2 // java.lang.String filename
        end local 1 // jdk.incubator.jpackage.internal.ModFile$ModType result
        end local 0 // java.io.File aFile
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0       aFile  Ljava/io/File;
            1   21     1      result  Ljdk/incubator/jpackage/internal/ModFile$ModType;
            2   21     2    filename  Ljava/lang/String;
            8   13     3      status  Ljdk/incubator/jpackage/internal/ModFile$JarType;
           18   20     3  moduleInfo  Ljava/io/File;
    MethodParameters:
       Name  Flags
      aFile  

  private static jdk.incubator.jpackage.internal.ModFile$JarType isModularJar(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/incubator/jpackage/internal/ModFile$JarType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.lang.String FileName
         0: .line 98
            getstatic jdk.incubator.jpackage.internal.ModFile$JarType.All:Ljdk/incubator/jpackage/internal/ModFile$JarType;
            astore 1 /* result */
        start local 1 // jdk.incubator.jpackage.internal.ModFile$JarType result
         1: .line 100
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: .line 101
            new java.util.zip.ZipInputStream
            dup
            new java.io.FileInputStream
            dup
            aload 0 /* FileName */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokespecial java.util.zip.ZipInputStream.<init>:(Ljava/io/InputStream;)V
         3: .line 100
            astore 4 /* zip */
        start local 4 // java.util.zip.ZipInputStream zip
         4: .line 102
            getstatic jdk.incubator.jpackage.internal.ModFile$JarType.UnnamedJar:Ljdk/incubator/jpackage/internal/ModFile$JarType;
            astore 1 /* result */
         5: .line 104
            aload 4 /* zip */
            invokevirtual java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            astore 5 /* entry */
        start local 5 // java.util.zip.ZipEntry entry
         6: goto 11
         7: .line 106
      StackMap locals: java.lang.String jdk.incubator.jpackage.internal.ModFile$JarType java.lang.Throwable java.lang.Throwable java.util.zip.ZipInputStream java.util.zip.ZipEntry
      StackMap stack:
            aload 5 /* entry */
            invokevirtual java.util.zip.ZipEntry.getName:()Ljava/lang/String;
            ldc "module-info.class"
            invokevirtual java.lang.String.matches:(Ljava/lang/String;)Z
            ifeq 10
         8: .line 107
            getstatic jdk.incubator.jpackage.internal.ModFile$JarType.ModularJar:Ljdk/incubator/jpackage/internal/ModFile$JarType;
            astore 1 /* result */
         9: .line 108
            goto 12
        10: .line 105
      StackMap locals:
      StackMap stack:
            aload 4 /* zip */
            invokevirtual java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            astore 5 /* entry */
        11: .line 104
      StackMap locals:
      StackMap stack:
            aload 5 /* entry */
            ifnonnull 7
        end local 5 // java.util.zip.ZipEntry entry
        12: .line 111
      StackMap locals:
      StackMap stack:
            aload 4 /* zip */
            ifnull 19
            aload 4 /* zip */
            invokevirtual java.util.zip.ZipInputStream.close:()V
            goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 4 /* zip */
            ifnull 14
            aload 4 /* zip */
            invokevirtual java.util.zip.ZipInputStream.close:()V
        end local 4 // java.util.zip.ZipInputStream zip
      StackMap locals:
      StackMap stack:
        14: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 3
            aload 2
            ifnonnull 16
            aload 3
            astore 2
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 2
            aload 3
            if_acmpeq 17
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 2
            athrow
      StackMap locals: java.lang.String jdk.incubator.jpackage.internal.ModFile$JarType
      StackMap stack: java.io.IOException
        18: pop
        19: .line 114
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 1 // jdk.incubator.jpackage.internal.ModFile$JarType result
        end local 0 // java.lang.String FileName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0  FileName  Ljava/lang/String;
            1   20     1    result  Ljdk/incubator/jpackage/internal/ModFile$JarType;
            4   14     4       zip  Ljava/util/zip/ZipInputStream;
            6   12     5     entry  Ljava/util/zip/ZipEntry;
      Exception table:
        from    to  target  type
           4    12      13  any
           2    15      15  any
           1    18      18  Class java.io.IOException
    MethodParameters:
          Name  Flags
      FileName  

  private static java.lang.String getFileWithoutExtension(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String FileName
         0: .line 118
            aload 0 /* FileName */
            ldc "[.][^.]+$"
            ldc ""
            invokevirtual java.lang.String.replaceFirst:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String FileName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  FileName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      FileName  
}
SourceFile: "ModFile.java"
NestMembers:
  jdk.incubator.jpackage.internal.ModFile$JarType  jdk.incubator.jpackage.internal.ModFile$ModType
InnerClasses:
  final JarType = jdk.incubator.jpackage.internal.ModFile$JarType of jdk.incubator.jpackage.internal.ModFile
  final ModType = jdk.incubator.jpackage.internal.ModFile$ModType of jdk.incubator.jpackage.internal.ModFile