public class jdk.internal.module.ModulePath implements java.lang.module.ModuleFinder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.module.ModulePath
  super_class: java.lang.Object
{
  private static final java.lang.String MODULE_INFO;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "module-info.class"

  private final java.lang.Runtime$Version releaseVersion;
    descriptor: Ljava/lang/Runtime$Version;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean isLinkPhase;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.internal.module.ModulePatcher patcher;
    descriptor: Ljdk/internal/module/ModulePatcher;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.nio.file.Path[] entries;
    descriptor: [Ljava/nio/file/Path;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int next;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Map<java.lang.String, java.lang.module.ModuleReference> cachedModules;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;

  private static final java.lang.String SERVICES_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "META-INF/services/"

  private static final java.util.jar.Attributes$Name AUTOMATIC_MODULE_NAME;
    descriptor: Ljava/util/jar/Attributes$Name;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final jdk.internal.perf.PerfCounter scanTime;
    descriptor: Ljdk/internal/perf/PerfCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final jdk.internal.perf.PerfCounter moduleCount;
    descriptor: Ljdk/internal/perf/PerfCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 79
            ldc Ljdk/internal/module/ModulePath;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic jdk.internal.module.ModulePath.$assertionsDisabled:Z
         3: .line 407
            new java.util.jar.Attributes$Name
            dup
            ldc "Automatic-Module-Name"
            invokespecial java.util.jar.Attributes$Name.<init>:(Ljava/lang/String;)V
         4: .line 406
            putstatic jdk.internal.module.ModulePath.AUTOMATIC_MODULE_NAME:Ljava/util/jar/Attributes$Name;
         5: .line 786
            ldc "jdk.module.finder.modulepath.scanTime"
            invokestatic jdk.internal.perf.PerfCounter.newPerfCounter:(Ljava/lang/String;)Ljdk/internal/perf/PerfCounter;
         6: .line 785
            putstatic jdk.internal.module.ModulePath.scanTime:Ljdk/internal/perf/PerfCounter;
         7: .line 788
            ldc "jdk.module.finder.modulepath.modules"
            invokestatic jdk.internal.perf.PerfCounter.newPerfCounter:(Ljava/lang/String;)Ljdk/internal/perf/PerfCounter;
         8: .line 787
            putstatic jdk.internal.module.ModulePath.moduleCount:Ljdk/internal/perf/PerfCounter;
         9: .line 788
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.lang.Runtime$Version, boolean, jdk.internal.module.ModulePatcher, java.nio.file.Path[]);
    descriptor: (Ljava/lang/Runtime$Version;ZLjdk/internal/module/ModulePatcher;[Ljava/nio/file/Path;)V
    flags: (0x0082) ACC_PRIVATE, ACC_VARARGS
    Code:
      stack=3, locals=9, args_size=5
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.lang.Runtime$Version version
        start local 2 // boolean isLinkPhase
        start local 3 // jdk.internal.module.ModulePatcher patcher
        start local 4 // java.nio.file.Path[] entries
         0: .line 99
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 96
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
         2: .line 103
            aload 0 /* this */
            aload 1 /* version */
            putfield jdk.internal.module.ModulePath.releaseVersion:Ljava/lang/Runtime$Version;
         3: .line 104
            aload 0 /* this */
            iload 2 /* isLinkPhase */
            putfield jdk.internal.module.ModulePath.isLinkPhase:Z
         4: .line 105
            aload 0 /* this */
            aload 3 /* patcher */
            putfield jdk.internal.module.ModulePath.patcher:Ljdk/internal/module/ModulePatcher;
         5: .line 106
            aload 0 /* this */
            aload 4 /* entries */
            invokevirtual java.nio.file.Path[].clone:()Ljava/lang/Object;
            checkcast java.nio.file.Path[]
            putfield jdk.internal.module.ModulePath.entries:[Ljava/nio/file/Path;
         6: .line 107
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.entries:[Ljava/nio/file/Path;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 10
      StackMap locals: jdk.internal.module.ModulePath java.lang.Runtime$Version int jdk.internal.module.ModulePatcher java.nio.file.Path[] top int int java.nio.file.Path[]
      StackMap stack:
         7: aload 8
            iload 6
            aaload
            astore 5 /* entry */
        start local 5 // java.nio.file.Path entry
         8: .line 108
            aload 5 /* entry */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // java.nio.file.Path entry
         9: .line 107
            iinc 6 1
      StackMap locals:
      StackMap stack:
        10: iload 6
            iload 7
            if_icmplt 7
        11: .line 110
            return
        end local 4 // java.nio.file.Path[] entries
        end local 3 // jdk.internal.module.ModulePatcher patcher
        end local 2 // boolean isLinkPhase
        end local 1 // java.lang.Runtime$Version version
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Ljdk/internal/module/ModulePath;
            0   12     1      version  Ljava/lang/Runtime$Version;
            0   12     2  isLinkPhase  Z
            0   12     3      patcher  Ljdk/internal/module/ModulePatcher;
            0   12     4      entries  [Ljava/nio/file/Path;
            8    9     5        entry  Ljava/nio/file/Path;
    MethodParameters:
             Name  Flags
      version      
      isLinkPhase  
      patcher      
      entries      

  public static java.lang.module.ModuleFinder of(jdk.internal.module.ModulePatcher, java.nio.file.Path[]);
    descriptor: (Ljdk/internal/module/ModulePatcher;[Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePatcher patcher
        start local 1 // java.nio.file.Path[] entries
         0: .line 118
            new jdk.internal.module.ModulePath
            dup
            invokestatic java.util.jar.JarFile.runtimeVersion:()Ljava/lang/Runtime$Version;
            iconst_0
            aload 0 /* patcher */
            aload 1 /* entries */
            invokespecial jdk.internal.module.ModulePath.<init>:(Ljava/lang/Runtime$Version;ZLjdk/internal/module/ModulePatcher;[Ljava/nio/file/Path;)V
            areturn
        end local 1 // java.nio.file.Path[] entries
        end local 0 // jdk.internal.module.ModulePatcher patcher
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  patcher  Ljdk/internal/module/ModulePatcher;
            0    1     1  entries  [Ljava/nio/file/Path;
    MethodParameters:
         Name  Flags
      patcher  
      entries  

  public static java.lang.module.ModuleFinder of(java.nio.file.Path[]);
    descriptor: ([Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.nio.file.Path[] entries
         0: .line 126
            aconst_null
            aload 0 /* entries */
            invokestatic jdk.internal.module.ModulePath.of:(Ljdk/internal/module/ModulePatcher;[Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
            areturn
        end local 0 // java.nio.file.Path[] entries
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  entries  [Ljava/nio/file/Path;
    MethodParameters:
         Name  Flags
      entries  

  public static java.lang.module.ModuleFinder of(java.lang.Runtime$Version, boolean, java.nio.file.Path[]);
    descriptor: (Ljava/lang/Runtime$Version;Z[Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.lang.Runtime$Version version
        start local 1 // boolean isLinkPhase
        start local 2 // java.nio.file.Path[] entries
         0: .line 139
            new jdk.internal.module.ModulePath
            dup
            aload 0 /* version */
            iload 1 /* isLinkPhase */
            aconst_null
            aload 2 /* entries */
            invokespecial jdk.internal.module.ModulePath.<init>:(Ljava/lang/Runtime$Version;ZLjdk/internal/module/ModulePatcher;[Ljava/nio/file/Path;)V
            areturn
        end local 2 // java.nio.file.Path[] entries
        end local 1 // boolean isLinkPhase
        end local 0 // java.lang.Runtime$Version version
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0      version  Ljava/lang/Runtime$Version;
            0    1     1  isLinkPhase  Z
            0    1     2      entries  [Ljava/nio/file/Path;
    MethodParameters:
             Name  Flags
      version      
      isLinkPhase  
      entries      

  public java.util.Optional<java.lang.module.ModuleReference> find(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.lang.String name
         0: .line 145
            aload 1 /* name */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 148
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.module.ModuleReference
            astore 2 /* m */
        start local 2 // java.lang.module.ModuleReference m
         2: .line 149
            aload 2 /* m */
            ifnull 8
         3: .line 150
            aload 2 /* m */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
         4: .line 154
      StackMap locals: java.lang.module.ModuleReference
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.internal.module.ModulePath.scanNextEntry:()V
         5: .line 155
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.module.ModuleReference
            astore 2 /* m */
         6: .line 156
            aload 2 /* m */
            ifnull 8
         7: .line 157
            aload 2 /* m */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
         8: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.internal.module.ModulePath.hasNextEntry:()Z
            ifne 4
         9: .line 159
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 2 // java.lang.module.ModuleReference m
        end local 1 // java.lang.String name
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljdk/internal/module/ModulePath;
            0   10     1  name  Ljava/lang/String;
            2   10     2     m  Ljava/lang/module/ModuleReference;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/module/ModuleReference;>;
    MethodParameters:
      Name  Flags
      name  

  public java.util.Set<java.lang.module.ModuleReference> findAll();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 165
            goto 2
         1: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.internal.module.ModulePath.scanNextEntry:()V
         2: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.internal.module.ModulePath.hasNextEntry:()Z
            ifne 1
         3: .line 168
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
            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
            areturn
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/internal/module/ModulePath;
    Signature: ()Ljava/util/Set<Ljava/lang/module/ModuleReference;>;

  private boolean hasNextEntry();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 175
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.next:I
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.entries:[Ljava/nio/file/Path;
            arraylength
            if_icmpge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/internal/module/ModulePath;

  private void scanNextEntry();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 185
            aload 0 /* this */
            invokevirtual jdk.internal.module.ModulePath.hasNextEntry:()Z
            ifeq 13
         1: .line 187
            invokestatic java.lang.System.nanoTime:()J
            lstore 1 /* t0 */
        start local 1 // long t0
         2: .line 189
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.entries:[Ljava/nio/file/Path;
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.next:I
            aaload
            astore 3 /* entry */
        start local 3 // java.nio.file.Path entry
         3: .line 190
            aload 0 /* this */
            aload 3 /* entry */
            invokevirtual jdk.internal.module.ModulePath.scan:(Ljava/nio/file/Path;)Ljava/util/Map;
            astore 4 /* modules */
        start local 4 // java.util.Map modules
         4: .line 191
            aload 0 /* this */
            dup
            getfield jdk.internal.module.ModulePath.next:I
            iconst_1
            iadd
            putfield jdk.internal.module.ModulePath.next:I
         5: .line 194
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            istore 5 /* initialSize */
        start local 5 // int initialSize
         6: .line 195
            aload 4 /* modules */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 9
      StackMap locals: jdk.internal.module.ModulePath long java.nio.file.Path java.util.Map int top java.util.Iterator
      StackMap stack:
         7: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* e */
        start local 6 // java.util.Map$Entry e
         8: .line 196
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.module.ModuleReference
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.util.Map$Entry e
         9: .line 195
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 200
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.cachedModules:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            iload 5 /* initialSize */
            isub
            istore 6 /* added */
        start local 6 // int added
        11: .line 201
            getstatic jdk.internal.module.ModulePath.moduleCount:Ljdk/internal/perf/PerfCounter;
            iload 6 /* added */
            i2l
            invokevirtual jdk.internal.perf.PerfCounter.add:(J)V
        12: .line 203
            getstatic jdk.internal.module.ModulePath.scanTime:Ljdk/internal/perf/PerfCounter;
            lload 1 /* t0 */
            invokevirtual jdk.internal.perf.PerfCounter.addElapsedTimeFrom:(J)V
        end local 6 // int added
        end local 5 // int initialSize
        end local 4 // java.util.Map modules
        end local 3 // java.nio.file.Path entry
        end local 1 // long t0
        13: .line 205
      StackMap locals: jdk.internal.module.ModulePath
      StackMap stack:
            return
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Ljdk/internal/module/ModulePath;
            2   13     1           t0  J
            3   13     3        entry  Ljava/nio/file/Path;
            4   13     4      modules  Ljava/util/Map<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;
            6   13     5  initialSize  I
            8    9     6            e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;
           11   13     6        added  I

  private java.util.Map<java.lang.String, java.lang.module.ModuleReference> scan(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path entry
         0: .line 219
            aload 1 /* entry */
            ldc Ljava/nio/file/attribute/BasicFileAttributes;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.readAttributes:(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;
            astore 2 /* attrs */
        start local 2 // java.nio.file.attribute.BasicFileAttributes attrs
         1: .line 220
            goto 6
        end local 2 // java.nio.file.attribute.BasicFileAttributes attrs
      StackMap locals:
      StackMap stack: java.nio.file.NoSuchFileException
         2: pop
         3: .line 221
            invokestatic java.util.Map.of:()Ljava/util/Map;
            areturn
         4: .line 222
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
         5: .line 223
            new java.lang.module.FindException
            dup
            aload 3 /* ioe */
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException ioe
        start local 2 // java.nio.file.attribute.BasicFileAttributes attrs
         6: .line 228
      StackMap locals: java.nio.file.attribute.BasicFileAttributes
      StackMap stack:
            aload 2 /* attrs */
            invokeinterface java.nio.file.attribute.BasicFileAttributes.isDirectory:()Z
            ifeq 11
         7: .line 229
            aload 1 /* entry */
            ldc "module-info.class"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 3 /* mi */
        start local 3 // java.nio.file.Path mi
         8: .line 230
            aload 3 /* mi */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 11
         9: .line 232
            aload 0 /* this */
            aload 1 /* entry */
            invokevirtual jdk.internal.module.ModulePath.scanDirectory:(Ljava/nio/file/Path;)Ljava/util/Map;
        10: areturn
        end local 3 // java.nio.file.Path mi
        11: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* entry */
            aload 2 /* attrs */
            invokevirtual jdk.internal.module.ModulePath.readModule:(Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/lang/module/ModuleReference;
            astore 3 /* mref */
        start local 3 // java.lang.module.ModuleReference mref
        12: .line 238
            aload 3 /* mref */
            ifnull 16
        13: .line 239
            aload 3 /* mref */
            invokevirtual java.lang.module.ModuleReference.descriptor:()Ljava/lang/module/ModuleDescriptor;
            invokevirtual java.lang.module.ModuleDescriptor.name:()Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
        14: .line 240
            aload 4 /* name */
            aload 3 /* mref */
            invokestatic java.util.Map.of:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
        15: areturn
        end local 4 // java.lang.String name
        16: .line 245
      StackMap locals: java.lang.module.ModuleReference
      StackMap stack:
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.isLinkPhase:Z
            ifne 19
            aload 1 /* entry */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            ldc ".jmod"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 19
        17: .line 246
            ldc "JMOD format not supported at execution time"
            astore 4 /* msg */
        start local 4 // java.lang.String msg
        18: .line 247
            goto 20
        end local 4 // java.lang.String msg
        19: .line 248
      StackMap locals:
      StackMap stack:
            ldc "Module format not recognized"
            astore 4 /* msg */
        start local 4 // java.lang.String msg
        20: .line 250
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* msg */
            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 1 /* entry */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String msg
        end local 3 // java.lang.module.ModuleReference mref
        21: .line 252
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.nio.file.attribute.BasicFileAttributes
      StackMap stack: java.io.IOException
            astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
        22: .line 253
            new java.lang.module.FindException
            dup
            aload 3 /* ioe */
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException ioe
        end local 2 // java.nio.file.attribute.BasicFileAttributes attrs
        end local 1 // java.nio.file.Path entry
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   23     0   this  Ljdk/internal/module/ModulePath;
            0   23     1  entry  Ljava/nio/file/Path;
            1    2     2  attrs  Ljava/nio/file/attribute/BasicFileAttributes;
            6   23     2  attrs  Ljava/nio/file/attribute/BasicFileAttributes;
            5    6     3    ioe  Ljava/io/IOException;
            8   11     3     mi  Ljava/nio/file/Path;
           12   21     3   mref  Ljava/lang/module/ModuleReference;
           14   16     4   name  Ljava/lang/String;
           18   19     4    msg  Ljava/lang/String;
           20   21     4    msg  Ljava/lang/String;
           22   23     3    ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.nio.file.NoSuchFileException
           0     1       4  Class java.io.IOException
           6    10      21  Class java.io.IOException
          11    15      21  Class java.io.IOException
          16    21      21  Class java.io.IOException
    Signature: (Ljava/nio/file/Path;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;
    MethodParameters:
       Name  Flags
      entry  

  private java.util.Map<java.lang.String, java.lang.module.ModuleReference> scanDirectory(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=14, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path dir
         0: .line 272
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* nameToReference */
        start local 2 // java.util.Map nameToReference
         1: .line 274
            aconst_null
            astore 3
            aconst_null
            astore 4
         2: aload 1 /* dir */
            invokestatic java.nio.file.Files.newDirectoryStream:(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream;
            astore 5 /* stream */
        start local 5 // java.nio.file.DirectoryStream stream
         3: .line 275
            aload 5 /* stream */
            invokeinterface java.nio.file.DirectoryStream.iterator:()Ljava/util/Iterator;
            astore 7
            goto 20
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.util.Map java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 6 /* entry */
        start local 6 // java.nio.file.Path entry
         5: .line 278
            aload 6 /* entry */
            ldc Ljava/nio/file/attribute/BasicFileAttributes;
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.readAttributes:(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;
            astore 8 /* attrs */
        start local 8 // java.nio.file.attribute.BasicFileAttributes attrs
         6: .line 279
            goto 9
        end local 8 // java.nio.file.attribute.BasicFileAttributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.util.Map java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream java.nio.file.Path java.util.Iterator
      StackMap stack: java.nio.file.NoSuchFileException
         7: pop
         8: .line 281
            goto 20
        start local 8 // java.nio.file.attribute.BasicFileAttributes attrs
         9: .line 284
      StackMap locals: java.nio.file.attribute.BasicFileAttributes
      StackMap stack:
            aload 0 /* this */
            aload 6 /* entry */
            aload 8 /* attrs */
            invokevirtual jdk.internal.module.ModulePath.readModule:(Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/lang/module/ModuleReference;
            astore 9 /* mref */
        start local 9 // java.lang.module.ModuleReference mref
        10: .line 287
            aload 9 /* mref */
            ifnull 20
        11: .line 289
            aload 9 /* mref */
            invokevirtual java.lang.module.ModuleReference.descriptor:()Ljava/lang/module/ModuleDescriptor;
            invokevirtual java.lang.module.ModuleDescriptor.name:()Ljava/lang/String;
            astore 10 /* name */
        start local 10 // java.lang.String name
        12: .line 290
            aload 2 /* nameToReference */
            aload 10 /* name */
            aload 9 /* mref */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.module.ModuleReference
            astore 11 /* previous */
        start local 11 // java.lang.module.ModuleReference previous
        13: .line 291
            aload 11 /* previous */
            ifnull 20
        14: .line 292
            aload 0 /* this */
            aload 9 /* mref */
            invokevirtual jdk.internal.module.ModulePath.fileName:(Ljava/lang/module/ModuleReference;)Ljava/lang/String;
            astore 12 /* fn1 */
        start local 12 // java.lang.String fn1
        15: .line 293
            aload 0 /* this */
            aload 11 /* previous */
            invokevirtual jdk.internal.module.ModulePath.fileName:(Ljava/lang/module/ModuleReference;)Ljava/lang/String;
            astore 13 /* fn2 */
        start local 13 // java.lang.String fn2
        16: .line 294
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Two versions of module "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 295
            aload 10 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " found in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* dir */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        18: .line 296
            ldc " ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* fn1 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " and "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 13 /* fn2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 294
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;)V
            athrow
        end local 13 // java.lang.String fn2
        end local 12 // java.lang.String fn1
        end local 11 // java.lang.module.ModuleReference previous
        end local 10 // java.lang.String name
        end local 9 // java.lang.module.ModuleReference mref
        end local 8 // java.nio.file.attribute.BasicFileAttributes attrs
        end local 6 // java.nio.file.Path entry
        20: .line 275
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.util.Map java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        21: .line 300
            aload 5 /* stream */
            ifnull 27
            aload 5 /* stream */
            invokeinterface java.nio.file.DirectoryStream.close:()V
            goto 27
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.util.Map java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream
      StackMap stack: java.lang.Throwable
        22: astore 3
            aload 5 /* stream */
            ifnull 23
            aload 5 /* stream */
            invokeinterface java.nio.file.DirectoryStream.close:()V
        end local 5 // java.nio.file.DirectoryStream stream
      StackMap locals:
      StackMap stack:
        23: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 4
            aload 3
            ifnonnull 25
            aload 4
            astore 3
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 3
            aload 4
            if_acmpeq 26
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 3
            athrow
        27: .line 302
      StackMap locals:
      StackMap stack:
            aload 2 /* nameToReference */
            areturn
        end local 2 // java.util.Map nameToReference
        end local 1 // java.nio.file.Path dir
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   28     0             this  Ljdk/internal/module/ModulePath;
            0   28     1              dir  Ljava/nio/file/Path;
            1   28     2  nameToReference  Ljava/util/Map<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;
            3   23     5           stream  Ljava/nio/file/DirectoryStream<Ljava/nio/file/Path;>;
            5   20     6            entry  Ljava/nio/file/Path;
            6    7     8            attrs  Ljava/nio/file/attribute/BasicFileAttributes;
            9   20     8            attrs  Ljava/nio/file/attribute/BasicFileAttributes;
           10   20     9             mref  Ljava/lang/module/ModuleReference;
           12   20    10             name  Ljava/lang/String;
           13   20    11         previous  Ljava/lang/module/ModuleReference;
           15   20    12              fn1  Ljava/lang/String;
           16   20    13              fn2  Ljava/lang/String;
      Exception table:
        from    to  target  type
           5     6       7  Class java.nio.file.NoSuchFileException
           3    21      22  any
           2    24      24  any
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/nio/file/Path;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/module/ModuleReference;>;
    MethodParameters:
      Name  Flags
      dir   

  private java.lang.module.ModuleReference readModule(java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Ljava/lang/module/ModuleReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path entry
        start local 2 // java.nio.file.attribute.BasicFileAttributes attrs
         0: .line 319
            aload 2 /* attrs */
            invokeinterface java.nio.file.attribute.BasicFileAttributes.isDirectory:()Z
            ifeq 3
         1: .line 320
            aload 0 /* this */
            aload 1 /* entry */
            invokevirtual jdk.internal.module.ModulePath.readExplodedModule:(Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
         2: areturn
         3: .line 324
      StackMap locals:
      StackMap stack:
            aload 2 /* attrs */
            invokeinterface java.nio.file.attribute.BasicFileAttributes.isRegularFile:()Z
            ifeq 17
         4: .line 325
            aload 1 /* entry */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 3 /* fn */
        start local 3 // java.lang.String fn
         5: .line 326
            aload 0 /* this */
            aload 1 /* entry */
            invokevirtual jdk.internal.module.ModulePath.isDefaultFileSystem:(Ljava/nio/file/Path;)Z
            istore 4 /* isDefaultFileSystem */
        start local 4 // boolean isDefaultFileSystem
         6: .line 329
            aload 3 /* fn */
            ldc ".jar"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 14
         7: .line 330
            iload 4 /* isDefaultFileSystem */
            ifeq 10
         8: .line 331
            aload 0 /* this */
            aload 1 /* entry */
            invokevirtual jdk.internal.module.ModulePath.readJar:(Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
         9: areturn
        10: .line 335
      StackMap locals: java.lang.String int
      StackMap stack:
            ldc "mlib"
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createTempDirectory:(Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            astore 5 /* tmpdir */
        start local 5 // java.nio.file.Path tmpdir
        11: .line 336
            aload 1 /* entry */
            aload 5 /* tmpdir */
            aload 3 /* fn */
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;
            astore 6 /* target */
        start local 6 // java.nio.file.Path target
        12: .line 337
            aload 0 /* this */
            aload 6 /* target */
            invokevirtual jdk.internal.module.ModulePath.readJar:(Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
        13: areturn
        end local 6 // java.nio.file.Path target
        end local 5 // java.nio.file.Path tmpdir
        14: .line 342
      StackMap locals:
      StackMap stack:
            iload 4 /* isDefaultFileSystem */
            ifeq 17
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.isLinkPhase:Z
            ifeq 17
            aload 3 /* fn */
            ldc ".jmod"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 17
        15: .line 343
            aload 0 /* this */
            aload 1 /* entry */
            invokevirtual jdk.internal.module.ModulePath.readJMod:(Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
        16: areturn
        end local 4 // boolean isDefaultFileSystem
        end local 3 // java.lang.String fn
        17: .line 347
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        18: .line 349
      StackMap locals:
      StackMap stack: java.lang.module.InvalidModuleDescriptorException
            astore 3 /* e */
        start local 3 // java.lang.module.InvalidModuleDescriptorException e
        19: .line 350
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error reading module: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* entry */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.module.InvalidModuleDescriptorException e
        end local 2 // java.nio.file.attribute.BasicFileAttributes attrs
        end local 1 // java.nio.file.Path entry
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   20     0                 this  Ljdk/internal/module/ModulePath;
            0   20     1                entry  Ljava/nio/file/Path;
            0   20     2                attrs  Ljava/nio/file/attribute/BasicFileAttributes;
            5   17     3                   fn  Ljava/lang/String;
            6   17     4  isDefaultFileSystem  Z
           11   14     5               tmpdir  Ljava/nio/file/Path;
           12   14     6               target  Ljava/nio/file/Path;
           19   20     3                    e  Ljava/lang/module/InvalidModuleDescriptorException;
      Exception table:
        from    to  target  type
           0     2      18  Class java.lang.module.InvalidModuleDescriptorException
           3     9      18  Class java.lang.module.InvalidModuleDescriptorException
          10    13      18  Class java.lang.module.InvalidModuleDescriptorException
          14    16      18  Class java.lang.module.InvalidModuleDescriptorException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      entry  
      attrs  

  private java.lang.String fileName(java.lang.module.ModuleReference);
    descriptor: (Ljava/lang/module/ModuleReference;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.lang.module.ModuleReference mref
         0: .line 360
            aload 1 /* mref */
            invokevirtual java.lang.module.ModuleReference.location:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.URI
            astore 2 /* uri */
        start local 2 // java.net.URI uri
         1: .line 361
            aload 2 /* uri */
            ifnull 6
         2: .line 362
            aload 2 /* uri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            ldc "file"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 363
            aload 2 /* uri */
            invokestatic java.nio.file.Path.of:(Ljava/net/URI;)Ljava/nio/file/Path;
            astore 3 /* file */
        start local 3 // java.nio.file.Path file
         4: .line 364
            aload 3 /* file */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.nio.file.Path file
         5: .line 366
      StackMap locals: java.net.URI
      StackMap stack:
            aload 2 /* uri */
            invokevirtual java.net.URI.toString:()Ljava/lang/String;
            areturn
         6: .line 369
      StackMap locals:
      StackMap stack:
            ldc "<unknown>"
            areturn
        end local 2 // java.net.URI uri
        end local 1 // java.lang.module.ModuleReference mref
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/internal/module/ModulePath;
            0    7     1  mref  Ljava/lang/module/ModuleReference;
            1    7     2   uri  Ljava/net/URI;
            4    5     3  file  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      mref  

  private java.util.Set<java.lang.String> jmodPackages(jdk.internal.jmod.JmodFile);
    descriptor: (Ljdk/internal/jmod/JmodFile;)Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // jdk.internal.jmod.JmodFile jf
         0: .line 376
            aload 1 /* jf */
            invokevirtual jdk.internal.jmod.JmodFile.stream:()Ljava/util/stream/Stream;
         1: .line 377
            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/internal/module/ModulePath.lambda$0(Ljdk/internal/jmod/JmodFile$Entry;)Z (6)
                  (Ljdk/internal/jmod/JmodFile$Entry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 378
            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;
                  jdk/internal/jmod/JmodFile$Entry.name()Ljava/lang/String; (5)
                  (Ljdk/internal/jmod/JmodFile$Entry;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 379
            aload 0 /* this */
            invokedynamic apply(Ljdk/internal/module/ModulePath;)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;
                  jdk/internal/module/ModulePath.toPackageName(Ljava/lang/String;)Ljava/util/Optional; (7)
                  (Ljava/lang/String;)Ljava/util/Optional;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         4: .line 380
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Optional.stream()Ljava/util/stream/Stream; (5)
                  (Ljava/util/Optional;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 381
            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
         6: .line 376
            areturn
        end local 1 // jdk.internal.jmod.JmodFile jf
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/internal/module/ModulePath;
            0    7     1    jf  Ljdk/internal/jmod/JmodFile;
    Signature: (Ljdk/internal/jmod/JmodFile;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      jf    

  private java.lang.module.ModuleReference readJMod(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path file
         0: .line 392
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: new jdk.internal.jmod.JmodFile
            dup
            aload 1 /* file */
            invokespecial jdk.internal.jmod.JmodFile.<init>:(Ljava/nio/file/Path;)V
            astore 4 /* jf */
        start local 4 // jdk.internal.jmod.JmodFile jf
         2: .line 394
            aconst_null
            astore 6
            aconst_null
            astore 7
         3: aload 4 /* jf */
            getstatic jdk.internal.jmod.JmodFile$Section.CLASSES:Ljdk/internal/jmod/JmodFile$Section;
            ldc "module-info.class"
            invokevirtual jdk.internal.jmod.JmodFile.getInputStream:(Ljdk/internal/jmod/JmodFile$Section;Ljava/lang/String;)Ljava/io/InputStream;
            astore 8 /* in */
        start local 8 // java.io.InputStream in
         4: .line 395
            aload 8 /* in */
            aload 0 /* this */
            aload 4 /* jf */
            invokedynamic get(Ljdk/internal/module/ModulePath;Ljdk/internal/jmod/JmodFile;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  jdk/internal/module/ModulePath.lambda$4(Ljdk/internal/jmod/JmodFile;)Ljava/util/Set; (7)
                  ()Ljava/util/Set;
            invokestatic jdk.internal.module.ModuleInfo.read:(Ljava/io/InputStream;Ljava/util/function/Supplier;)Ljdk/internal/module/ModuleInfo$Attributes;
            astore 5 /* attrs */
        start local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
         5: .line 396
            aload 8 /* in */
            ifnull 11
            aload 8 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 11
        end local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable jdk.internal.jmod.JmodFile top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
         6: astore 6
            aload 8 /* in */
            ifnull 7
            aload 8 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 8 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
         7: aload 6
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 7
            aload 6
            ifnonnull 9
            aload 7
            astore 6
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 6
            aload 7
            if_acmpeq 10
            aload 6
            aload 7
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 6
            athrow
        start local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
        11: .line 397
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable jdk.internal.jmod.JmodFile jdk.internal.module.ModuleInfo$Attributes
      StackMap stack:
            aload 5 /* attrs */
            aload 1 /* file */
            invokestatic jdk.internal.module.ModuleReferences.newJModModule:(Ljdk/internal/module/ModuleInfo$Attributes;Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
        12: .line 398
            aload 4 /* jf */
            ifnull 13
            aload 4 /* jf */
            invokevirtual jdk.internal.jmod.JmodFile.close:()V
        13: .line 397
      StackMap locals:
      StackMap stack: java.lang.module.ModuleReference
            areturn
        end local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable jdk.internal.jmod.JmodFile
      StackMap stack: java.lang.Throwable
        14: astore 2
        15: .line 398
            aload 4 /* jf */
            ifnull 16
            aload 4 /* jf */
            invokevirtual jdk.internal.jmod.JmodFile.close:()V
        end local 4 // jdk.internal.jmod.JmodFile jf
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 3
            aload 2
            ifnonnull 18
            aload 3
            astore 2
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 2
            aload 3
            if_acmpeq 19
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 2
            athrow
        end local 1 // java.nio.file.Path file
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   20     0   this  Ljdk/internal/module/ModulePath;
            0   20     1   file  Ljava/nio/file/Path;
            2   16     4     jf  Ljdk/internal/jmod/JmodFile;
            5    6     5  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
           11   14     5  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
            4    7     8     in  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           4     5       6  any
           3     8       8  any
           2    12      14  any
           1    13      17  any
          14    17      17  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  private java.util.Optional<java.lang.String> toServiceName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.lang.String cf
         0: .line 417
            getstatic jdk.internal.module.ModulePath.$assertionsDisabled:Z
            ifne 1
            aload 1 /* cf */
            ldc "META-INF/services/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 418
      StackMap locals:
      StackMap stack:
            aload 1 /* cf */
            ldc "/"
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            iconst_1
            iadd
            istore 2 /* index */
        start local 2 // int index
         2: .line 419
            iload 2 /* index */
            aload 1 /* cf */
            invokevirtual java.lang.String.length:()I
            if_icmpge 8
         3: .line 420
            aload 1 /* cf */
            iconst_0
            iload 2 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* prefix */
        start local 3 // java.lang.String prefix
         4: .line 421
            aload 3 /* prefix */
            ldc "META-INF/services/"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         5: .line 422
            aload 1 /* cf */
            iload 2 /* index */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* sn */
        start local 4 // java.lang.String sn
         6: .line 423
            aload 4 /* sn */
            invokestatic jdk.internal.module.Checks.isClassName:(Ljava/lang/String;)Z
            ifeq 8
         7: .line 424
            aload 4 /* sn */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
        end local 4 // java.lang.String sn
        end local 3 // java.lang.String prefix
         8: .line 427
      StackMap locals: int
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 2 // int index
        end local 1 // java.lang.String cf
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljdk/internal/module/ModulePath;
            0    9     1      cf  Ljava/lang/String;
            2    9     2   index  I
            4    8     3  prefix  Ljava/lang/String;
            6    8     4      sn  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      cf    

  private java.lang.String nextLine(java.io.BufferedReader);
    descriptor: (Ljava/io/BufferedReader;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.io.BufferedReader reader
         0: .line 437
            aload 1 /* reader */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 2 /* ln */
        start local 2 // java.lang.String ln
         1: .line 438
            aload 2 /* ln */
            ifnull 6
         2: .line 439
            aload 2 /* ln */
            bipush 35
            invokevirtual java.lang.String.indexOf:(I)I
            istore 3 /* ci */
        start local 3 // int ci
         3: .line 440
            iload 3 /* ci */
            iflt 5
         4: .line 441
            aload 2 /* ln */
            iconst_0
            iload 3 /* ci */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* ln */
         5: .line 442
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 2 /* ln */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* ln */
        end local 3 // int ci
         6: .line 444
      StackMap locals:
      StackMap stack:
            aload 2 /* ln */
            areturn
        end local 2 // java.lang.String ln
        end local 1 // java.io.BufferedReader reader
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljdk/internal/module/ModulePath;
            0    7     1  reader  Ljava/io/BufferedReader;
            1    7     2      ln  Ljava/lang/String;
            3    6     3      ci  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      reader  

  private java.lang.module.ModuleDescriptor deriveModuleDescriptor(java.util.jar.JarFile);
    descriptor: (Ljava/util/jar/JarFile;)Ljava/lang/module/ModuleDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=29, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.util.jar.JarFile jf
         0: .line 463
            aload 1 /* jf */
            invokevirtual java.util.jar.JarFile.getManifest:()Ljava/util/jar/Manifest;
            astore 2 /* man */
        start local 2 // java.util.jar.Manifest man
         1: .line 464
            aconst_null
            astore 3 /* attrs */
        start local 3 // java.util.jar.Attributes attrs
         2: .line 465
            aconst_null
            astore 4 /* moduleName */
        start local 4 // java.lang.String moduleName
         3: .line 466
            aload 2 /* man */
            ifnull 7
         4: .line 467
            aload 2 /* man */
            invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
            astore 3 /* attrs */
         5: .line 468
            aload 3 /* attrs */
            ifnull 7
         6: .line 469
            aload 3 /* attrs */
            getstatic jdk.internal.module.ModulePath.AUTOMATIC_MODULE_NAME:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 4 /* moduleName */
         7: .line 474
      StackMap locals: java.util.jar.Manifest java.util.jar.Attributes java.lang.String
      StackMap stack:
            aload 1 /* jf */
            invokevirtual java.util.jar.JarFile.getName:()Ljava/lang/String;
            astore 5 /* fn */
        start local 5 // java.lang.String fn
         8: .line 475
            aload 5 /* fn */
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            istore 6 /* i */
        start local 6 // int i
         9: .line 476
            iload 6 /* i */
            iconst_m1
            if_icmpeq 11
        10: .line 477
            aload 5 /* fn */
            iload 6 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 5 /* fn */
        11: .line 480
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 5 /* fn */
            iconst_0
            aload 5 /* fn */
            invokevirtual java.lang.String.length:()I
            iconst_4
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
        12: .line 481
            aconst_null
            astore 8 /* vs */
        start local 8 // java.lang.String vs
        13: .line 484
            getstatic jdk.internal.module.ModulePath$Patterns.DASH_VERSION:Ljava/util/regex/Pattern;
            aload 7 /* name */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 9 /* matcher */
        start local 9 // java.util.regex.Matcher matcher
        14: .line 485
            aload 9 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 22
        15: .line 486
            aload 9 /* matcher */
            invokevirtual java.util.regex.Matcher.start:()I
            istore 10 /* start */
        start local 10 // int start
        16: .line 490
            aload 7 /* name */
            iload 10 /* start */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 11 /* tail */
        start local 11 // java.lang.String tail
        17: .line 491
            aload 11 /* tail */
            invokestatic java.lang.module.ModuleDescriptor$Version.parse:(Ljava/lang/String;)Ljava/lang/module/ModuleDescriptor$Version;
            pop
        18: .line 492
            aload 11 /* tail */
            astore 8 /* vs */
        end local 11 // java.lang.String tail
        19: .line 493
            goto 21
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher int
      StackMap stack: java.lang.IllegalArgumentException
        20: pop
        21: .line 495
      StackMap locals:
      StackMap stack:
            aload 7 /* name */
            iconst_0
            iload 10 /* start */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* name */
        end local 10 // int start
        22: .line 501
      StackMap locals:
      StackMap stack:
            aload 4 /* moduleName */
            ifnull 27
        23: .line 503
            aload 4 /* moduleName */
            invokestatic java.lang.module.ModuleDescriptor.newAutomaticModule:(Ljava/lang/String;)Ljava/lang/module/ModuleDescriptor$Builder;
            astore 10 /* builder */
        start local 10 // java.lang.module.ModuleDescriptor$Builder builder
        24: .line 504
            goto 28
        end local 10 // java.lang.module.ModuleDescriptor$Builder builder
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
        25: astore 11 /* e */
        start local 11 // java.lang.IllegalArgumentException e
        26: .line 505
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            getstatic jdk.internal.module.ModulePath.AUTOMATIC_MODULE_NAME:Ljava/util/jar/Attributes$Name;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 11 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;)V
            athrow
        end local 11 // java.lang.IllegalArgumentException e
        27: .line 508
      StackMap locals:
      StackMap stack:
            aload 7 /* name */
            invokestatic jdk.internal.module.ModulePath.cleanModuleName:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.module.ModuleDescriptor.newAutomaticModule:(Ljava/lang/String;)Ljava/lang/module/ModuleDescriptor$Builder;
            astore 10 /* builder */
        start local 10 // java.lang.module.ModuleDescriptor$Builder builder
        28: .line 512
      StackMap locals: java.lang.module.ModuleDescriptor$Builder
      StackMap stack:
            aload 8 /* vs */
            ifnull 30
        29: .line 513
            aload 10 /* builder */
            aload 8 /* vs */
            invokevirtual java.lang.module.ModuleDescriptor$Builder.version:(Ljava/lang/String;)Ljava/lang/module/ModuleDescriptor$Builder;
            pop
        30: .line 516
      StackMap locals:
      StackMap stack:
            aload 1 /* jf */
            invokevirtual java.util.jar.JarFile.versionedStream:()Ljava/util/stream/Stream;
        31: .line 517
            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/internal/module/ModulePath.lambda$5(Ljava/util/jar/JarEntry;)Z (6)
                  (Ljava/util/jar/JarEntry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
        32: .line 518
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/zip/ZipEntry.getName()Ljava/lang/String; (5)
                  (Ljava/util/jar/JarEntry;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        33: .line 519
            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/internal/module/ModulePath.lambda$7(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
        34: .line 520
            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/internal/module/ModulePath.lambda$8(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
        35: .line 521
            invokestatic java.util.stream.Collectors.toSet:()Ljava/util/stream/Collector;
        36: .line 520
            invokestatic java.util.stream.Collectors.partitioningBy:(Ljava/util/function/Predicate;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Map
        37: .line 516
            astore 11 /* map */
        start local 11 // java.util.Map map
        38: .line 523
            aload 11 /* map */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 12 /* classFiles */
        start local 12 // java.util.Set classFiles
        39: .line 524
            aload 11 /* map */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 13 /* configFiles */
        start local 13 // java.util.Set configFiles
        40: .line 527
            aload 12 /* classFiles */
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        41: .line 528
            aload 0 /* this */
            invokedynamic apply(Ljdk/internal/module/ModulePath;)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;
                  jdk/internal/module/ModulePath.toPackageName(Ljava/lang/String;)Ljava/util/Optional; (7)
                  (Ljava/lang/String;)Ljava/util/Optional;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        42: .line 529
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Optional.stream()Ljava/util/stream/Stream; (5)
                  (Ljava/util/Optional;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        43: .line 530
            invokeinterface java.util.stream.Stream.distinct:()Ljava/util/stream/Stream;
        44: .line 531
            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
        45: .line 527
            astore 14 /* packages */
        start local 14 // java.util.Set packages
        46: .line 534
            aload 10 /* builder */
            aload 14 /* packages */
            invokevirtual java.lang.module.ModuleDescriptor$Builder.packages:(Ljava/util/Set;)Ljava/lang/module/ModuleDescriptor$Builder;
            pop
        47: .line 537
            aload 13 /* configFiles */
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        48: .line 538
            aload 0 /* this */
            invokedynamic apply(Ljdk/internal/module/ModulePath;)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;
                  jdk/internal/module/ModulePath.toServiceName(Ljava/lang/String;)Ljava/util/Optional; (7)
                  (Ljava/lang/String;)Ljava/util/Optional;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        49: .line 539
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Optional.stream()Ljava/util/stream/Stream; (5)
                  (Ljava/util/Optional;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        50: .line 540
            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
        51: .line 537
            astore 16 /* serviceNames */
        start local 16 // java.util.Set serviceNames
        52: .line 543
            aload 16 /* serviceNames */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 19
            goto 77
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher java.lang.module.ModuleDescriptor$Builder java.util.Map java.util.Set java.util.Set java.util.Set top java.util.Set top top java.util.Iterator
      StackMap stack:
        53: aload 19
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 18 /* sn */
        start local 18 // java.lang.String sn
        54: .line 544
            aload 1 /* jf */
            new java.lang.StringBuilder
            dup
            ldc "META-INF/services/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 18 /* sn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.jar.JarFile.getJarEntry:(Ljava/lang/String;)Ljava/util/jar/JarEntry;
            astore 20 /* entry */
        start local 20 // java.util.jar.JarEntry entry
        55: .line 545
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 21 /* providerClasses */
        start local 21 // java.util.List providerClasses
        56: .line 546
            aconst_null
            astore 22
            aconst_null
            astore 23
        57: aload 1 /* jf */
            aload 20 /* entry */
            invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
            astore 24 /* in */
        start local 24 // java.io.InputStream in
        58: .line 548
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            aload 24 /* in */
            getstatic sun.nio.cs.UTF_8.INSTANCE:Lsun/nio/cs/UTF_8;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
        59: .line 547
            astore 25 /* reader */
        start local 25 // java.io.BufferedReader reader
        60: .line 550
            goto 67
        start local 26 // java.lang.String cn
        61: .line 551
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher java.lang.module.ModuleDescriptor$Builder java.util.Map java.util.Set java.util.Set java.util.Set top java.util.Set top java.lang.String java.util.Iterator java.util.jar.JarEntry java.util.List java.lang.Throwable java.lang.Throwable java.io.InputStream java.io.BufferedReader java.lang.String
      StackMap stack:
            aload 26 /* cn */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 67
        62: .line 552
            aload 26 /* cn */
            invokestatic jdk.internal.module.ModulePath.packageName:(Ljava/lang/String;)Ljava/lang/String;
            astore 27 /* pn */
        start local 27 // java.lang.String pn
        63: .line 553
            aload 14 /* packages */
            aload 27 /* pn */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 66
        64: .line 554
            new java.lang.StringBuilder
            dup
            ldc "Provider class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 26 /* cn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not in module"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 28 /* msg */
        start local 28 // java.lang.String msg
        65: .line 555
            new java.lang.module.InvalidModuleDescriptorException
            dup
            aload 28 /* msg */
            invokespecial java.lang.module.InvalidModuleDescriptorException.<init>:(Ljava/lang/String;)V
            athrow
        end local 28 // java.lang.String msg
        66: .line 557
      StackMap locals: java.lang.String
      StackMap stack:
            aload 21 /* providerClasses */
            aload 26 /* cn */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 27 // java.lang.String pn
        end local 26 // java.lang.String cn
        67: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 25 /* reader */
            invokevirtual jdk.internal.module.ModulePath.nextLine:(Ljava/io/BufferedReader;)Ljava/lang/String;
            dup
            astore 26 /* cn */
        start local 26 // java.lang.String cn
        68: ifnonnull 61
        end local 26 // java.lang.String cn
        end local 25 // java.io.BufferedReader reader
        69: .line 560
            aload 24 /* in */
            ifnull 75
            aload 24 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 75
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher java.lang.module.ModuleDescriptor$Builder java.util.Map java.util.Set java.util.Set java.util.Set top java.util.Set top java.lang.String java.util.Iterator java.util.jar.JarEntry java.util.List java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        70: astore 22
            aload 24 /* in */
            ifnull 71
            aload 24 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 24 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
        71: aload 22
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        72: astore 23
            aload 22
            ifnonnull 73
            aload 23
            astore 22
            goto 74
      StackMap locals:
      StackMap stack:
        73: aload 22
            aload 23
            if_acmpeq 74
            aload 22
            aload 23
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        74: aload 22
            athrow
        75: .line 561
      StackMap locals:
      StackMap stack:
            aload 21 /* providerClasses */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 77
        76: .line 562
            aload 10 /* builder */
            aload 18 /* sn */
            aload 21 /* providerClasses */
            invokevirtual java.lang.module.ModuleDescriptor$Builder.provides:(Ljava/lang/String;Ljava/util/List;)Ljava/lang/module/ModuleDescriptor$Builder;
            pop
        end local 21 // java.util.List providerClasses
        end local 20 // java.util.jar.JarEntry entry
        end local 18 // java.lang.String sn
        77: .line 543
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher java.lang.module.ModuleDescriptor$Builder java.util.Map java.util.Set java.util.Set java.util.Set top java.util.Set top top java.util.Iterator
      StackMap stack:
            aload 19
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 53
        78: .line 566
            aload 3 /* attrs */
            ifnull 86
        79: .line 567
            aload 3 /* attrs */
            getstatic java.util.jar.Attributes$Name.MAIN_CLASS:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 18 /* mainClass */
        start local 18 // java.lang.String mainClass
        80: .line 568
            aload 18 /* mainClass */
            ifnull 86
        81: .line 569
            aload 18 /* mainClass */
            ldc "/"
            ldc "."
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 18 /* mainClass */
        82: .line 570
            aload 18 /* mainClass */
            invokestatic jdk.internal.module.Checks.isClassName:(Ljava/lang/String;)Z
            ifeq 86
        83: .line 571
            aload 18 /* mainClass */
            invokestatic jdk.internal.module.ModulePath.packageName:(Ljava/lang/String;)Ljava/lang/String;
            astore 19 /* pn */
        start local 19 // java.lang.String pn
        84: .line 572
            aload 14 /* packages */
            aload 19 /* pn */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 86
        85: .line 573
            aload 10 /* builder */
            aload 18 /* mainClass */
            invokevirtual java.lang.module.ModuleDescriptor$Builder.mainClass:(Ljava/lang/String;)Ljava/lang/module/ModuleDescriptor$Builder;
            pop
        end local 19 // java.lang.String pn
        end local 18 // java.lang.String mainClass
        86: .line 579
      StackMap locals: jdk.internal.module.ModulePath java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String int java.lang.String java.lang.String java.util.regex.Matcher java.lang.module.ModuleDescriptor$Builder java.util.Map java.util.Set java.util.Set java.util.Set top java.util.Set
      StackMap stack:
            aload 10 /* builder */
            invokevirtual java.lang.module.ModuleDescriptor$Builder.build:()Ljava/lang/module/ModuleDescriptor;
            areturn
        end local 16 // java.util.Set serviceNames
        end local 14 // java.util.Set packages
        end local 13 // java.util.Set configFiles
        end local 12 // java.util.Set classFiles
        end local 11 // java.util.Map map
        end local 10 // java.lang.module.ModuleDescriptor$Builder builder
        end local 9 // java.util.regex.Matcher matcher
        end local 8 // java.lang.String vs
        end local 7 // java.lang.String name
        end local 6 // int i
        end local 5 // java.lang.String fn
        end local 4 // java.lang.String moduleName
        end local 3 // java.util.jar.Attributes attrs
        end local 2 // java.util.jar.Manifest man
        end local 1 // java.util.jar.JarFile jf
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   87     0             this  Ljdk/internal/module/ModulePath;
            0   87     1               jf  Ljava/util/jar/JarFile;
            1   87     2              man  Ljava/util/jar/Manifest;
            2   87     3            attrs  Ljava/util/jar/Attributes;
            3   87     4       moduleName  Ljava/lang/String;
            8   87     5               fn  Ljava/lang/String;
            9   87     6                i  I
           12   87     7             name  Ljava/lang/String;
           13   87     8               vs  Ljava/lang/String;
           14   87     9          matcher  Ljava/util/regex/Matcher;
           16   22    10            start  I
           17   19    11             tail  Ljava/lang/String;
           24   25    10          builder  Ljava/lang/module/ModuleDescriptor$Builder;
           28   87    10          builder  Ljava/lang/module/ModuleDescriptor$Builder;
           26   27    11                e  Ljava/lang/IllegalArgumentException;
           38   87    11              map  Ljava/util/Map<Ljava/lang/Boolean;Ljava/util/Set<Ljava/lang/String;>;>;
           39   87    12       classFiles  Ljava/util/Set<Ljava/lang/String;>;
           40   87    13      configFiles  Ljava/util/Set<Ljava/lang/String;>;
           46   87    14         packages  Ljava/util/Set<Ljava/lang/String;>;
           52   87    16     serviceNames  Ljava/util/Set<Ljava/lang/String;>;
           54   77    18               sn  Ljava/lang/String;
           55   77    20            entry  Ljava/util/jar/JarEntry;
           56   77    21  providerClasses  Ljava/util/List<Ljava/lang/String;>;
           58   71    24               in  Ljava/io/InputStream;
           60   69    25           reader  Ljava/io/BufferedReader;
           61   67    26               cn  Ljava/lang/String;
           68   69    26               cn  Ljava/lang/String;
           63   67    27               pn  Ljava/lang/String;
           65   66    28              msg  Ljava/lang/String;
           80   86    18        mainClass  Ljava/lang/String;
           84   86    19               pn  Ljava/lang/String;
      Exception table:
        from    to  target  type
          16    19      20  Class java.lang.IllegalArgumentException
          23    24      25  Class java.lang.IllegalArgumentException
          58    69      70  any
          57    72      72  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      jf    

  private static java.lang.String cleanModuleName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String mn
         0: .line 598
            getstatic jdk.internal.module.ModulePath$Patterns.NON_ALPHANUM:Ljava/util/regex/Pattern;
            aload 0 /* mn */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            ldc "."
            invokevirtual java.util.regex.Matcher.replaceAll:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* mn */
         1: .line 601
            getstatic jdk.internal.module.ModulePath$Patterns.REPEATING_DOTS:Ljava/util/regex/Pattern;
            aload 0 /* mn */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            ldc "."
            invokevirtual java.util.regex.Matcher.replaceAll:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* mn */
         2: .line 604
            aload 0 /* mn */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 4
            aload 0 /* mn */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 46
            if_icmpne 4
         3: .line 605
            getstatic jdk.internal.module.ModulePath$Patterns.LEADING_DOTS:Ljava/util/regex/Pattern;
            aload 0 /* mn */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            ldc ""
            invokevirtual java.util.regex.Matcher.replaceAll:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* mn */
         4: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* mn */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         5: .line 609
            iload 1 /* len */
            ifle 7
            aload 0 /* mn */
            iload 1 /* len */
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            bipush 46
            if_icmpne 7
         6: .line 610
            getstatic jdk.internal.module.ModulePath$Patterns.TRAILING_DOTS:Ljava/util/regex/Pattern;
            aload 0 /* mn */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            ldc ""
            invokevirtual java.util.regex.Matcher.replaceAll:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* mn */
         7: .line 612
      StackMap locals: int
      StackMap stack:
            aload 0 /* mn */
            areturn
        end local 1 // int len
        end local 0 // java.lang.String mn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0    mn  Ljava/lang/String;
            5    8     1   len  I
    MethodParameters:
      Name  Flags
      mn    

  private java.util.Set<java.lang.String> jarPackages(java.util.jar.JarFile);
    descriptor: (Ljava/util/jar/JarFile;)Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.util.jar.JarFile jf
         0: .line 616
            aload 1 /* jf */
            invokevirtual java.util.jar.JarFile.versionedStream:()Ljava/util/stream/Stream;
         1: .line 617
            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/internal/module/ModulePath.lambda$13(Ljava/util/jar/JarEntry;)Z (6)
                  (Ljava/util/jar/JarEntry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 618
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/zip/ZipEntry.getName()Ljava/lang/String; (5)
                  (Ljava/util/jar/JarEntry;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         3: .line 619
            aload 0 /* this */
            invokedynamic apply(Ljdk/internal/module/ModulePath;)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;
                  jdk/internal/module/ModulePath.toPackageName(Ljava/lang/String;)Ljava/util/Optional; (7)
                  (Ljava/lang/String;)Ljava/util/Optional;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         4: .line 620
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Optional.stream()Ljava/util/stream/Stream; (5)
                  (Ljava/util/Optional;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 621
            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
         6: .line 616
            areturn
        end local 1 // java.util.jar.JarFile jf
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljdk/internal/module/ModulePath;
            0    7     1    jf  Ljava/util/jar/JarFile;
    Signature: (Ljava/util/jar/JarFile;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      jf    

  private java.lang.module.ModuleReference readJar(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path file
         0: .line 633
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: new java.util.jar.JarFile
            dup
            aload 1 /* file */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
         2: .line 634
            iconst_1
         3: .line 635
            iconst_1
         4: .line 636
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.releaseVersion:Ljava/lang/Runtime$Version;
         5: .line 633
            invokespecial java.util.jar.JarFile.<init>:(Ljava/io/File;ZILjava/lang/Runtime$Version;)V
            astore 4 /* jf */
        start local 4 // java.util.jar.JarFile jf
         6: .line 639
            aload 4 /* jf */
            ldc "module-info.class"
            invokevirtual java.util.jar.JarFile.getJarEntry:(Ljava/lang/String;)Ljava/util/jar/JarEntry;
            astore 6 /* entry */
        start local 6 // java.util.jar.JarEntry entry
         7: .line 640
            aload 6 /* entry */
            ifnonnull 15
         8: .line 644
            aload 0 /* this */
            aload 4 /* jf */
            invokevirtual jdk.internal.module.ModulePath.deriveModuleDescriptor:(Ljava/util/jar/JarFile;)Ljava/lang/module/ModuleDescriptor;
            astore 7 /* md */
        start local 7 // java.lang.module.ModuleDescriptor md
         9: .line 645
            new jdk.internal.module.ModuleInfo$Attributes
            dup
            aload 7 /* md */
            aconst_null
            aconst_null
            aconst_null
            invokespecial jdk.internal.module.ModuleInfo$Attributes.<init>:(Ljava/lang/module/ModuleDescriptor;Ljdk/internal/module/ModuleTarget;Ljdk/internal/module/ModuleHashes;Ljdk/internal/module/ModuleResolution;)V
            astore 5 /* attrs */
        end local 7 // java.lang.module.ModuleDescriptor md
        start local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
        10: .line 646
            goto 18
        end local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable java.util.jar.JarFile top java.util.jar.JarEntry
      StackMap stack: java.lang.RuntimeException
        11: astore 7 /* e */
        start local 7 // java.lang.RuntimeException e
        12: .line 647
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to derive module descriptor for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 648
            aload 4 /* jf */
            invokevirtual java.util.jar.JarFile.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 7 /* e */
        14: .line 647
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.RuntimeException e
        15: .line 652
      StackMap locals:
      StackMap stack:
            aload 4 /* jf */
            aload 6 /* entry */
            invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
        16: .line 653
            aload 0 /* this */
            aload 4 /* jf */
            invokedynamic get(Ljdk/internal/module/ModulePath;Ljava/util/jar/JarFile;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  jdk/internal/module/ModulePath.lambda$17(Ljava/util/jar/JarFile;)Ljava/util/Set; (7)
                  ()Ljava/util/Set;
        17: .line 652
            invokestatic jdk.internal.module.ModuleInfo.read:(Ljava/io/InputStream;Ljava/util/function/Supplier;)Ljdk/internal/module/ModuleInfo$Attributes;
            astore 5 /* attrs */
        start local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
        18: .line 656
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable java.util.jar.JarFile jdk.internal.module.ModuleInfo$Attributes java.util.jar.JarEntry
      StackMap stack:
            aload 5 /* attrs */
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.patcher:Ljdk/internal/module/ModulePatcher;
            aload 1 /* file */
            invokestatic jdk.internal.module.ModuleReferences.newJarModule:(Ljdk/internal/module/ModuleInfo$Attributes;Ljdk/internal/module/ModulePatcher;Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
        19: .line 657
            aload 4 /* jf */
            ifnull 20
            aload 4 /* jf */
            invokevirtual java.util.jar.JarFile.close:()V
        20: .line 656
      StackMap locals:
      StackMap stack: java.lang.module.ModuleReference
            areturn
        end local 6 // java.util.jar.JarEntry entry
        end local 5 // jdk.internal.module.ModuleInfo$Attributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.lang.Throwable java.lang.Throwable java.util.jar.JarFile
      StackMap stack: java.lang.Throwable
        21: astore 2
        22: .line 657
            aload 4 /* jf */
            ifnull 23
            aload 4 /* jf */
            invokevirtual java.util.jar.JarFile.close:()V
        end local 4 // java.util.jar.JarFile jf
      StackMap locals:
      StackMap stack:
        23: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 3
            aload 2
            ifnonnull 25
            aload 3
            astore 2
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 2
            aload 3
            if_acmpeq 26
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 2
            athrow
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path
      StackMap stack: java.util.zip.ZipException
        27: astore 2 /* e */
        start local 2 // java.util.zip.ZipException e
        28: .line 658
            new java.lang.module.FindException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error reading "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial java.lang.module.FindException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.util.zip.ZipException e
        end local 1 // java.nio.file.Path file
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   29     0   this  Ljdk/internal/module/ModulePath;
            0   29     1   file  Ljava/nio/file/Path;
            6   23     4     jf  Ljava/util/jar/JarFile;
           10   11     5  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
           18   21     5  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
            7   21     6  entry  Ljava/util/jar/JarEntry;
            9   10     7     md  Ljava/lang/module/ModuleDescriptor;
           12   15     7      e  Ljava/lang/RuntimeException;
           28   29     2      e  Ljava/util/zip/ZipException;
      Exception table:
        from    to  target  type
           8    10      11  Class java.lang.RuntimeException
           6    19      21  any
           1    20      24  any
          21    24      24  any
           0    20      27  Class java.util.zip.ZipException
          21    27      27  Class java.util.zip.ZipException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  private java.util.Set<java.lang.String> explodedPackages(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path dir
         0: .line 667
            aload 1 /* dir */
            ldc 2147483647
         1: .line 668
            aload 0 /* this */
            invokedynamic test(Ljdk/internal/module/ModulePath;)Ljava/util/function/BiPredicate;
              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;)Z
                  jdk/internal/module/ModulePath.lambda$18(Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z (7)
                  (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z
            iconst_0
            anewarray java.nio.file.FileVisitOption
         2: .line 667
            invokestatic java.nio.file.Files.find:(Ljava/nio/file/Path;ILjava/util/function/BiPredicate;[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream;
         3: .line 669
            aload 1 /* dir */
            invokedynamic apply(Ljava/nio/file/Path;)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;
                  jdk/internal/module/ModulePath.lambda$19(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path; (6)
                  (Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         4: .line 670
            aload 0 /* this */
            invokedynamic apply(Ljdk/internal/module/ModulePath;)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;
                  jdk/internal/module/ModulePath.toPackageName(Ljava/nio/file/Path;)Ljava/util/Optional; (7)
                  (Ljava/nio/file/Path;)Ljava/util/Optional;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         5: .line 671
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  java/util/Optional.stream()Ljava/util/stream/Stream; (5)
                  (Ljava/util/Optional;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.flatMap:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         6: .line 672
            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
         7: .line 667
            areturn
         8: .line 673
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* x */
        start local 2 // java.io.IOException x
         9: .line 674
            new java.io.UncheckedIOException
            dup
            aload 2 /* x */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 2 // java.io.IOException x
        end local 1 // java.nio.file.Path dir
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Ljdk/internal/module/ModulePath;
            0   10     1   dir  Ljava/nio/file/Path;
            9   10     2     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     7       8  Class java.io.IOException
    Signature: (Ljava/nio/file/Path;)Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      dir   

  private java.lang.module.ModuleReference readExplodedModule(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path dir
         0: .line 686
            aload 1 /* dir */
            ldc "module-info.class"
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* mi */
        start local 2 // java.nio.file.Path mi
         1: .line 688
            aconst_null
            astore 4
            aconst_null
            astore 5
         2: aload 2 /* mi */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.newInputStream:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
            astore 6 /* in */
        start local 6 // java.io.InputStream in
         3: .line 689
            new java.io.BufferedInputStream
            dup
            aload 6 /* in */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
         4: .line 690
            aload 0 /* this */
            aload 1 /* dir */
            invokedynamic get(Ljdk/internal/module/ModulePath;Ljava/nio/file/Path;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  jdk/internal/module/ModulePath.lambda$22(Ljava/nio/file/Path;)Ljava/util/Set; (7)
                  ()Ljava/util/Set;
         5: .line 689
            invokestatic jdk.internal.module.ModuleInfo.read:(Ljava/io/InputStream;Ljava/util/function/Supplier;)Ljdk/internal/module/ModuleInfo$Attributes;
            astore 3 /* attrs */
        start local 3 // jdk.internal.module.ModuleInfo$Attributes attrs
         6: .line 691
            aload 6 /* in */
            ifnull 14
            aload 6 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 14
        end local 3 // jdk.internal.module.ModuleInfo$Attributes attrs
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.nio.file.Path top java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
         7: astore 4
            aload 6 /* in */
            ifnull 8
            aload 6 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
         8: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 5
            aload 4
            ifnonnull 10
            aload 5
            astore 4
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 4
            aload 5
            if_acmpeq 11
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 4
            athrow
      StackMap locals: jdk.internal.module.ModulePath java.nio.file.Path java.nio.file.Path
      StackMap stack: java.nio.file.NoSuchFileException
        12: pop
        13: .line 693
            aconst_null
            areturn
        start local 3 // jdk.internal.module.ModuleInfo$Attributes attrs
        14: .line 695
      StackMap locals: jdk.internal.module.ModuleInfo$Attributes
      StackMap stack:
            aload 3 /* attrs */
            aload 0 /* this */
            getfield jdk.internal.module.ModulePath.patcher:Ljdk/internal/module/ModulePatcher;
            aload 1 /* dir */
            invokestatic jdk.internal.module.ModuleReferences.newExplodedModule:(Ljdk/internal/module/ModuleInfo$Attributes;Ljdk/internal/module/ModulePatcher;Ljava/nio/file/Path;)Ljava/lang/module/ModuleReference;
            areturn
        end local 3 // jdk.internal.module.ModuleInfo$Attributes attrs
        end local 2 // java.nio.file.Path mi
        end local 1 // java.nio.file.Path dir
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Ljdk/internal/module/ModulePath;
            0   15     1    dir  Ljava/nio/file/Path;
            1   15     2     mi  Ljava/nio/file/Path;
            6    7     3  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
           14   15     3  attrs  Ljdk/internal/module/ModuleInfo$Attributes;
            3    8     6     in  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           3     6       7  any
           2     9       9  any
           1    12      12  Class java.nio.file.NoSuchFileException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dir   

  private static java.lang.String packageName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String cn
         0: .line 702
            aload 0 /* cn */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 1 /* index */
        start local 1 // int index
         1: .line 703
            iload 1 /* index */
            iconst_m1
            if_icmpne 2
            ldc ""
            goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 0 /* cn */
            iconst_0
            iload 1 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
        end local 1 // int index
        end local 0 // java.lang.String cn
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0     cn  Ljava/lang/String;
            1    4     1  index  I
    MethodParameters:
      Name  Flags
      cn    

  private java.util.Optional<java.lang.String> toPackageName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.lang.String name
         0: .line 714
            getstatic jdk.internal.module.ModulePath.$assertionsDisabled:Z
            ifne 1
            aload 1 /* name */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 715
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            ldc "/"
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            istore 2 /* index */
        start local 2 // int index
         2: .line 716
            iload 2 /* index */
            iconst_m1
            if_icmpne 9
         3: .line 717
            aload 1 /* name */
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 8
            aload 1 /* name */
            ldc "module-info.class"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
         4: .line 718
            new java.lang.StringBuilder
            dup
            aload 1 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " found in top-level directory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 719
            ldc " (unnamed package not allowed in module)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 718
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* msg */
        start local 3 // java.lang.String msg
         7: .line 720
            new java.lang.module.InvalidModuleDescriptorException
            dup
            aload 3 /* msg */
            invokespecial java.lang.module.InvalidModuleDescriptorException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String msg
         8: .line 722
      StackMap locals: int
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
         9: .line 725
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            iconst_0
            iload 2 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            bipush 47
            bipush 46
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            astore 3 /* pn */
        start local 3 // java.lang.String pn
        10: .line 726
            aload 3 /* pn */
            invokestatic jdk.internal.module.Checks.isPackageName:(Ljava/lang/String;)Z
            ifeq 12
        11: .line 727
            aload 3 /* pn */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
        12: .line 730
      StackMap locals: java.lang.String
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 3 // java.lang.String pn
        end local 2 // int index
        end local 1 // java.lang.String name
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Ljdk/internal/module/ModulePath;
            0   13     1   name  Ljava/lang/String;
            2   13     2  index  I
            7    8     3    msg  Ljava/lang/String;
           10   13     3     pn  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      name  

  private java.util.Optional<java.lang.String> toPackageName(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/Optional;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path file
         0: .line 742
            getstatic jdk.internal.module.ModulePath.$assertionsDisabled:Z
            ifne 1
            aload 1 /* file */
            invokeinterface java.nio.file.Path.getRoot:()Ljava/nio/file/Path;
            ifnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 744
      StackMap locals:
      StackMap stack:
            aload 1 /* file */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            astore 2 /* parent */
        start local 2 // java.nio.file.Path parent
         2: .line 745
            aload 2 /* parent */
            ifnonnull 10
         3: .line 746
            aload 1 /* file */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         4: .line 747
            aload 3 /* name */
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 9
            aload 3 /* name */
            ldc "module-info.class"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
         5: .line 748
            new java.lang.StringBuilder
            dup
            aload 3 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " found in top-level directory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 749
            ldc " (unnamed package not allowed in module)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 748
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* msg */
        start local 4 // java.lang.String msg
         8: .line 750
            new java.lang.module.InvalidModuleDescriptorException
            dup
            aload 4 /* msg */
            invokespecial java.lang.module.InvalidModuleDescriptorException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String msg
         9: .line 752
      StackMap locals: java.nio.file.Path java.lang.String
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 3 // java.lang.String name
        10: .line 755
      StackMap locals:
      StackMap stack:
            aload 2 /* parent */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            getstatic java.io.File.separatorChar:C
            bipush 46
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            astore 3 /* pn */
        start local 3 // java.lang.String pn
        11: .line 756
            aload 3 /* pn */
            invokestatic jdk.internal.module.Checks.isPackageName:(Ljava/lang/String;)Z
            ifeq 13
        12: .line 757
            aload 3 /* pn */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
        13: .line 760
      StackMap locals: java.lang.String
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
        end local 3 // java.lang.String pn
        end local 2 // java.nio.file.Path parent
        end local 1 // java.nio.file.Path file
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Ljdk/internal/module/ModulePath;
            0   14     1    file  Ljava/nio/file/Path;
            2   14     2  parent  Ljava/nio/file/Path;
            4   10     3    name  Ljava/lang/String;
            8    9     4     msg  Ljava/lang/String;
           11   14     3      pn  Ljava/lang/String;
    Signature: (Ljava/nio/file/Path;)Ljava/util/Optional<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      file  

  private boolean isHidden(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path file
         0: .line 769
            aload 1 /* file */
            invokestatic java.nio.file.Files.isHidden:(Ljava/nio/file/Path;)Z
         1: ireturn
         2: .line 770
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         3: .line 771
            iconst_0
            ireturn
        end local 1 // java.nio.file.Path file
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/internal/module/ModulePath;
            0    4     1  file  Ljava/nio/file/Path;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  private boolean isDefaultFileSystem(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path path
         0: .line 780
            aload 1 /* path */
            invokeinterface java.nio.file.Path.getFileSystem:()Ljava/nio/file/FileSystem;
            invokevirtual java.nio.file.FileSystem.provider:()Ljava/nio/file/spi/FileSystemProvider;
         1: .line 781
            invokevirtual java.nio.file.spi.FileSystemProvider.getScheme:()Ljava/lang/String;
            ldc "file"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
         2: .line 780
            ireturn
        end local 1 // java.nio.file.Path path
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/internal/module/ModulePath;
            0    3     1  path  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  

  private static boolean lambda$0(jdk.internal.jmod.JmodFile$Entry);
    descriptor: (Ljdk/internal/jmod/JmodFile$Entry;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.jmod.JmodFile$Entry e
         0: .line 377
            aload 0 /* e */
            invokevirtual jdk.internal.jmod.JmodFile$Entry.section:()Ljdk/internal/jmod/JmodFile$Section;
            getstatic jdk.internal.jmod.JmodFile$Section.CLASSES:Ljdk/internal/jmod/JmodFile$Section;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // jdk.internal.jmod.JmodFile$Entry e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Ljdk/internal/jmod/JmodFile$Entry;

  private java.util.Set lambda$4(jdk.internal.jmod.JmodFile);
    descriptor: (Ljdk/internal/jmod/JmodFile;)Ljava/util/Set;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 395
            aload 0 /* this */
            aload 1
            invokevirtual jdk.internal.module.ModulePath.jmodPackages:(Ljdk/internal/jmod/JmodFile;)Ljava/util/Set;
            areturn
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/module/ModulePath;

  private static boolean lambda$5(java.util.jar.JarEntry);
    descriptor: (Ljava/util/jar/JarEntry;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.jar.JarEntry e
         0: .line 517
            aload 0 /* e */
            invokevirtual java.util.jar.JarEntry.isDirectory:()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.util.jar.JarEntry e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Ljava/util/jar/JarEntry;

  private static boolean lambda$7(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String e
         0: .line 519
            aload 0 /* e */
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            aload 0 /* e */
            ldc "META-INF/services/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ixor
            ireturn
        end local 0 // java.lang.String e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Ljava/lang/String;

  private static boolean lambda$8(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String e
         0: .line 520
            aload 0 /* e */
            ldc "META-INF/services/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // java.lang.String e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Ljava/lang/String;

  private static boolean lambda$13(java.util.jar.JarEntry);
    descriptor: (Ljava/util/jar/JarEntry;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.jar.JarEntry e
         0: .line 617
            aload 0 /* e */
            invokevirtual java.util.jar.JarEntry.isDirectory:()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.util.jar.JarEntry e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Ljava/util/jar/JarEntry;

  private java.util.Set lambda$17(java.util.jar.JarFile);
    descriptor: (Ljava/util/jar/JarFile;)Ljava/util/Set;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 653
            aload 0 /* this */
            aload 1
            invokevirtual jdk.internal.module.ModulePath.jarPackages:(Ljava/util/jar/JarFile;)Ljava/util/Set;
            areturn
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/module/ModulePath;

  private boolean lambda$18(java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/attribute/BasicFileAttributes;)Z
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.internal.module.ModulePath this
        start local 1 // java.nio.file.Path path
        start local 2 // java.nio.file.attribute.BasicFileAttributes attrs
         0: .line 668
            aload 2 /* attrs */
            invokeinterface java.nio.file.attribute.BasicFileAttributes.isRegularFile:()Z
            ifeq 1
            aload 0 /* this */
            aload 1 /* path */
            invokevirtual jdk.internal.module.ModulePath.isHidden:(Ljava/nio/file/Path;)Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 2 // java.nio.file.attribute.BasicFileAttributes attrs
        end local 1 // java.nio.file.Path path
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Ljdk/internal/module/ModulePath;
            0    3     1   path  Ljava/nio/file/Path;
            0    3     2  attrs  Ljava/nio/file/attribute/BasicFileAttributes;

  private static java.nio.file.Path lambda$19(java.nio.file.Path, java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.nio.file.Path path
         0: .line 669
            aload 0
            aload 1 /* path */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            areturn
        end local 1 // java.nio.file.Path path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1  path  Ljava/nio/file/Path;

  private java.util.Set lambda$22(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/util/Set;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.internal.module.ModulePath this
         0: .line 690
            aload 0 /* this */
            aload 1
            invokevirtual jdk.internal.module.ModulePath.explodedPackages:(Ljava/nio/file/Path;)Ljava/util/Set;
            areturn
        end local 0 // jdk.internal.module.ModulePath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/module/ModulePath;
}
SourceFile: "ModulePath.java"
NestMembers:
  jdk.internal.module.ModulePath$Patterns
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 Builder = java.lang.module.ModuleDescriptor$Builder of java.lang.module.ModuleDescriptor
  public final Version = java.lang.module.ModuleDescriptor$Version of java.lang.module.ModuleDescriptor
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public Name = java.util.jar.Attributes$Name of java.util.jar.Attributes
  public Entry = jdk.internal.jmod.JmodFile$Entry of jdk.internal.jmod.JmodFile
  public final Section = jdk.internal.jmod.JmodFile$Section of jdk.internal.jmod.JmodFile
  public final Attributes = jdk.internal.module.ModuleInfo$Attributes of jdk.internal.module.ModuleInfo
  private Patterns = jdk.internal.module.ModulePath$Patterns of jdk.internal.module.ModulePath