public class io.vertx.lang.js.ClasspathFileResolver
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.lang.js.ClasspathFileResolver
  super_class: java.lang.Object
{
  private static java.util.List<java.lang.String> sourceDirs;
    descriptor: Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private static java.util.List<java.io.File> sourceDirFiles;
    descriptor: Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/List<Ljava/io/File;>;

  private static boolean enabled;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.io.File DEBUG_JS_SOURCE_DIR;
    descriptor: Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 39
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "src/main/resources"
            aastore
            dup
            iconst_1
            ldc "src/test/resources"
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            putstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirs:Ljava/util/List;
         1: .line 42
            new java.io.File
            dup
            ldc ".vertx/debug-js"
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            putstatic io.vertx.lang.js.ClasspathFileResolver.DEBUG_JS_SOURCE_DIR:Ljava/io/File;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.lang.js.ClasspathFileResolver this
         0: .line 37
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.vertx.lang.js.ClasspathFileResolver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/lang/js/ClasspathFileResolver;

  public static void init();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=0
         0: .line 45
            new java.util.ArrayList
            dup
            getstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirs:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            putstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirFiles:Ljava/util/List;
         1: .line 46
            getstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 1
            goto 7
      StackMap locals: top java.util.Iterator
      StackMap stack:
         2: aload 1
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 0 /* dir */
        start local 0 // java.lang.String dir
         3: .line 47
            new java.io.File
            dup
            aload 0 /* dir */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* f */
        start local 2 // java.io.File f
         4: .line 48
            aload 2 /* f */
            invokevirtual java.io.File.exists:()Z
            ifeq 7
         5: .line 49
            iconst_1
            putstatic io.vertx.lang.js.ClasspathFileResolver.enabled:Z
         6: .line 50
            getstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirFiles:Ljava/util/List;
            aload 2 /* f */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.io.File f
        end local 0 // java.lang.String dir
         7: .line 46
      StackMap locals:
      StackMap stack:
            aload 1
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 53
            getstatic io.vertx.lang.js.ClasspathFileResolver.enabled:Z
            ifeq 19
         9: .line 54
            getstatic io.vertx.lang.js.ClasspathFileResolver.DEBUG_JS_SOURCE_DIR:Ljava/io/File;
            invokevirtual java.io.File.exists:()Z
            ifeq 18
        10: .line 55
            invokestatic io.vertx.core.Vertx.vertx:()Lio/vertx/core/Vertx;
            astore 0 /* vertx */
        start local 0 // io.vertx.core.Vertx vertx
        11: .line 56
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 1 /* latch */
        start local 1 // java.util.concurrent.CountDownLatch latch
        12: .line 57
            aload 0 /* vertx */
            invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
            getstatic io.vertx.lang.js.ClasspathFileResolver.DEBUG_JS_SOURCE_DIR:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            iconst_1
            aload 1 /* latch */
            invokedynamic handle(Ljava/util/concurrent/CountDownLatch;)Lio/vertx/core/Handler;
              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
                  io/vertx/lang/js/ClasspathFileResolver.lambda$0(Ljava/util/concurrent/CountDownLatch;Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.file.FileSystem.deleteRecursive:(Ljava/lang/String;ZLio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
            pop
        13: .line 64
            aload 1 /* latch */
            ldc 30
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        14: .line 65
            goto 16
      StackMap locals: io.vertx.core.Vertx java.util.concurrent.CountDownLatch
      StackMap stack: java.lang.InterruptedException
        15: pop
        16: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* vertx */
            invokeinterface io.vertx.core.Vertx.close:()V
        end local 1 // java.util.concurrent.CountDownLatch latch
        end local 0 // io.vertx.core.Vertx vertx
        17: .line 68
            goto 19
        18: .line 69
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.lang.js.ClasspathFileResolver.DEBUG_JS_SOURCE_DIR:Ljava/io/File;
            invokevirtual java.io.File.mkdirs:()Z
            pop
        19: .line 72
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            3    7     0    dir  Ljava/lang/String;
            4    7     2      f  Ljava/io/File;
           11   17     0  vertx  Lio/vertx/core/Vertx;
           12   17     1  latch  Ljava/util/concurrent/CountDownLatch;
      Exception table:
        from    to  target  type
          13    14      15  Class java.lang.InterruptedException

  public static java.lang.String resolveFilename(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=9, args_size=1
        start local 0 // java.lang.String scriptName
         0: .line 76
            getstatic io.vertx.lang.js.ClasspathFileResolver.enabled:Z
            ifeq 33
         1: .line 83
            getstatic io.vertx.lang.js.ClasspathFileResolver.sourceDirFiles:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 6
      StackMap locals: java.lang.String top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.io.File
            astore 1 /* sourceDir */
        start local 1 // java.io.File sourceDir
         3: .line 84
            new java.io.File
            dup
            aload 1 /* sourceDir */
            aload 0 /* scriptName */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* source */
        start local 3 // java.io.File source
         4: .line 85
            aload 3 /* source */
            invokevirtual java.io.File.exists:()Z
            ifeq 6
         5: .line 86
            aload 3 /* source */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            areturn
        end local 3 // java.io.File source
        end local 1 // java.io.File sourceDir
         6: .line 83
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 91
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 1 /* cl */
        start local 1 // java.lang.ClassLoader cl
         8: .line 92
            aload 1 /* cl */
            ifnonnull 9
            ldc Lio/vertx/lang/js/ClasspathFileResolver;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            goto 10
      StackMap locals: java.lang.String java.lang.ClassLoader
      StackMap stack:
         9: aload 1 /* cl */
      StackMap locals:
      StackMap stack: java.lang.ClassLoader
        10: astore 1 /* cl */
        11: .line 94
            aload 1 /* cl */
            aload 0 /* scriptName */
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            astore 2 /* url */
        start local 2 // java.net.URL url
        12: .line 95
            aload 2 /* url */
            ifnull 32
        13: .line 97
            aload 2 /* url */
            invokevirtual java.net.URL.toURI:()Ljava/net/URI;
            astore 3 /* uri */
        start local 3 // java.net.URI uri
        14: .line 98
            aload 3 /* uri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            ldc "jar"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        15: .line 100
            new java.io.File
            dup
            getstatic io.vertx.lang.js.ClasspathFileResolver.DEBUG_JS_SOURCE_DIR:Ljava/io/File;
            aload 0 /* scriptName */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* target */
        start local 4 // java.io.File target
        16: .line 101
            aload 4 /* target */
            invokevirtual java.io.File.exists:()Z
            ifne 28
        17: .line 102
            aload 4 /* target */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            invokevirtual java.io.File.mkdirs:()Z
            pop
        18: .line 103
            aload 4 /* target */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            astore 5 /* path */
        start local 5 // java.nio.file.Path path
        19: .line 104
            aconst_null
            astore 6
            aconst_null
            astore 7
        20: aload 2 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 8 /* is */
        start local 8 // java.io.InputStream is
        21: .line 105
            aload 8 /* is */
            aload 5 /* path */
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/io/InputStream;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)J
            pop2
        22: .line 106
            aload 8 /* is */
            ifnull 28
            aload 8 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 28
      StackMap locals: java.lang.String java.lang.ClassLoader java.net.URL java.net.URI java.io.File java.nio.file.Path java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        23: astore 6
            aload 8 /* is */
            ifnull 24
            aload 8 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 8 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        24: aload 6
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: astore 7
            aload 6
            ifnonnull 26
            aload 7
            astore 6
            goto 27
      StackMap locals:
      StackMap stack:
        26: aload 6
            aload 7
            if_acmpeq 27
            aload 6
            aload 7
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        27: aload 6
            athrow
        end local 5 // java.nio.file.Path path
        28: .line 109
      StackMap locals:
      StackMap stack:
            aload 4 /* target */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
        29: areturn
        end local 4 // java.io.File target
        end local 3 // java.net.URI uri
        30: .line 111
      StackMap locals: java.lang.String java.lang.ClassLoader java.net.URL
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        31: .line 112
            new io.vertx.core.VertxException
            dup
            aload 3 /* e */
            invokespecial io.vertx.core.VertxException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        32: .line 116
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.net.URL url
        end local 1 // java.lang.ClassLoader cl
        33: .line 118
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String scriptName
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   34     0  scriptName  Ljava/lang/String;
            3    6     1   sourceDir  Ljava/io/File;
            4    6     3      source  Ljava/io/File;
            8   33     1          cl  Ljava/lang/ClassLoader;
           12   33     2         url  Ljava/net/URL;
           14   30     3         uri  Ljava/net/URI;
           16   30     4      target  Ljava/io/File;
           19   28     5        path  Ljava/nio/file/Path;
           21   24     8          is  Ljava/io/InputStream;
           31   32     3           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          21    22      23  any
          20    25      25  any
          13    29      30  Class java.lang.Exception
    MethodParameters:
            Name  Flags
      scriptName  

  private static void lambda$0(java.util.concurrent.CountDownLatch, io.vertx.core.AsyncResult);
    descriptor: (Ljava/util/concurrent/CountDownLatch;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 1 // io.vertx.core.AsyncResult res
         0: .line 58
            aload 1 /* res */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 2
         1: .line 59
            aload 1 /* res */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokevirtual java.lang.Throwable.printStackTrace:()V
         2: .line 61
      StackMap locals:
      StackMap stack:
            aload 0
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         3: .line 62
            return
        end local 1 // io.vertx.core.AsyncResult res
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1   res  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
}
SourceFile: "ClasspathFileResolver.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles