public class io.dropwizard.servlets.assets.ResourceURL
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.dropwizard.servlets.assets.ResourceURL
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.dropwizard.servlets.assets.ResourceURL this
         0: .line 19
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.dropwizard.servlets.assets.ResourceURL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/dropwizard/servlets/assets/ResourceURL;

  public static boolean isDirectory(java.net.URL);
    descriptor: (Ljava/net/URL;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=1
        start local 0 // java.net.URL resourceURL
         0: .line 29
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            astore 1 /* protocol */
        start local 1 // java.lang.String protocol
         1: .line 30
            aload 1 /* protocol */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
               104987: 2
              3143036: 3
              default: 19
          }
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         2: aload 2
            ldc "jar"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 19
      StackMap locals:
      StackMap stack:
         3: aload 2
            ldc "file"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            goto 19
         4: .line 33
      StackMap locals:
      StackMap stack:
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            checkcast java.net.JarURLConnection
            astore 3 /* jarConnection */
        start local 3 // java.net.JarURLConnection jarConnection
         5: .line 34
            aload 3 /* jarConnection */
            invokevirtual java.net.JarURLConnection.getJarEntry:()Ljava/util/jar/JarEntry;
            astore 4 /* entry */
        start local 4 // java.util.jar.JarEntry entry
         6: .line 35
            aload 4 /* entry */
            invokevirtual java.util.jar.JarEntry.isDirectory:()Z
            ifeq 8
         7: .line 36
            iconst_1
            ireturn
         8: .line 46
      StackMap locals: java.net.JarURLConnection java.util.jar.JarEntry
      StackMap stack:
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            astore 5 /* fileName */
        start local 5 // java.lang.String fileName
         9: .line 48
            aload 5 /* fileName */
            aload 5 /* fileName */
            bipush 33
            invokevirtual java.lang.String.lastIndexOf:(I)I
            iconst_2
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 6 /* relativeFilePath */
        start local 6 // java.lang.String relativeFilePath
        10: .line 49
            aload 3 /* jarConnection */
            invokevirtual java.net.JarURLConnection.getJarFile:()Ljava/util/jar/JarFile;
            astore 7 /* jarFile */
        start local 7 // java.util.jar.JarFile jarFile
        11: .line 50
            aload 7 /* jarFile */
            aload 6 /* relativeFilePath */
            invokevirtual java.util.jar.JarFile.getEntry:(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
            astore 8 /* zipEntry */
        start local 8 // java.util.zip.ZipEntry zipEntry
        12: .line 51
            aload 7 /* jarFile */
            aload 8 /* zipEntry */
            invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
            astore 9 /* inputStream */
        start local 9 // java.io.InputStream inputStream
        13: .line 53
            aload 9 /* inputStream */
            ifnonnull 14
            iconst_1
            ireturn
      StackMap locals: java.net.URL java.lang.String java.lang.String java.net.JarURLConnection java.util.jar.JarEntry java.lang.String java.lang.String java.util.jar.JarFile java.util.zip.ZipEntry java.io.InputStream
      StackMap stack:
        14: iconst_0
        15: ireturn
        end local 9 // java.io.InputStream inputStream
        end local 8 // java.util.zip.ZipEntry zipEntry
        end local 7 // java.util.jar.JarFile jarFile
        end local 6 // java.lang.String relativeFilePath
        end local 5 // java.lang.String fileName
        end local 4 // java.util.jar.JarEntry entry
        end local 3 // java.net.JarURLConnection jarConnection
        16: .line 54
      StackMap locals: java.net.URL java.lang.String java.lang.String
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
        17: .line 55
            new io.dropwizard.servlets.assets.ResourceNotFoundException
            dup
            aload 3 /* e */
            invokespecial io.dropwizard.servlets.assets.ResourceNotFoundException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException e
        18: .line 58
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.toURI:()Ljava/net/URI;
            invokespecial java.io.File.<init>:(Ljava/net/URI;)V
            invokevirtual java.io.File.isDirectory:()Z
            ireturn
        19: .line 60
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported protocol "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 61
            ldc " for resource "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* resourceURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 60
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String protocol
        end local 0 // java.net.URL resourceURL
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   22     0       resourceURL  Ljava/net/URL;
            1   22     1          protocol  Ljava/lang/String;
            5   16     3     jarConnection  Ljava/net/JarURLConnection;
            6   16     4             entry  Ljava/util/jar/JarEntry;
            9   16     5          fileName  Ljava/lang/String;
           10   16     6  relativeFilePath  Ljava/lang/String;
           11   16     7           jarFile  Ljava/util/jar/JarFile;
           12   16     8          zipEntry  Ljava/util/zip/ZipEntry;
           13   16     9       inputStream  Ljava/io/InputStream;
           17   18     3                 e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     7      16  Class java.io.IOException
           8    15      16  Class java.io.IOException
    Exceptions:
      throws java.net.URISyntaxException
    MethodParameters:
             Name  Flags
      resourceURL  

  public static java.net.URL appendTrailingSlash(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URL;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=1, args_size=1
        start local 0 // java.net.URL originalURL
         0: .line 73
            aload 0 /* originalURL */
            invokevirtual java.net.URL.getPath:()Ljava/lang/String;
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 1
            aload 0 /* originalURL */
            goto 6
         1: .line 74
      StackMap locals:
      StackMap stack:
            new java.net.URL
            dup
            aload 0 /* originalURL */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
         2: .line 75
            aload 0 /* originalURL */
            invokevirtual java.net.URL.getHost:()Ljava/lang/String;
         3: .line 76
            aload 0 /* originalURL */
            invokevirtual java.net.URL.getPort:()I
         4: .line 77
            new java.lang.StringBuilder
            dup
            aload 0 /* originalURL */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 74
            invokespecial java.net.URL.<init>:(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
         6: .line 73
      StackMap locals:
      StackMap stack: java.net.URL
            areturn
         7: .line 78
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
         8: .line 79
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid resource URL: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* originalURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.net.URL originalURL
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0  originalURL  Ljava/net/URL;
      Exception table:
        from    to  target  type
           0     6       7  Class java.net.MalformedURLException
    MethodParameters:
             Name  Flags
      originalURL  

  public static long getLastModified(java.net.URL);
    descriptor: (Ljava/net/URL;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.net.URL resourceURL
         0: .line 95
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            astore 1 /* protocol */
        start local 1 // java.lang.String protocol
         1: .line 96
            aload 1 /* protocol */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
               104987: 2
              3143036: 3
              default: 30
          }
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         2: aload 2
            ldc "jar"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            goto 30
      StackMap locals:
      StackMap stack:
         3: aload 2
            ldc "file"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 30
         4: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            checkcast java.net.JarURLConnection
            astore 3 /* jarConnection */
        start local 3 // java.net.JarURLConnection jarConnection
         5: .line 100
            aload 3 /* jarConnection */
            invokevirtual java.net.JarURLConnection.getJarEntry:()Ljava/util/jar/JarEntry;
            astore 4 /* entry */
        start local 4 // java.util.jar.JarEntry entry
         6: .line 101
            aload 4 /* entry */
            invokevirtual java.util.jar.JarEntry.getTime:()J
         7: lreturn
        end local 4 // java.util.jar.JarEntry entry
        end local 3 // java.net.JarURLConnection jarConnection
         8: .line 102
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         9: .line 103
            lconst_0
            lreturn
        10: .line 106
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* connection */
        start local 3 // java.net.URLConnection connection
        11: .line 108
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 3 /* connection */
        12: .line 109
            aload 3 /* connection */
            invokevirtual java.net.URLConnection.getLastModified:()J
            lstore 5
        13: .line 113
            aload 3 /* connection */
            ifnull 17
        14: .line 115
            aload 3 /* connection */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        15: .line 116
            goto 17
      StackMap locals: java.net.URL java.lang.String java.lang.String java.net.URLConnection top long
      StackMap stack: java.io.IOException
        16: pop
        17: .line 109
      StackMap locals:
      StackMap stack:
            lload 5
            lreturn
        18: .line 110
      StackMap locals: java.net.URL java.lang.String java.lang.String java.net.URLConnection
      StackMap stack: java.io.IOException
            pop
        19: .line 113
            aload 3 /* connection */
            ifnull 23
        20: .line 115
            aload 3 /* connection */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        21: .line 116
            goto 23
      StackMap locals:
      StackMap stack: java.io.IOException
        22: pop
        23: .line 111
      StackMap locals:
      StackMap stack:
            lconst_0
            lreturn
        24: .line 112
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        25: .line 113
            aload 3 /* connection */
            ifnull 29
        26: .line 115
            aload 3 /* connection */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            invokevirtual java.io.InputStream.close:()V
        27: .line 116
            goto 29
      StackMap locals: java.net.URL java.lang.String java.lang.String java.net.URLConnection java.lang.Throwable
      StackMap stack: java.io.IOException
        28: pop
        29: .line 120
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        end local 3 // java.net.URLConnection connection
        30: .line 122
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported protocol "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* resourceURL */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " for resource "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* resourceURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String protocol
        end local 0 // java.net.URL resourceURL
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   31     0    resourceURL  Ljava/net/URL;
            1   31     1       protocol  Ljava/lang/String;
            5    8     3  jarConnection  Ljava/net/JarURLConnection;
            6    8     4          entry  Ljava/util/jar/JarEntry;
           11   30     3     connection  Ljava/net/URLConnection;
      Exception table:
        from    to  target  type
           4     7       8  Class java.io.IOException
          14    15      16  Class java.io.IOException
          11    13      18  Class java.io.IOException
          20    21      22  Class java.io.IOException
          11    13      24  any
          18    19      24  any
          26    27      28  Class java.io.IOException
    MethodParameters:
             Name  Flags
      resourceURL  
}
SourceFile: "ResourceURL.java"