public final class java.lang.ModuleLayer
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: java.lang.ModuleLayer
  super_class: java.lang.Object
{
  private static final java.lang.ModuleLayer EMPTY_LAYER;
    descriptor: Ljava/lang/ModuleLayer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.module.Configuration cf;
    descriptor: Ljava/lang/module/Configuration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private volatile java.util.List<java.lang.ModuleLayer> allLayers;
    descriptor: Ljava/util/List;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/List<Ljava/lang/ModuleLayer;>;

  private volatile java.util.Set<java.lang.Module> modules;
    descriptor: Ljava/util/Set;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/Set<Ljava/lang/Module;>;

  private volatile jdk.internal.module.ServicesCatalog servicesCatalog;
    descriptor: Ljdk/internal/module/ServicesCatalog;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final jdk.internal.loader.ClassLoaderValue<java.util.List<java.lang.ModuleLayer>> CLV;
    descriptor: Ljdk/internal/loader/ClassLoaderValue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljdk/internal/loader/ClassLoaderValue<Ljava/util/List<Ljava/lang/ModuleLayer;>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 153
            new java.lang.ModuleLayer
            dup
            invokestatic java.lang.module.Configuration.empty:()Ljava/lang/module/Configuration;
            invokestatic java.util.List.of:()Ljava/util/List;
            aconst_null
            invokespecial java.lang.ModuleLayer.<init>:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)V
         1: .line 152
            putstatic java.lang.ModuleLayer.EMPTY_LAYER:Ljava/lang/ModuleLayer;
         2: .line 978
            new jdk.internal.loader.ClassLoaderValue
            dup
            invokespecial jdk.internal.loader.ClassLoaderValue.<init>:()V
            putstatic java.lang.ModuleLayer.CLV:Ljdk/internal/loader/ClassLoaderValue;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.lang.module.Configuration, java.util.List<java.lang.ModuleLayer>, java.util.function.Function<java.lang.String, java.lang.ClassLoader>);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.module.Configuration cf
        start local 2 // java.util.List parents
        start local 3 // java.util.function.Function clf
         0: .line 167
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 171
            aload 0 /* this */
            aload 1 /* cf */
            putfield java.lang.ModuleLayer.cf:Ljava/lang/module/Configuration;
         2: .line 172
            aload 0 /* this */
            aload 2 /* parents */
            putfield java.lang.ModuleLayer.parents:Ljava/util/List;
         3: .line 175
            aload 2 /* parents */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         4: .line 176
            invokestatic java.util.Map.of:()Ljava/util/Map;
            astore 4 /* map */
        start local 4 // java.util.Map map
         5: .line 177
            goto 7
        end local 4 // java.util.Map map
         6: .line 178
      StackMap locals: java.lang.ModuleLayer java.lang.module.Configuration java.util.List java.util.function.Function
      StackMap stack:
            aload 1 /* cf */
            aload 3 /* clf */
            aload 0 /* this */
            invokestatic java.lang.Module.defineModules:(Ljava/lang/module/Configuration;Ljava/util/function/Function;Ljava/lang/ModuleLayer;)Ljava/util/Map;
            astore 4 /* map */
        start local 4 // java.util.Map map
         7: .line 180
      StackMap locals: java.util.Map
      StackMap stack:
            aload 0 /* this */
            aload 4 /* map */
            putfield java.lang.ModuleLayer.nameToModule:Ljava/util/Map;
         8: .line 181
            return
        end local 4 // java.util.Map map
        end local 3 // java.util.function.Function clf
        end local 2 // java.util.List parents
        end local 1 // java.lang.module.Configuration cf
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Ljava/lang/ModuleLayer;
            0    9     1       cf  Ljava/lang/module/Configuration;
            0    9     2  parents  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            0    9     3      clf  Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;
            5    6     4      map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Module;>;
            7    9     4      map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Module;>;
    Signature: (Ljava/lang/module/Configuration;Ljava/util/List<Ljava/lang/ModuleLayer;>;Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;)V
    MethodParameters:
         Name  Flags
      cf       
      parents  
      clf      

  public java.lang.ModuleLayer defineModulesWithOneLoader(java.lang.module.Configuration, java.lang.ClassLoader);
    descriptor: (Ljava/lang/module/Configuration;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.module.Configuration cf
        start local 2 // java.lang.ClassLoader parentLoader
         0: .line 339
            aload 1 /* cf */
            aload 0 /* this */
            invokestatic java.util.List.of:(Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* parentLoader */
            invokestatic java.lang.ModuleLayer.defineModulesWithOneLoader:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
            invokevirtual java.lang.ModuleLayer$Controller.layer:()Ljava/lang/ModuleLayer;
            areturn
        end local 2 // java.lang.ClassLoader parentLoader
        end local 1 // java.lang.module.Configuration cf
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/lang/ModuleLayer;
            0    1     1            cf  Ljava/lang/module/Configuration;
            0    1     2  parentLoader  Ljava/lang/ClassLoader;
    MethodParameters:
              Name  Flags
      cf            
      parentLoader  

  public java.lang.ModuleLayer defineModulesWithManyLoaders(java.lang.module.Configuration, java.lang.ClassLoader);
    descriptor: (Ljava/lang/module/Configuration;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.module.Configuration cf
        start local 2 // java.lang.ClassLoader parentLoader
         0: .line 381
            aload 1 /* cf */
            aload 0 /* this */
            invokestatic java.util.List.of:(Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* parentLoader */
            invokestatic java.lang.ModuleLayer.defineModulesWithManyLoaders:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
            invokevirtual java.lang.ModuleLayer$Controller.layer:()Ljava/lang/ModuleLayer;
            areturn
        end local 2 // java.lang.ClassLoader parentLoader
        end local 1 // java.lang.module.Configuration cf
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/lang/ModuleLayer;
            0    1     1            cf  Ljava/lang/module/Configuration;
            0    1     2  parentLoader  Ljava/lang/ClassLoader;
    MethodParameters:
              Name  Flags
      cf            
      parentLoader  

  public java.lang.ModuleLayer defineModules(java.lang.module.Configuration, java.util.function.Function<java.lang.String, java.lang.ClassLoader>);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/function/Function;)Ljava/lang/ModuleLayer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.module.Configuration cf
        start local 2 // java.util.function.Function clf
         0: .line 417
            aload 1 /* cf */
            aload 0 /* this */
            invokestatic java.util.List.of:(Ljava/lang/Object;)Ljava/util/List;
            aload 2 /* clf */
            invokestatic java.lang.ModuleLayer.defineModules:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)Ljava/lang/ModuleLayer$Controller;
            invokevirtual java.lang.ModuleLayer$Controller.layer:()Ljava/lang/ModuleLayer;
            areturn
        end local 2 // java.util.function.Function clf
        end local 1 // java.lang.module.Configuration cf
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/ModuleLayer;
            0    1     1    cf  Ljava/lang/module/Configuration;
            0    1     2   clf  Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;
    Signature: (Ljava/lang/module/Configuration;Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;)Ljava/lang/ModuleLayer;
    MethodParameters:
      Name  Flags
      cf    
      clf   

  public static java.lang.ModuleLayer$Controller defineModulesWithOneLoader(java.lang.module.Configuration, java.util.List<java.lang.ModuleLayer>, java.lang.ClassLoader);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // java.lang.module.Configuration cf
        start local 1 // java.util.List parentLayers
        start local 2 // java.lang.ClassLoader parentLoader
         0: .line 492
            new java.util.ArrayList
            dup
            aload 1 /* parentLayers */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* parents */
        start local 3 // java.util.List parents
         1: .line 493
            aload 0 /* cf */
            aload 3 /* parents */
            invokestatic java.lang.ModuleLayer.checkConfiguration:(Ljava/lang/module/Configuration;Ljava/util/List;)V
         2: .line 495
            invokestatic java.lang.ModuleLayer.checkCreateClassLoaderPermission:()V
         3: .line 496
            invokestatic java.lang.ModuleLayer.checkGetClassLoaderPermission:()V
         4: .line 499
            new jdk.internal.loader.Loader
            dup
            aload 0 /* cf */
            invokevirtual java.lang.module.Configuration.modules:()Ljava/util/Set;
            aload 2 /* parentLoader */
            invokespecial jdk.internal.loader.Loader.<init>:(Ljava/util/Collection;Ljava/lang/ClassLoader;)V
            astore 4 /* loader */
        start local 4 // jdk.internal.loader.Loader loader
         5: .line 500
            aload 4 /* loader */
            aload 0 /* cf */
            aload 3 /* parents */
            invokevirtual jdk.internal.loader.Loader.initRemotePackageMap:(Ljava/lang/module/Configuration;Ljava/util/List;)Ljdk/internal/loader/Loader;
            pop
         6: .line 501
            new java.lang.ModuleLayer
            dup
            aload 0 /* cf */
            aload 3 /* parents */
            aload 4 /* loader */
            invokedynamic apply(Ljdk/internal/loader/Loader;)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/lang/ModuleLayer.lambda$0(Ljdk/internal/loader/Loader;Ljava/lang/String;)Ljava/lang/ClassLoader; (6)
                  (Ljava/lang/String;)Ljava/lang/ClassLoader;
            invokespecial java.lang.ModuleLayer.<init>:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)V
            astore 5 /* layer */
        start local 5 // java.lang.ModuleLayer layer
         7: .line 502
            new java.lang.ModuleLayer$Controller
            dup
            aload 5 /* layer */
            invokespecial java.lang.ModuleLayer$Controller.<init>:(Ljava/lang/ModuleLayer;)V
         8: areturn
        end local 5 // java.lang.ModuleLayer layer
        end local 4 // jdk.internal.loader.Loader loader
         9: .line 503
      StackMap locals: java.lang.module.Configuration java.util.List java.lang.ClassLoader java.util.List
      StackMap stack: java.lang.RuntimeException
            astore 4 /* e */
        start local 4 // java.lang.RuntimeException e
        10: .line 504
            new java.lang.LayerInstantiationException
            dup
            aload 4 /* e */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.LayerInstantiationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.RuntimeException e
        end local 3 // java.util.List parents
        end local 2 // java.lang.ClassLoader parentLoader
        end local 1 // java.util.List parentLayers
        end local 0 // java.lang.module.Configuration cf
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0            cf  Ljava/lang/module/Configuration;
            0   11     1  parentLayers  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            0   11     2  parentLoader  Ljava/lang/ClassLoader;
            1   11     3       parents  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            5    9     4        loader  Ljdk/internal/loader/Loader;
            7    9     5         layer  Ljava/lang/ModuleLayer;
           10   11     4             e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           4     8       9  Class java.lang.IllegalArgumentException
           4     8       9  Class java.lang.IllegalStateException
    Signature: (Ljava/lang/module/Configuration;Ljava/util/List<Ljava/lang/ModuleLayer;>;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
    MethodParameters:
              Name  Flags
      cf            
      parentLayers  
      parentLoader  

  public static java.lang.ModuleLayer$Controller defineModulesWithManyLoaders(java.lang.module.Configuration, java.util.List<java.lang.ModuleLayer>, java.lang.ClassLoader);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // java.lang.module.Configuration cf
        start local 1 // java.util.List parentLayers
        start local 2 // java.lang.ClassLoader parentLoader
         0: .line 568
            new java.util.ArrayList
            dup
            aload 1 /* parentLayers */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* parents */
        start local 3 // java.util.List parents
         1: .line 569
            aload 0 /* cf */
            aload 3 /* parents */
            invokestatic java.lang.ModuleLayer.checkConfiguration:(Ljava/lang/module/Configuration;Ljava/util/List;)V
         2: .line 571
            invokestatic java.lang.ModuleLayer.checkCreateClassLoaderPermission:()V
         3: .line 572
            invokestatic java.lang.ModuleLayer.checkGetClassLoaderPermission:()V
         4: .line 574
            new jdk.internal.loader.LoaderPool
            dup
            aload 0 /* cf */
            aload 3 /* parents */
            aload 2 /* parentLoader */
            invokespecial jdk.internal.loader.LoaderPool.<init>:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/lang/ClassLoader;)V
            astore 4 /* pool */
        start local 4 // jdk.internal.loader.LoaderPool pool
         5: .line 576
            new java.lang.ModuleLayer
            dup
            aload 0 /* cf */
            aload 3 /* parents */
            aload 4 /* pool */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic apply(Ljdk/internal/loader/LoaderPool;)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/loader/LoaderPool.loaderFor(Ljava/lang/String;)Ljdk/internal/loader/Loader; (5)
                  (Ljava/lang/String;)Ljava/lang/ClassLoader;
            invokespecial java.lang.ModuleLayer.<init>:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)V
            astore 5 /* layer */
        start local 5 // java.lang.ModuleLayer layer
         6: .line 577
            new java.lang.ModuleLayer$Controller
            dup
            aload 5 /* layer */
            invokespecial java.lang.ModuleLayer$Controller.<init>:(Ljava/lang/ModuleLayer;)V
         7: areturn
        end local 5 // java.lang.ModuleLayer layer
         8: .line 578
      StackMap locals: java.lang.module.Configuration java.util.List java.lang.ClassLoader java.util.List jdk.internal.loader.LoaderPool
      StackMap stack: java.lang.RuntimeException
            astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
         9: .line 579
            new java.lang.LayerInstantiationException
            dup
            aload 5 /* e */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.LayerInstantiationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.RuntimeException e
        end local 4 // jdk.internal.loader.LoaderPool pool
        end local 3 // java.util.List parents
        end local 2 // java.lang.ClassLoader parentLoader
        end local 1 // java.util.List parentLayers
        end local 0 // java.lang.module.Configuration cf
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0            cf  Ljava/lang/module/Configuration;
            0   10     1  parentLayers  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            0   10     2  parentLoader  Ljava/lang/ClassLoader;
            1   10     3       parents  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            5   10     4          pool  Ljdk/internal/loader/LoaderPool;
            6    8     5         layer  Ljava/lang/ModuleLayer;
            9   10     5             e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           5     7       8  Class java.lang.IllegalArgumentException
           5     7       8  Class java.lang.IllegalStateException
    Signature: (Ljava/lang/module/Configuration;Ljava/util/List<Ljava/lang/ModuleLayer;>;Ljava/lang/ClassLoader;)Ljava/lang/ModuleLayer$Controller;
    MethodParameters:
              Name  Flags
      cf            
      parentLayers  
      parentLoader  

  public static java.lang.ModuleLayer$Controller defineModules(java.lang.module.Configuration, java.util.List<java.lang.ModuleLayer>, java.util.function.Function<java.lang.String, java.lang.ClassLoader>);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)Ljava/lang/ModuleLayer$Controller;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.lang.module.Configuration cf
        start local 1 // java.util.List parentLayers
        start local 2 // java.util.function.Function clf
         0: .line 652
            new java.util.ArrayList
            dup
            aload 1 /* parentLayers */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* parents */
        start local 3 // java.util.List parents
         1: .line 653
            aload 0 /* cf */
            aload 3 /* parents */
            invokestatic java.lang.ModuleLayer.checkConfiguration:(Ljava/lang/module/Configuration;Ljava/util/List;)V
         2: .line 654
            aload 2 /* clf */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 656
            invokestatic java.lang.ModuleLayer.checkGetClassLoaderPermission:()V
         4: .line 659
            invokestatic java.lang.ModuleLayer.boot:()Ljava/lang/ModuleLayer;
            ifnull 6
         5: .line 660
            aload 0 /* cf */
            aload 2 /* clf */
            invokestatic java.lang.ModuleLayer.checkForDuplicatePkgs:(Ljava/lang/module/Configuration;Ljava/util/function/Function;)V
         6: .line 664
      StackMap locals: java.util.List
      StackMap stack:
            new java.lang.ModuleLayer
            dup
            aload 0 /* cf */
            aload 3 /* parents */
            aload 2 /* clf */
            invokespecial java.lang.ModuleLayer.<init>:(Ljava/lang/module/Configuration;Ljava/util/List;Ljava/util/function/Function;)V
            astore 4 /* layer */
        start local 4 // java.lang.ModuleLayer layer
         7: .line 665
            new java.lang.ModuleLayer$Controller
            dup
            aload 4 /* layer */
            invokespecial java.lang.ModuleLayer$Controller.<init>:(Ljava/lang/ModuleLayer;)V
         8: areturn
        end local 4 // java.lang.ModuleLayer layer
         9: .line 666
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 4 /* e */
        start local 4 // java.lang.RuntimeException e
        10: .line 667
            new java.lang.LayerInstantiationException
            dup
            aload 4 /* e */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.LayerInstantiationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.RuntimeException e
        end local 3 // java.util.List parents
        end local 2 // java.util.function.Function clf
        end local 1 // java.util.List parentLayers
        end local 0 // java.lang.module.Configuration cf
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0            cf  Ljava/lang/module/Configuration;
            0   11     1  parentLayers  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            0   11     2           clf  Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;
            1   11     3       parents  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            7    9     4         layer  Ljava/lang/ModuleLayer;
           10   11     4             e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           6     8       9  Class java.lang.IllegalArgumentException
           6     8       9  Class java.lang.IllegalStateException
    Signature: (Ljava/lang/module/Configuration;Ljava/util/List<Ljava/lang/ModuleLayer;>;Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;)Ljava/lang/ModuleLayer$Controller;
    MethodParameters:
              Name  Flags
      cf            
      parentLayers  
      clf           

  private static void checkConfiguration(java.lang.module.Configuration, java.util.List<java.lang.ModuleLayer>);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.lang.module.Configuration cf
        start local 1 // java.util.List parentLayers
         0: .line 679
            aload 0 /* cf */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 681
            aload 0 /* cf */
            invokevirtual java.lang.module.Configuration.parents:()Ljava/util/List;
            astore 2 /* parentConfigurations */
        start local 2 // java.util.List parentConfigurations
         2: .line 682
            aload 1 /* parentLayers */
            invokeinterface java.util.List.size:()I
            aload 2 /* parentConfigurations */
            invokeinterface java.util.List.size:()I
            if_icmpeq 4
         3: .line 683
            new java.lang.IllegalArgumentException
            dup
            ldc "wrong number of parents"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 685
      StackMap locals: java.util.List
      StackMap stack:
            iconst_0
            istore 3 /* index */
        start local 3 // int index
         5: .line 686
            aload 1 /* parentLayers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: java.lang.module.Configuration java.util.List java.util.List int top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ModuleLayer
            astore 4 /* parent */
        start local 4 // java.lang.ModuleLayer parent
         7: .line 687
            aload 4 /* parent */
            invokevirtual java.lang.ModuleLayer.configuration:()Ljava/lang/module/Configuration;
            aload 2 /* parentConfigurations */
            iload 3 /* index */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            if_acmpeq 11
         8: .line 688
            new java.lang.IllegalArgumentException
            dup
         9: .line 689
            ldc "Parent of configuration != configuration of this Layer"
        10: .line 688
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 691
      StackMap locals: java.lang.module.Configuration java.util.List java.util.List int java.lang.ModuleLayer java.util.Iterator
      StackMap stack:
            iinc 3 /* index */ 1
        end local 4 // java.lang.ModuleLayer parent
        12: .line 686
      StackMap locals: java.lang.module.Configuration java.util.List java.util.List int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        13: .line 693
            return
        end local 3 // int index
        end local 2 // java.util.List parentConfigurations
        end local 1 // java.util.List parentLayers
        end local 0 // java.lang.module.Configuration cf
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0                    cf  Ljava/lang/module/Configuration;
            0   14     1          parentLayers  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            2   14     2  parentConfigurations  Ljava/util/List<Ljava/lang/module/Configuration;>;
            5   14     3                 index  I
            7   12     4                parent  Ljava/lang/ModuleLayer;
    Signature: (Ljava/lang/module/Configuration;Ljava/util/List<Ljava/lang/ModuleLayer;>;)V
    MethodParameters:
              Name  Flags
      cf            
      parentLayers  

  private static void checkCreateClassLoaderPermission();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 696
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 697
            aload 0 /* sm */
            ifnull 3
         2: .line 698
            aload 0 /* sm */
            getstatic sun.security.util.SecurityConstants.CREATE_CLASSLOADER_PERMISSION:Ljava/lang/RuntimePermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 699
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            return
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0    sm  Ljava/lang/SecurityManager;

  private static void checkGetClassLoaderPermission();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 702
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 703
            aload 0 /* sm */
            ifnull 3
         2: .line 704
            aload 0 /* sm */
            getstatic sun.security.util.SecurityConstants.GET_CLASSLOADER_PERMISSION:Ljava/lang/RuntimePermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 705
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            return
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0    sm  Ljava/lang/SecurityManager;

  private static void checkForDuplicatePkgs(java.lang.module.Configuration, java.util.function.Function<java.lang.String, java.lang.ClassLoader>);
    descriptor: (Ljava/lang/module/Configuration;Ljava/util/function/Function;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // java.lang.module.Configuration cf
        start local 1 // java.util.function.Function clf
         0: .line 718
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* loaderToPackages */
        start local 2 // java.util.Map loaderToPackages
         1: .line 719
            aload 0 /* cf */
            invokevirtual java.lang.module.Configuration.modules:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: java.lang.module.Configuration java.util.function.Function java.util.Map top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.module.ResolvedModule
            astore 3 /* resolvedModule */
        start local 3 // java.lang.module.ResolvedModule resolvedModule
         3: .line 720
            aload 3 /* resolvedModule */
            invokevirtual java.lang.module.ResolvedModule.reference:()Ljava/lang/module/ModuleReference;
            invokevirtual java.lang.module.ModuleReference.descriptor:()Ljava/lang/module/ModuleDescriptor;
            astore 5 /* descriptor */
        start local 5 // java.lang.module.ModuleDescriptor descriptor
         4: .line 721
            aload 1 /* clf */
            aload 5 /* descriptor */
            invokevirtual java.lang.module.ModuleDescriptor.name:()Ljava/lang/String;
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ClassLoader
            astore 6 /* loader */
        start local 6 // java.lang.ClassLoader loader
         5: .line 724
            aload 2 /* loaderToPackages */
            aload 6 /* loader */
            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/lang/ModuleLayer.lambda$2(Ljava/lang/ClassLoader;)Ljava/util/Set; (6)
                  (Ljava/lang/ClassLoader;)Ljava/util/Set;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Set
         6: .line 723
            astore 7 /* loaderPackages */
        start local 7 // java.util.Set loaderPackages
         7: .line 726
            aload 5 /* descriptor */
            invokevirtual java.lang.module.ModuleDescriptor.packages:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 14
      StackMap locals: java.lang.module.Configuration java.util.function.Function java.util.Map java.lang.module.ResolvedModule java.util.Iterator java.lang.module.ModuleDescriptor java.lang.ClassLoader java.util.Set top java.util.Iterator
      StackMap stack:
         8: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* pkg */
        start local 8 // java.lang.String pkg
         9: .line 727
            aload 7 /* loaderPackages */
            aload 8 /* pkg */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            istore 10 /* added */
        start local 10 // boolean added
        10: .line 728
            iload 10 /* added */
            ifne 14
        11: .line 729
            ldc "More than one module with package %s mapped to the same class loader"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        12: .line 730
            aload 8 /* pkg */
            aastore
        13: .line 729
            invokestatic java.lang.ModuleLayer.fail:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/LayerInstantiationException;
            athrow
        end local 10 // boolean added
        end local 8 // java.lang.String pkg
        14: .line 726
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 7 // java.util.Set loaderPackages
        end local 6 // java.lang.ClassLoader loader
        end local 5 // java.lang.module.ModuleDescriptor descriptor
        end local 3 // java.lang.module.ResolvedModule resolvedModule
        15: .line 719
      StackMap locals: java.lang.module.Configuration java.util.function.Function java.util.Map top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        16: .line 734
            return
        end local 2 // java.util.Map loaderToPackages
        end local 1 // java.util.function.Function clf
        end local 0 // java.lang.module.Configuration cf
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0                cf  Ljava/lang/module/Configuration;
            0   17     1               clf  Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;
            1   17     2  loaderToPackages  Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Set<Ljava/lang/String;>;>;
            3   15     3    resolvedModule  Ljava/lang/module/ResolvedModule;
            4   15     5        descriptor  Ljava/lang/module/ModuleDescriptor;
            5   15     6            loader  Ljava/lang/ClassLoader;
            7   15     7    loaderPackages  Ljava/util/Set<Ljava/lang/String;>;
            9   14     8               pkg  Ljava/lang/String;
           10   14    10             added  Z
    Signature: (Ljava/lang/module/Configuration;Ljava/util/function/Function<Ljava/lang/String;Ljava/lang/ClassLoader;>;)V
    MethodParameters:
      Name  Flags
      cf    
      clf   

  private static java.lang.LayerInstantiationException fail(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/LayerInstantiationException;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String fmt
        start local 1 // java.lang.Object[] args
         0: .line 741
            aload 0 /* fmt */
            aload 1 /* args */
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* msg */
        start local 2 // java.lang.String msg
         1: .line 742
            new java.lang.LayerInstantiationException
            dup
            aload 2 /* msg */
            invokespecial java.lang.LayerInstantiationException.<init>:(Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String msg
        end local 1 // java.lang.Object[] args
        end local 0 // java.lang.String fmt
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   fmt  Ljava/lang/String;
            0    2     1  args  [Ljava/lang/Object;
            1    2     2   msg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      fmt   
      args  

  public java.lang.module.Configuration configuration();
    descriptor: ()Ljava/lang/module/Configuration;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 752
            aload 0 /* this */
            getfield java.lang.ModuleLayer.cf:Ljava/lang/module/Configuration;
            areturn
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/ModuleLayer;

  public java.util.List<java.lang.ModuleLayer> parents();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 764
            aload 0 /* this */
            getfield java.lang.ModuleLayer.parents:Ljava/util/List;
            areturn
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/ModuleLayer;
    Signature: ()Ljava/util/List<Ljava/lang/ModuleLayer;>;

  java.util.stream.Stream<java.lang.ModuleLayer> layers();
    descriptor: ()Ljava/util/stream/Stream;
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 776
            aload 0 /* this */
            getfield java.lang.ModuleLayer.allLayers:Ljava/util/List;
            astore 1 /* allLayers */
        start local 1 // java.util.List allLayers
         1: .line 777
            aload 1 /* allLayers */
            ifnull 3
         2: .line 778
            aload 1 /* allLayers */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            areturn
         3: .line 780
      StackMap locals: java.util.List
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* allLayers */
         4: .line 781
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* visited */
        start local 2 // java.util.Set visited
         5: .line 782
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            astore 3 /* stack */
        start local 3 // java.util.Deque stack
         6: .line 783
            aload 2 /* visited */
            aload 0 /* this */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 784
            aload 3 /* stack */
            aload 0 /* this */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
         8: .line 786
            goto 19
         9: .line 787
      StackMap locals: java.util.Set java.util.Deque
      StackMap stack:
            aload 3 /* stack */
            invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
            checkcast java.lang.ModuleLayer
            astore 4 /* layer */
        start local 4 // java.lang.ModuleLayer layer
        10: .line 788
            aload 1 /* allLayers */
            aload 4 /* layer */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 791
            aload 4 /* layer */
            getfield java.lang.ModuleLayer.parents:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
        12: goto 18
        13: .line 792
      StackMap locals: java.lang.ModuleLayer int
      StackMap stack:
            aload 4 /* layer */
            getfield java.lang.ModuleLayer.parents:Ljava/util/List;
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.ModuleLayer
            astore 6 /* parent */
        start local 6 // java.lang.ModuleLayer parent
        14: .line 793
            aload 2 /* visited */
            aload 6 /* parent */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 17
        15: .line 794
            aload 2 /* visited */
            aload 6 /* parent */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        16: .line 795
            aload 3 /* stack */
            aload 6 /* parent */
            invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
        end local 6 // java.lang.ModuleLayer parent
        17: .line 791
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        18: iload 5 /* i */
            ifge 13
        end local 5 // int i
        end local 4 // java.lang.ModuleLayer layer
        19: .line 786
      StackMap locals:
      StackMap stack:
            aload 3 /* stack */
            invokeinterface java.util.Deque.isEmpty:()Z
            ifeq 9
        20: .line 800
            aload 0 /* this */
            aload 1 /* allLayers */
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            dup
            astore 1 /* allLayers */
            putfield java.lang.ModuleLayer.allLayers:Ljava/util/List;
        21: .line 801
            aload 1 /* allLayers */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            areturn
        end local 3 // java.util.Deque stack
        end local 2 // java.util.Set visited
        end local 1 // java.util.List allLayers
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   22     0       this  Ljava/lang/ModuleLayer;
            1   22     1  allLayers  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            5   22     2    visited  Ljava/util/Set<Ljava/lang/ModuleLayer;>;
            6   22     3      stack  Ljava/util/Deque<Ljava/lang/ModuleLayer;>;
           10   19     4      layer  Ljava/lang/ModuleLayer;
           12   19     5          i  I
           14   17     6     parent  Ljava/lang/ModuleLayer;
    Signature: ()Ljava/util/stream/Stream<Ljava/lang/ModuleLayer;>;

  public java.util.Set<java.lang.Module> modules();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 812
            aload 0 /* this */
            getfield java.lang.ModuleLayer.modules:Ljava/util/Set;
            astore 1 /* modules */
        start local 1 // java.util.Set modules
         1: .line 813
            aload 1 /* modules */
            ifnonnull 3
         2: .line 814
            aload 0 /* this */
            aload 0 /* this */
            getfield java.lang.ModuleLayer.nameToModule:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokestatic java.util.Set.copyOf:(Ljava/util/Collection;)Ljava/util/Set;
            dup
            astore 1 /* modules */
            putfield java.lang.ModuleLayer.modules:Ljava/util/Set;
         3: .line 816
      StackMap locals: java.util.Set
      StackMap stack:
            aload 1 /* modules */
            areturn
        end local 1 // java.util.Set modules
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Ljava/lang/ModuleLayer;
            1    4     1  modules  Ljava/util/Set<Ljava/lang/Module;>;
    Signature: ()Ljava/util/Set<Ljava/lang/Module;>;

  public java.util.Optional<java.lang.Module> findModule(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.String name
         0: .line 838
            aload 1 /* name */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 839
            aload 0 /* this */
            getstatic java.lang.ModuleLayer.EMPTY_LAYER:Ljava/lang/ModuleLayer;
            if_acmpne 3
         2: .line 840
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
         3: .line 841
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.lang.ModuleLayer.nameToModule:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Module
            astore 2 /* m */
        start local 2 // java.lang.Module m
         4: .line 842
            aload 2 /* m */
            ifnull 6
         5: .line 843
            aload 2 /* m */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            areturn
         6: .line 845
      StackMap locals: java.lang.Module
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.ModuleLayer.layers:()Ljava/util/stream/Stream;
         7: .line 846
            lconst_1
            invokeinterface java.util.stream.Stream.skip:(J)Ljava/util/stream/Stream;
         8: .line 847
            aload 1 /* name */
            invokedynamic apply(Ljava/lang/String;)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/lang/ModuleLayer.lambda$3(Ljava/lang/String;Ljava/lang/ModuleLayer;)Ljava/lang/Module; (6)
                  (Ljava/lang/ModuleLayer;)Ljava/lang/Module;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         9: .line 848
            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
                  java/util/Objects.nonNull(Ljava/lang/Object;)Z (6)
                  (Ljava/lang/Module;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
        10: .line 849
            invokeinterface java.util.stream.Stream.findAny:()Ljava/util/Optional;
        11: .line 845
            areturn
        end local 2 // java.lang.Module m
        end local 1 // java.lang.String name
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Ljava/lang/ModuleLayer;
            0   12     1  name  Ljava/lang/String;
            4   12     2     m  Ljava/lang/Module;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/lang/Module;>;
    MethodParameters:
      Name  Flags
      name  

  public java.lang.ClassLoader findLoader(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/ClassLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.String name
         0: .line 878
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual java.lang.ModuleLayer.findModule:(Ljava/lang/String;)Ljava/util/Optional;
            astore 2 /* om */
        start local 2 // java.util.Optional om
         1: .line 881
            aload 2 /* om */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 3
         2: .line 882
            aload 2 /* om */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.Module
            invokevirtual java.lang.Module.getClassLoader:()Ljava/lang/ClassLoader;
            areturn
         3: .line 884
      StackMap locals: java.util.Optional
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Module "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 885
            ldc " not known to this layer"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 884
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.util.Optional om
        end local 1 // java.lang.String name
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/lang/ModuleLayer;
            0    6     1  name  Ljava/lang/String;
            1    6     2    om  Ljava/util/Optional<Ljava/lang/Module;>;
    MethodParameters:
      Name  Flags
      name  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 896
            aload 0 /* this */
            invokevirtual java.lang.ModuleLayer.modules:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         1: .line 897
            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/lang/Module.getName()Ljava/lang/String; (5)
                  (Ljava/lang/Module;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         2: .line 898
            ldc ", "
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
         3: .line 896
            areturn
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/lang/ModuleLayer;

  public static java.lang.ModuleLayer empty();
    descriptor: ()Ljava/lang/ModuleLayer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 908
            getstatic java.lang.ModuleLayer.EMPTY_LAYER:Ljava/lang/ModuleLayer;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.ModuleLayer boot();
    descriptor: ()Ljava/lang/ModuleLayer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 922
            getstatic java.lang.System.bootLayer:Ljava/lang/ModuleLayer;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  jdk.internal.module.ServicesCatalog getServicesCatalog();
    descriptor: ()Ljdk/internal/module/ServicesCatalog;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.ModuleLayer this
         0: .line 930
            aload 0 /* this */
            getfield java.lang.ModuleLayer.servicesCatalog:Ljdk/internal/module/ServicesCatalog;
            astore 1 /* servicesCatalog */
        start local 1 // jdk.internal.module.ServicesCatalog servicesCatalog
         1: .line 931
            aload 1 /* servicesCatalog */
            ifnull 3
         2: .line 932
            aload 1 /* servicesCatalog */
            areturn
         3: .line 934
      StackMap locals: jdk.internal.module.ServicesCatalog
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         4: .line 935
            aload 0 /* this */
            getfield java.lang.ModuleLayer.servicesCatalog:Ljdk/internal/module/ServicesCatalog;
            astore 1 /* servicesCatalog */
         5: .line 936
            aload 1 /* servicesCatalog */
            ifnonnull 9
         6: .line 937
            invokestatic jdk.internal.module.ServicesCatalog.create:()Ljdk/internal/module/ServicesCatalog;
            astore 1 /* servicesCatalog */
         7: .line 938
            aload 0 /* this */
            getfield java.lang.ModuleLayer.nameToModule:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            aload 1 /* servicesCatalog */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Ljdk/internal/module/ServicesCatalog;)Ljava/util/function/Consumer;
              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;)V
                  jdk/internal/module/ServicesCatalog.register(Ljava/lang/Module;)V (5)
                  (Ljava/lang/Module;)V
            invokeinterface java.util.Collection.forEach:(Ljava/util/function/Consumer;)V
         8: .line 939
            aload 0 /* this */
            aload 1 /* servicesCatalog */
            putfield java.lang.ModuleLayer.servicesCatalog:Ljdk/internal/module/ServicesCatalog;
         9: .line 934
      StackMap locals: java.lang.ModuleLayer
      StackMap stack:
            aload 2
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 2
            monitorexit
        12: athrow
        13: .line 943
      StackMap locals:
      StackMap stack:
            aload 1 /* servicesCatalog */
            areturn
        end local 1 // jdk.internal.module.ServicesCatalog servicesCatalog
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   14     0             this  Ljava/lang/ModuleLayer;
            1   14     1  servicesCatalog  Ljdk/internal/module/ServicesCatalog;
      Exception table:
        from    to  target  type
           4    10      11  any
          11    12      11  any

  void bindToLoader(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.ModuleLayer this
        start local 1 // java.lang.ClassLoader loader
         0: .line 955
            getstatic java.lang.ModuleLayer.CLV:Ljdk/internal/loader/ClassLoaderValue;
            aload 1 /* loader */
            invokevirtual jdk.internal.loader.ClassLoaderValue.get:(Ljava/lang/ClassLoader;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* list */
        start local 2 // java.util.List list
         1: .line 956
            aload 2 /* list */
            ifnonnull 5
         2: .line 957
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            astore 2 /* list */
         3: .line 958
            getstatic java.lang.ModuleLayer.CLV:Ljdk/internal/loader/ClassLoaderValue;
            aload 1 /* loader */
            aload 2 /* list */
            invokevirtual jdk.internal.loader.ClassLoaderValue.putIfAbsent:(Ljava/lang/ClassLoader;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* previous */
        start local 3 // java.util.List previous
         4: .line 959
            aload 3 /* previous */
            ifnull 5
            aload 3 /* previous */
            astore 2 /* list */
        end local 3 // java.util.List previous
         5: .line 961
      StackMap locals: java.util.List
      StackMap stack:
            aload 2 /* list */
            aload 0 /* this */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 962
            return
        end local 2 // java.util.List list
        end local 1 // java.lang.ClassLoader loader
        end local 0 // java.lang.ModuleLayer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Ljava/lang/ModuleLayer;
            0    7     1    loader  Ljava/lang/ClassLoader;
            1    7     2      list  Ljava/util/List<Ljava/lang/ModuleLayer;>;
            4    5     3  previous  Ljava/util/List<Ljava/lang/ModuleLayer;>;
    MethodParameters:
        Name  Flags
      loader  

  static java.util.stream.Stream<java.lang.ModuleLayer> layers(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Ljava/util/stream/Stream;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.ClassLoader loader
         0: .line 969
            getstatic java.lang.ModuleLayer.CLV:Ljdk/internal/loader/ClassLoaderValue;
            aload 0 /* loader */
            invokevirtual jdk.internal.loader.ClassLoaderValue.get:(Ljava/lang/ClassLoader;)Ljava/lang/Object;
            checkcast java.util.List
            astore 1 /* list */
        start local 1 // java.util.List list
         1: .line 970
            aload 1 /* list */
            ifnull 3
         2: .line 971
            aload 1 /* list */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            areturn
         3: .line 973
      StackMap locals: java.util.List
      StackMap stack:
            invokestatic java.util.stream.Stream.empty:()Ljava/util/stream/Stream;
            areturn
        end local 1 // java.util.List list
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  loader  Ljava/lang/ClassLoader;
            1    4     1    list  Ljava/util/List<Ljava/lang/ModuleLayer;>;
    Signature: (Ljava/lang/ClassLoader;)Ljava/util/stream/Stream<Ljava/lang/ModuleLayer;>;
    MethodParameters:
        Name  Flags
      loader  

  private static java.lang.ClassLoader lambda$0(jdk.internal.loader.Loader, java.lang.String);
    descriptor: (Ljdk/internal/loader/Loader;Ljava/lang/String;)Ljava/lang/ClassLoader;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 1 // java.lang.String mn
         0: .line 501
            aload 0
            areturn
        end local 1 // java.lang.String mn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    mn  Ljava/lang/String;

  private static java.util.Set lambda$2(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Ljava/util/Set;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader k
         0: .line 724
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            areturn
        end local 0 // java.lang.ClassLoader k
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     k  Ljava/lang/ClassLoader;

  private static java.lang.Module lambda$3(java.lang.String, java.lang.ModuleLayer);
    descriptor: (Ljava/lang/String;Ljava/lang/ModuleLayer;)Ljava/lang/Module;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.ModuleLayer l
         0: .line 847
            aload 1 /* l */
            getfield java.lang.ModuleLayer.nameToModule:Ljava/util/Map;
            aload 0
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Module
            areturn
        end local 1 // java.lang.ModuleLayer l
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     l  Ljava/lang/ModuleLayer;
}
SourceFile: "ModuleLayer.java"
NestMembers:
  java.lang.ModuleLayer$Controller
InnerClasses:
  public final Controller = java.lang.ModuleLayer$Controller of java.lang.ModuleLayer
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles