public interface java.lang.module.ModuleFinder
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: java.lang.module.ModuleFinder
  super_class: java.lang.Object
{
  public abstract java.util.Optional<java.lang.module.ModuleReference> find(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/module/ModuleReference;>;
    MethodParameters:
      Name  Flags
      name  

  public abstract java.util.Set<java.lang.module.ModuleReference> findAll();
    descriptor: ()Ljava/util/Set;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/Set<Ljava/lang/module/ModuleReference;>;

  public static java.lang.module.ModuleFinder ofSystem();
    descriptor: ()Ljava/lang/module/ModuleFinder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 153
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 154
            aload 0 /* sm */
            ifnull 5
         2: .line 155
            aload 0 /* sm */
            new java.lang.RuntimePermission
            dup
            ldc "accessSystemModules"
            invokespecial java.lang.RuntimePermission.<init>:(Ljava/lang/String;)V
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 156
            invokedynamic run()Ljava/security/PrivilegedAction;
              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/SystemModuleFinders.ofSystem()Ljava/lang/module/ModuleFinder; (6)
                  ()Ljava/lang/module/ModuleFinder;
            astore 1 /* pa */
        start local 1 // java.security.PrivilegedAction pa
         4: .line 157
            aload 1 /* pa */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.module.ModuleFinder
            areturn
        end local 1 // java.security.PrivilegedAction pa
         5: .line 159
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            invokestatic jdk.internal.module.SystemModuleFinders.ofSystem:()Ljava/lang/module/ModuleFinder;
            areturn
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    6     0    sm  Ljava/lang/SecurityManager;
            4    5     1    pa  Ljava/security/PrivilegedAction<Ljava/lang/module/ModuleFinder;>;

  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 299
            aload 0 /* entries */
            arraylength
            ifne 2
         1: .line 300
            new java.lang.module.ModuleFinder$1
            dup
            invokespecial java.lang.module.ModuleFinder$1.<init>:()V
            areturn
         2: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* entries */
            invokestatic jdk.internal.module.ModulePath.of:([Ljava/nio/file/Path;)Ljava/lang/module/ModuleFinder;
            areturn
        end local 0 // java.nio.file.Path[] entries
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  entries  [Ljava/nio/file/Path;
    MethodParameters:
         Name  Flags
      entries  

  public static java.lang.module.ModuleFinder compose(java.lang.module.ModuleFinder[]);
    descriptor: ([Ljava/lang/module/ModuleFinder;)Ljava/lang/module/ModuleFinder;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.module.ModuleFinder[] finders
         0: .line 341
            aload 0 /* finders */
            invokestatic java.util.List.of:([Ljava/lang/Object;)Ljava/util/List;
            astore 1 /* finderList */
        start local 1 // java.util.List finderList
         1: .line 343
            new java.lang.module.ModuleFinder$2
            dup
            aload 1 /* finderList */
            invokespecial java.lang.module.ModuleFinder$2.<init>:(Ljava/util/List;)V
            areturn
        end local 1 // java.util.List finderList
        end local 0 // java.lang.module.ModuleFinder[] finders
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0     finders  [Ljava/lang/module/ModuleFinder;
            1    2     1  finderList  Ljava/util/List<Ljava/lang/module/ModuleFinder;>;
    MethodParameters:
         Name  Flags
      finders  
}
SourceFile: "ModuleFinder.java"
NestMembers:
  java.lang.module.ModuleFinder$1  java.lang.module.ModuleFinder$2
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  java.lang.module.ModuleFinder$1
  java.lang.module.ModuleFinder$2