public abstract class org.springframework.util.ResourceUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.util.ResourceUtils
  super_class: java.lang.Object
{
  public static final java.lang.String CLASSPATH_URL_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "classpath:"

  public static final java.lang.String FILE_URL_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "file:"

  public static final java.lang.String JAR_URL_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "jar:"

  public static final java.lang.String WAR_URL_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "war:"

  public static final java.lang.String URL_PROTOCOL_FILE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "file"

  public static final java.lang.String URL_PROTOCOL_JAR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "jar"

  public static final java.lang.String URL_PROTOCOL_WAR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "war"

  public static final java.lang.String URL_PROTOCOL_ZIP;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "zip"

  public static final java.lang.String URL_PROTOCOL_WSJAR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "wsjar"

  public static final java.lang.String URL_PROTOCOL_VFSZIP;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "vfszip"

  public static final java.lang.String URL_PROTOCOL_VFSFILE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "vfsfile"

  public static final java.lang.String URL_PROTOCOL_VFS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "vfs"

  public static final java.lang.String JAR_FILE_EXTENSION;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: ".jar"

  public static final java.lang.String JAR_URL_SEPARATOR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "!/"

  public static final java.lang.String WAR_URL_SEPARATOR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "*/"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.util.ResourceUtils this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.util.ResourceUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/ResourceUtils;

  public static boolean isUrl(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String resourceLocation
         0: .line 105
            aload 0 /* resourceLocation */
            ifnonnull 2
         1: .line 106
            iconst_0
            ireturn
         2: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* resourceLocation */
            ldc "classpath:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 109
            iconst_1
            ireturn
         4: .line 112
      StackMap locals:
      StackMap stack:
            new java.net.URL
            aload 0 /* resourceLocation */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
         5: .line 113
            iconst_1
            ireturn
         6: .line 115
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
         7: .line 116
            iconst_0
            ireturn
        end local 0 // java.lang.String resourceLocation
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0  resourceLocation  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4     5       6  Class java.net.MalformedURLException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                  Name  Flags
      resourceLocation  

  public static java.net.URL getURL(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/URL;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.String resourceLocation
         0: .line 130
            aload 0 /* resourceLocation */
            ldc "Resource location must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 131
            aload 0 /* resourceLocation */
            ldc "classpath:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 13
         2: .line 132
            aload 0 /* resourceLocation */
            ldc "classpath:"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* path */
        start local 1 // java.lang.String path
         3: .line 133
            invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* cl */
        start local 2 // java.lang.ClassLoader cl
         4: .line 134
            aload 2 /* cl */
            ifnull 5
            aload 2 /* cl */
            aload 1 /* path */
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            goto 6
      StackMap locals: java.lang.String java.lang.ClassLoader
      StackMap stack:
         5: aload 1 /* path */
            invokestatic java.lang.ClassLoader.getSystemResource:(Ljava/lang/String;)Ljava/net/URL;
      StackMap locals:
      StackMap stack: java.net.URL
         6: astore 3 /* url */
        start local 3 // java.net.URL url
         7: .line 135
            aload 3 /* url */
            ifnonnull 12
         8: .line 136
            new java.lang.StringBuilder
            dup
            ldc "class path resource ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* description */
        start local 4 // java.lang.String description
         9: .line 137
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* description */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 138
            ldc " cannot be resolved to URL because it does not exist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 137
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String description
        12: .line 140
      StackMap locals: java.net.URL
      StackMap stack:
            aload 3 /* url */
            areturn
        end local 3 // java.net.URL url
        end local 2 // java.lang.ClassLoader cl
        end local 1 // java.lang.String path
        13: .line 144
      StackMap locals:
      StackMap stack:
            new java.net.URL
            dup
            aload 0 /* resourceLocation */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
        14: areturn
        15: .line 146
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
        16: .line 149
            new java.io.File
            dup
            aload 0 /* resourceLocation */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
        17: areturn
        18: .line 151
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
        19: .line 152
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Resource location ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* resourceLocation */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 153
            ldc "] is neither a URL not a well-formed file path"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        21: .line 152
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String resourceLocation
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   22     0  resourceLocation  Ljava/lang/String;
            3   13     1              path  Ljava/lang/String;
            4   13     2                cl  Ljava/lang/ClassLoader;
            7   13     3               url  Ljava/net/URL;
            9   12     4       description  Ljava/lang/String;
      Exception table:
        from    to  target  type
          13    14      15  Class java.net.MalformedURLException
          16    17      18  Class java.net.MalformedURLException
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
                  Name  Flags
      resourceLocation  

  public static java.io.File getFile(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.String resourceLocation
         0: .line 170
            aload 0 /* resourceLocation */
            ldc "Resource location must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 171
            aload 0 /* resourceLocation */
            ldc "classpath:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 13
         2: .line 172
            aload 0 /* resourceLocation */
            ldc "classpath:"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* path */
        start local 1 // java.lang.String path
         3: .line 173
            new java.lang.StringBuilder
            dup
            ldc "class path resource ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* description */
        start local 2 // java.lang.String description
         4: .line 174
            invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            astore 3 /* cl */
        start local 3 // java.lang.ClassLoader cl
         5: .line 175
            aload 3 /* cl */
            ifnull 6
            aload 3 /* cl */
            aload 1 /* path */
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            goto 7
      StackMap locals: java.lang.String java.lang.String java.lang.ClassLoader
      StackMap stack:
         6: aload 1 /* path */
            invokestatic java.lang.ClassLoader.getSystemResource:(Ljava/lang/String;)Ljava/net/URL;
      StackMap locals:
      StackMap stack: java.net.URL
         7: astore 4 /* url */
        start local 4 // java.net.URL url
         8: .line 176
            aload 4 /* url */
            ifnonnull 12
         9: .line 177
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* description */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 178
            ldc " cannot be resolved to absolute file path because it does not exist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 177
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 180
      StackMap locals: java.net.URL
      StackMap stack:
            aload 4 /* url */
            aload 2 /* description */
            invokestatic org.springframework.util.ResourceUtils.getFile:(Ljava/net/URL;Ljava/lang/String;)Ljava/io/File;
            areturn
        end local 4 // java.net.URL url
        end local 3 // java.lang.ClassLoader cl
        end local 2 // java.lang.String description
        end local 1 // java.lang.String path
        13: .line 184
      StackMap locals: java.lang.String
      StackMap stack:
            new java.net.URL
            dup
            aload 0 /* resourceLocation */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            invokestatic org.springframework.util.ResourceUtils.getFile:(Ljava/net/URL;)Ljava/io/File;
        14: areturn
        15: .line 186
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
        16: .line 188
            new java.io.File
            dup
            aload 0 /* resourceLocation */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // java.lang.String resourceLocation
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   17     0  resourceLocation  Ljava/lang/String;
            3   13     1              path  Ljava/lang/String;
            4   13     2       description  Ljava/lang/String;
            5   13     3                cl  Ljava/lang/ClassLoader;
            8   13     4               url  Ljava/net/URL;
      Exception table:
        from    to  target  type
          13    14      15  Class java.net.MalformedURLException
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
                  Name  Flags
      resourceLocation  

  public static java.io.File getFile(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.URL resourceUrl
         0: .line 201
            aload 0 /* resourceUrl */
            ldc "URL"
            invokestatic org.springframework.util.ResourceUtils.getFile:(Ljava/net/URL;Ljava/lang/String;)Ljava/io/File;
            areturn
        end local 0 // java.net.URL resourceUrl
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  resourceUrl  Ljava/net/URL;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
             Name  Flags
      resourceUrl  

  public static java.io.File getFile(java.net.URL, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.net.URL resourceUrl
        start local 1 // java.lang.String description
         0: .line 215
            aload 0 /* resourceUrl */
            ldc "Resource URL must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 216
            ldc "file"
            aload 0 /* resourceUrl */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
         2: .line 217
            new java.io.FileNotFoundException
            dup
         3: .line 218
            new java.lang.StringBuilder
            dup
            aload 1 /* description */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " cannot be resolved to absolute file path "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 219
            ldc "because it does not reside in the file system: "
            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;
         5: .line 218
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 217
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 222
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* resourceUrl */
            invokestatic org.springframework.util.ResourceUtils.toURI:(Ljava/net/URL;)Ljava/net/URI;
            invokevirtual java.net.URI.getSchemeSpecificPart:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
         8: areturn
         9: .line 224
      StackMap locals:
      StackMap stack: java.net.URISyntaxException
            pop
        10: .line 226
            new java.io.File
            dup
            aload 0 /* resourceUrl */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String description
        end local 0 // java.net.URL resourceUrl
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0  resourceUrl  Ljava/net/URL;
            0   11     1  description  Ljava/lang/String;
      Exception table:
        from    to  target  type
           7     8       9  Class java.net.URISyntaxException
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
             Name  Flags
      resourceUrl  
      description  

  public static java.io.File getFile(java.net.URI);
    descriptor: (Ljava/net/URI;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.URI resourceUri
         0: .line 240
            aload 0 /* resourceUri */
            ldc "URI"
            invokestatic org.springframework.util.ResourceUtils.getFile:(Ljava/net/URI;Ljava/lang/String;)Ljava/io/File;
            areturn
        end local 0 // java.net.URI resourceUri
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  resourceUri  Ljava/net/URI;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
             Name  Flags
      resourceUri  

  public static java.io.File getFile(java.net.URI, java.lang.String);
    descriptor: (Ljava/net/URI;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.net.URI resourceUri
        start local 1 // java.lang.String description
         0: .line 255
            aload 0 /* resourceUri */
            ldc "Resource URI must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 256
            ldc "file"
            aload 0 /* resourceUri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
         2: .line 257
            new java.io.FileNotFoundException
            dup
         3: .line 258
            new java.lang.StringBuilder
            dup
            aload 1 /* description */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " cannot be resolved to absolute file path "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 259
            ldc "because it does not reside in the file system: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* resourceUri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         5: .line 258
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 257
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 261
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* resourceUri */
            invokevirtual java.net.URI.getSchemeSpecificPart:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String description
        end local 0 // java.net.URI resourceUri
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0  resourceUri  Ljava/net/URI;
            0    8     1  description  Ljava/lang/String;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
             Name  Flags
      resourceUri  
      description  

  public static boolean isFileURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.net.URL url
         0: .line 271
            aload 0 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            astore 1 /* protocol */
        start local 1 // java.lang.String protocol
         1: .line 272
            ldc "file"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
            ldc "vfsfile"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         2: .line 273
            ldc "vfs"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 272
            iconst_0
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         4: iconst_1
            ireturn
        end local 1 // java.lang.String protocol
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0       url  Ljava/net/URL;
            1    5     1  protocol  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      url   

  public static boolean isJarURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.net.URL url
         0: .line 283
            aload 0 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            astore 1 /* protocol */
        start local 1 // java.lang.String protocol
         1: .line 284
            ldc "jar"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            ldc "war"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         2: .line 285
            ldc "zip"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            ldc "vfszip"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         3: .line 286
            ldc "wsjar"
            aload 1 /* protocol */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 284
            iconst_0
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         5: iconst_1
            ireturn
        end local 1 // java.lang.String protocol
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0       url  Ljava/net/URL;
            1    6     1  protocol  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      url   

  public static boolean isJarFileURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.URL url
         0: .line 297
            ldc "file"
            aload 0 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 298
            aload 0 /* url */
            invokevirtual java.net.URL.getPath:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc ".jar"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 297
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   url  Ljava/net/URL;
    MethodParameters:
      Name  Flags
      url   

  public static java.net.URL extractJarFileURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URL;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.net.URL jarUrl
         0: .line 309
            aload 0 /* jarUrl */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            astore 1 /* urlFile */
        start local 1 // java.lang.String urlFile
         1: .line 310
            aload 1 /* urlFile */
            ldc "!/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 2 /* separatorIndex */
        start local 2 // int separatorIndex
         2: .line 311
            iload 2 /* separatorIndex */
            iconst_m1
            if_icmpeq 10
         3: .line 312
            aload 1 /* urlFile */
            iconst_0
            iload 2 /* separatorIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* jarFile */
        start local 3 // java.lang.String jarFile
         4: .line 314
            new java.net.URL
            dup
            aload 3 /* jarFile */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
         5: areturn
         6: .line 316
      StackMap locals: java.net.URL java.lang.String int java.lang.String
      StackMap stack: java.net.MalformedURLException
            pop
         7: .line 319
            aload 3 /* jarFile */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 9
         8: .line 320
            new java.lang.StringBuilder
            dup
            ldc "/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* jarFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* jarFile */
         9: .line 322
      StackMap locals:
      StackMap stack:
            new java.net.URL
            dup
            new java.lang.StringBuilder
            dup
            ldc "file:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* jarFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            areturn
        end local 3 // java.lang.String jarFile
        10: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* jarUrl */
            areturn
        end local 2 // int separatorIndex
        end local 1 // java.lang.String urlFile
        end local 0 // java.net.URL jarUrl
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0          jarUrl  Ljava/net/URL;
            1   11     1         urlFile  Ljava/lang/String;
            2   11     2  separatorIndex  I
            4   10     3         jarFile  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4     5       6  Class java.net.MalformedURLException
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
        Name  Flags
      jarUrl  

  public static java.net.URL extractArchiveURL(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URL;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.net.URL jarUrl
         0: .line 342
            aload 0 /* jarUrl */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            astore 1 /* urlFile */
        start local 1 // java.lang.String urlFile
         1: .line 344
            aload 1 /* urlFile */
            ldc "*/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 2 /* endIndex */
        start local 2 // int endIndex
         2: .line 345
            iload 2 /* endIndex */
            iconst_m1
            if_icmpeq 9
         3: .line 347
            aload 1 /* urlFile */
            iconst_0
            iload 2 /* endIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* warFile */
        start local 3 // java.lang.String warFile
         4: .line 348
            ldc "war"
            aload 0 /* jarUrl */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 349
            new java.net.URL
            dup
            aload 3 /* warFile */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            areturn
         6: .line 351
      StackMap locals: java.lang.String int java.lang.String
      StackMap stack:
            aload 3 /* warFile */
            ldc "war:"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 4 /* startIndex */
        start local 4 // int startIndex
         7: .line 352
            iload 4 /* startIndex */
            iconst_m1
            if_icmpeq 9
         8: .line 353
            new java.net.URL
            dup
            aload 3 /* warFile */
            iload 4 /* startIndex */
            ldc "war:"
            invokevirtual java.lang.String.length:()I
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            areturn
        end local 4 // int startIndex
        end local 3 // java.lang.String warFile
         9: .line 358
      StackMap locals:
      StackMap stack:
            aload 0 /* jarUrl */
            invokestatic org.springframework.util.ResourceUtils.extractJarFileURL:(Ljava/net/URL;)Ljava/net/URL;
            areturn
        end local 2 // int endIndex
        end local 1 // java.lang.String urlFile
        end local 0 // java.net.URL jarUrl
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0      jarUrl  Ljava/net/URL;
            1   10     1     urlFile  Ljava/lang/String;
            2   10     2    endIndex  I
            4    9     3     warFile  Ljava/lang/String;
            7    9     4  startIndex  I
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
        Name  Flags
      jarUrl  

  public static java.net.URI toURI(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URI;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.net.URL url
         0: .line 370
            aload 0 /* url */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            invokestatic org.springframework.util.ResourceUtils.toURI:(Ljava/lang/String;)Ljava/net/URI;
            areturn
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   url  Ljava/net/URL;
    Exceptions:
      throws java.net.URISyntaxException
    MethodParameters:
      Name  Flags
      url   

  public static java.net.URI toURI(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/URI;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.String location
         0: .line 381
            new java.net.URI
            dup
            aload 0 /* location */
            ldc " "
            ldc "%20"
            invokestatic org.springframework.util.StringUtils.replace:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // java.lang.String location
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  location  Ljava/lang/String;
    Exceptions:
      throws java.net.URISyntaxException
    MethodParameters:
          Name  Flags
      location  

  public static void useCachesIfNecessary(java.net.URLConnection);
    descriptor: (Ljava/net/URLConnection;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.net.URLConnection con
         0: .line 391
            aload 0 /* con */
            aload 0 /* con */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            ldc "JNLP"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            invokevirtual java.net.URLConnection.setUseCaches:(Z)V
         1: .line 392
            return
        end local 0 // java.net.URLConnection con
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   con  Ljava/net/URLConnection;
    MethodParameters:
      Name  Flags
      con   
}
SourceFile: "ResourceUtils.java"