public class org.apache.catalina.startup.CatalinaBaseConfigurationSource implements org.apache.tomcat.util.file.ConfigurationSource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.startup.CatalinaBaseConfigurationSource
  super_class: java.lang.Object
{
  protected static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private final java.lang.String serverXmlPath;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.File catalinaBaseFile;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.net.URI catalinaBaseUri;
    descriptor: Ljava/net/URI;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 34
            ldc "org.apache.catalina.startup"
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/String;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.catalina.startup.CatalinaBaseConfigurationSource.sm:Lorg/apache/tomcat/util/res/StringManager;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.io.File, java.lang.String);
    descriptor: (Ljava/io/File;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
        start local 1 // java.io.File catalinaBaseFile
        start local 2 // java.lang.String serverXmlPath
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            aload 0 /* this */
            aload 1 /* catalinaBaseFile */
            putfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseFile:Ljava/io/File;
         2: .line 42
            aload 0 /* this */
            aload 1 /* catalinaBaseFile */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            putfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseUri:Ljava/net/URI;
         3: .line 43
            aload 0 /* this */
            aload 2 /* serverXmlPath */
            putfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.serverXmlPath:Ljava/lang/String;
         4: .line 44
            return
        end local 2 // java.lang.String serverXmlPath
        end local 1 // java.io.File catalinaBaseFile
        end local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lorg/apache/catalina/startup/CatalinaBaseConfigurationSource;
            0    5     1  catalinaBaseFile  Ljava/io/File;
            0    5     2     serverXmlPath  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      catalinaBaseFile  
      serverXmlPath     

  public org.apache.tomcat.util.file.ConfigurationSource$Resource getServerXml();
    descriptor: ()Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
         0: .line 48
            aconst_null
            astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
         1: .line 49
            aconst_null
            astore 2 /* result */
        start local 2 // org.apache.tomcat.util.file.ConfigurationSource$Resource result
         2: .line 51
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.serverXmlPath:Ljava/lang/String;
            ifnull 3
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.serverXmlPath:Ljava/lang/String;
            ldc "conf/server.xml"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         3: .line 52
      StackMap locals: java.io.IOException org.apache.tomcat.util.file.ConfigurationSource$Resource
      StackMap stack:
            aload 0 /* this */
            invokespecial org.apache.tomcat.util.file.ConfigurationSource.getServerXml:()Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
            astore 2 /* result */
         4: .line 53
            goto 9
         5: .line 54
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.serverXmlPath:Ljava/lang/String;
            invokevirtual org.apache.catalina.startup.CatalinaBaseConfigurationSource.getResource:(Ljava/lang/String;)Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
            astore 2 /* result */
         6: .line 56
            goto 9
      StackMap locals:
      StackMap stack: java.io.IOException
         7: astore 3 /* e */
        start local 3 // java.io.IOException e
         8: .line 57
            aload 3 /* e */
            astore 1 /* ioe */
        end local 3 // java.io.IOException e
         9: .line 59
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            ifnonnull 16
        10: .line 61
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ldc "server-embed.xml"
            invokevirtual java.lang.ClassLoader.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 3 /* stream */
        start local 3 // java.io.InputStream stream
        11: .line 62
            aload 3 /* stream */
            ifnull 16
        12: .line 64
            new org.apache.tomcat.util.file.ConfigurationSource$Resource
            dup
            aload 3 /* stream */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ldc "server-embed.xml"
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            invokevirtual java.net.URL.toURI:()Ljava/net/URI;
            invokespecial org.apache.tomcat.util.file.ConfigurationSource$Resource.<init>:(Ljava/io/InputStream;Ljava/net/URI;)V
            astore 2 /* result */
        13: .line 65
            goto 16
      StackMap locals: org.apache.catalina.startup.CatalinaBaseConfigurationSource java.io.IOException org.apache.tomcat.util.file.ConfigurationSource$Resource java.io.InputStream
      StackMap stack: java.net.URISyntaxException
        14: pop
        15: .line 66
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
        end local 3 // java.io.InputStream stream
        16: .line 71
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            ifnonnull 18
            aload 1 /* ioe */
            ifnull 18
        17: .line 72
            aload 1 /* ioe */
            athrow
        18: .line 74
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // org.apache.tomcat.util.file.ConfigurationSource$Resource result
        end local 1 // java.io.IOException ioe
        end local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lorg/apache/catalina/startup/CatalinaBaseConfigurationSource;
            1   19     1     ioe  Ljava/io/IOException;
            2   19     2  result  Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
            8    9     3       e  Ljava/io/IOException;
           11   16     3  stream  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           2     6       7  Class java.io.IOException
          12    13      14  Class java.net.URISyntaxException
    Exceptions:
      throws java.io.IOException

  public org.apache.tomcat.util.file.ConfigurationSource$Resource getResource(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=2
        start local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
        start local 1 // java.lang.String name
         0: .line 83
            new java.io.File
            dup
            aload 1 /* name */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* f */
        start local 2 // java.io.File f
         1: .line 84
            aload 2 /* f */
            invokevirtual java.io.File.isAbsolute:()Z
            ifne 3
         2: .line 85
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseFile:Ljava/io/File;
            aload 1 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* f */
         3: .line 87
      StackMap locals: java.io.File
      StackMap stack:
            aload 2 /* f */
            invokevirtual java.io.File.isFile:()Z
            ifeq 6
         4: .line 88
            new java.io.FileInputStream
            dup
            aload 2 /* f */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 3 /* fis */
        start local 3 // java.io.FileInputStream fis
         5: .line 89
            new org.apache.tomcat.util.file.ConfigurationSource$Resource
            dup
            aload 3 /* fis */
            aload 2 /* f */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokespecial org.apache.tomcat.util.file.ConfigurationSource$Resource.<init>:(Ljava/io/InputStream;Ljava/net/URI;)V
            areturn
        end local 3 // java.io.FileInputStream fis
         6: .line 93
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* stream */
        start local 3 // java.io.InputStream stream
         7: .line 95
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            aload 1 /* name */
            invokevirtual java.lang.ClassLoader.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 3 /* stream */
         8: .line 96
            aload 3 /* stream */
            ifnull 17
         9: .line 97
            new org.apache.tomcat.util.file.ConfigurationSource$Resource
            dup
            aload 3 /* stream */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            aload 1 /* name */
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            invokevirtual java.net.URL.toURI:()Ljava/net/URI;
            invokespecial org.apache.tomcat.util.file.ConfigurationSource$Resource.<init>:(Ljava/io/InputStream;Ljava/net/URI;)V
        10: areturn
        11: .line 99
      StackMap locals: org.apache.catalina.startup.CatalinaBaseConfigurationSource java.lang.String java.io.File java.io.InputStream
      StackMap stack: java.nio.file.InvalidPathException
            pop
        12: .line 102
            aload 3 /* stream */
            ifnull 17
        13: .line 103
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
            goto 17
        14: .line 105
      StackMap locals:
      StackMap stack: java.net.URISyntaxException
            astore 4 /* e */
        start local 4 // java.net.URISyntaxException e
        15: .line 106
            aload 3 /* stream */
            invokevirtual java.io.InputStream.close:()V
        16: .line 107
            new java.io.IOException
            dup
            getstatic org.apache.catalina.startup.CatalinaBaseConfigurationSource.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "catalinaConfigurationSource.cannotObtainURL"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* name */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 4 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.net.URISyntaxException e
        17: .line 111
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* uri */
        start local 4 // java.net.URI uri
        18: .line 113
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.apache.catalina.startup.CatalinaBaseConfigurationSource.getURI:(Ljava/lang/String;)Ljava/net/URI;
            astore 4 /* uri */
        19: .line 114
            goto 22
      StackMap locals: org.apache.catalina.startup.CatalinaBaseConfigurationSource java.lang.String java.io.File java.io.InputStream java.net.URI
      StackMap stack: java.lang.IllegalArgumentException
        20: astore 5 /* e */
        start local 5 // java.lang.IllegalArgumentException e
        21: .line 115
            new java.io.IOException
            dup
            getstatic org.apache.catalina.startup.CatalinaBaseConfigurationSource.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "catalinaConfigurationSource.cannotObtainURL"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* name */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 5 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.IllegalArgumentException e
        22: .line 120
      StackMap locals:
      StackMap stack:
            aload 4 /* uri */
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            astore 5 /* url */
        start local 5 // java.net.URL url
        23: .line 121
            new org.apache.tomcat.util.file.ConfigurationSource$Resource
            dup
            aload 5 /* url */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            aload 4 /* uri */
            invokespecial org.apache.tomcat.util.file.ConfigurationSource$Resource.<init>:(Ljava/io/InputStream;Ljava/net/URI;)V
        24: areturn
        end local 5 // java.net.URL url
        25: .line 122
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            astore 5 /* e */
        start local 5 // java.net.MalformedURLException e
        26: .line 123
            new java.io.IOException
            dup
            getstatic org.apache.catalina.startup.CatalinaBaseConfigurationSource.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "catalinaConfigurationSource.cannotObtainURL"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* name */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 5 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.net.MalformedURLException e
        end local 4 // java.net.URI uri
        end local 3 // java.io.InputStream stream
        end local 2 // java.io.File f
        end local 1 // java.lang.String name
        end local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   27     0    this  Lorg/apache/catalina/startup/CatalinaBaseConfigurationSource;
            0   27     1    name  Ljava/lang/String;
            1   27     2       f  Ljava/io/File;
            5    6     3     fis  Ljava/io/FileInputStream;
            7   27     3  stream  Ljava/io/InputStream;
           15   17     4       e  Ljava/net/URISyntaxException;
           18   27     4     uri  Ljava/net/URI;
           21   22     5       e  Ljava/lang/IllegalArgumentException;
           23   25     5     url  Ljava/net/URL;
           26   27     5       e  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           7    10      11  Class java.nio.file.InvalidPathException
           7    10      14  Class java.net.URISyntaxException
          18    19      20  Class java.lang.IllegalArgumentException
          22    24      25  Class java.net.MalformedURLException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  public java.net.URI getURI(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/URI;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
        start local 1 // java.lang.String name
         0: .line 129
            new java.io.File
            dup
            aload 1 /* name */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* f */
        start local 2 // java.io.File f
         1: .line 130
            aload 2 /* f */
            invokevirtual java.io.File.isAbsolute:()Z
            ifne 3
         2: .line 131
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseFile:Ljava/io/File;
            aload 1 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* f */
         3: .line 133
      StackMap locals: java.io.File
      StackMap stack:
            aload 2 /* f */
            invokevirtual java.io.File.isFile:()Z
            ifeq 5
         4: .line 134
            aload 2 /* f */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            areturn
         5: .line 139
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            aload 1 /* name */
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            astore 3 /* resource */
        start local 3 // java.net.URL resource
         6: .line 140
            aload 3 /* resource */
            ifnull 10
         7: .line 141
            aload 3 /* resource */
            invokevirtual java.net.URL.toURI:()Ljava/net/URI;
         8: areturn
        end local 3 // java.net.URL resource
         9: .line 143
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        10: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseUri:Ljava/net/URI;
            ifnull 13
        11: .line 152
            aload 0 /* this */
            getfield org.apache.catalina.startup.CatalinaBaseConfigurationSource.catalinaBaseUri:Ljava/net/URI;
            aload 1 /* name */
            invokevirtual java.net.URI.resolve:(Ljava/lang/String;)Ljava/net/URI;
            astore 3 /* uri */
        start local 3 // java.net.URI uri
        12: .line 153
            goto 14
        end local 3 // java.net.URI uri
        13: .line 154
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            invokestatic java.net.URI.create:(Ljava/lang/String;)Ljava/net/URI;
            astore 3 /* uri */
        start local 3 // java.net.URI uri
        14: .line 156
      StackMap locals: java.net.URI
      StackMap stack:
            aload 3 /* uri */
            areturn
        end local 3 // java.net.URI uri
        end local 2 // java.io.File f
        end local 1 // java.lang.String name
        end local 0 // org.apache.catalina.startup.CatalinaBaseConfigurationSource this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/apache/catalina/startup/CatalinaBaseConfigurationSource;
            0   15     1      name  Ljava/lang/String;
            1   15     2         f  Ljava/io/File;
            6    9     3  resource  Ljava/net/URL;
           12   13     3       uri  Ljava/net/URI;
           14   15     3       uri  Ljava/net/URI;
      Exception table:
        from    to  target  type
           5     8       9  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      name  
}
SourceFile: "CatalinaBaseConfigurationSource.java"
InnerClasses:
  public Resource = org.apache.tomcat.util.file.ConfigurationSource$Resource of org.apache.tomcat.util.file.ConfigurationSource