public class jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest
  super_class: java.lang.Object
{
  private java.lang.ClassLoader classLoader;
    descriptor: Ljava/lang/ClassLoader;
    flags: (0x0002) ACC_PRIVATE

  private jdk.tools.jaotc.collect.module.ModuleSourceProvider target;
    descriptor: Ljdk/tools/jaotc/collect/module/ModuleSourceProvider;
    flags: (0x0002) ACC_PRIVATE

  private jdk.tools.jaotc.collect.FileSupport fileSupport;
    descriptor: Ljdk/tools/jaotc/collect/FileSupport;
    flags: (0x0002) ACC_PRIVATE

  private java.util.function.BiFunction<java.nio.file.Path, java.nio.file.Path, java.nio.file.Path> getSubDirectory;
    descriptor: Ljava/util/function/BiFunction;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/function/BiFunction<Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/nio/file/Path;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 59
            aload 0 /* this */
            aconst_null
            putfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.getSubDirectory:Ljava/util/function/BiFunction;
         2: .line 55
            return
        end local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/tools/jaotc/test/collect/module/ModuleSourceProviderTest;

  public void setUp();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
         0: .line 63
            aload 0 /* this */
            new jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$FakeClassLoader
            dup
            invokespecial jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$FakeClassLoader.<init>:()V
            putfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.classLoader:Ljava/lang/ClassLoader;
         1: .line 64
            aload 0 /* this */
            new jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$1
            dup
            aload 0 /* this */
            invokespecial jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$1.<init>:(Ljdk/tools/jaotc/test/collect/module/ModuleSourceProviderTest;)V
            putfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.fileSupport:Ljdk/tools/jaotc/collect/FileSupport;
         2: .line 79
            aload 0 /* this */
            new jdk.tools.jaotc.collect.module.ModuleSourceProvider
            dup
            invokestatic java.nio.file.FileSystems.getDefault:()Ljava/nio/file/FileSystem;
            aload 0 /* this */
            getfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.classLoader:Ljava/lang/ClassLoader;
            aload 0 /* this */
            getfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.fileSupport:Ljdk/tools/jaotc/collect/FileSupport;
            invokespecial jdk.tools.jaotc.collect.module.ModuleSourceProvider.<init>:(Ljava/nio/file/FileSystem;Ljava/lang/ClassLoader;Ljdk/tools/jaotc/collect/FileSupport;)V
            putfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.target:Ljdk/tools/jaotc/collect/module/ModuleSourceProvider;
         3: .line 80
            return
        end local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/tools/jaotc/test/collect/module/ModuleSourceProviderTest;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void itShouldUseFileSupport();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
         0: .line 84
            aload 0 /* this */
            invokedynamic apply()Ljava/util/function/BiFunction;
              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;)Ljava/lang/Object;
                  jdk/tools/jaotc/test/collect/module/ModuleSourceProviderTest.lambda$0(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path; (6)
                  (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path;
            putfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.getSubDirectory:Ljava/util/function/BiFunction;
         1: .line 91
            aload 0 /* this */
            getfield jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest.target:Ljdk/tools/jaotc/collect/module/ModuleSourceProvider;
            ldc "test.module"
            aconst_null
            invokevirtual jdk.tools.jaotc.collect.module.ModuleSourceProvider.findSource:(Ljava/lang/String;Ljdk/tools/jaotc/collect/SearchPath;)Ljdk/tools/jaotc/collect/ClassSource;
            checkcast jdk.tools.jaotc.collect.module.ModuleSource
            astore 1 /* source */
        start local 1 // jdk.tools.jaotc.collect.module.ModuleSource source
         2: .line 92
            ldc "modules/test.module"
            invokestatic jdk.tools.jaotc.test.collect.Utils.mkpath:(Ljava/lang/String;)Ljava/lang/String;
            aload 1 /* source */
            invokevirtual jdk.tools.jaotc.collect.module.ModuleSource.getModulePath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 93
            new java.lang.StringBuilder
            dup
            ldc "module:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "modules/test.module"
            invokestatic jdk.tools.jaotc.test.collect.Utils.mkpath:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* source */
            invokevirtual jdk.tools.jaotc.collect.module.ModuleSource.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 94
            return
        end local 1 // jdk.tools.jaotc.collect.module.ModuleSource source
        end local 0 // jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Ljdk/tools/jaotc/test/collect/module/ModuleSourceProviderTest;
            2    5     1  source  Ljdk/tools/jaotc/collect/module/ModuleSource;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static java.nio.file.Path lambda$0(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 0 // java.nio.file.Path root
        start local 1 // java.nio.file.Path path
         0: .line 85
            aload 0 /* root */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            ldc "modules"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
            aload 1 /* path */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            ldc "test.module"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 86
            ldc "modules/test.module"
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            areturn
         2: .line 88
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.nio.file.Path path
        end local 0 // java.nio.file.Path root
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  root  Ljava/nio/file/Path;
            0    3     1  path  Ljava/nio/file/Path;
}
SourceFile: "ModuleSourceProviderTest.java"
NestMembers:
  jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$1  jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$FakeClassLoader
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$1
  private FakeClassLoader = jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest$FakeClassLoader of jdk.tools.jaotc.test.collect.module.ModuleSourceProviderTest