public class org.apache.catalina.startup.CatalinaProperties
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.startup.CatalinaProperties
  super_class: java.lang.Object
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static java.util.Properties properties;
    descriptor: Ljava/util/Properties;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc Lorg/apache/catalina/startup/CatalinaProperties;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
         1: .line 40
            aconst_null
            putstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
         2: .line 44
            invokestatic org.apache.catalina.startup.CatalinaProperties.loadProperties:()V
         3: .line 45
            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 // org.apache.catalina.startup.CatalinaProperties this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.catalina.startup.CatalinaProperties this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/startup/CatalinaProperties;

  public static java.lang.String getProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 53
            getstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
            aload 0 /* name */
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private static void loadProperties();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=0
         0: .line 62
            aconst_null
            astore 0 /* is */
        start local 0 // java.io.InputStream is
         1: .line 63
            ldc "catalina.properties"
            astore 1 /* fileName */
        start local 1 // java.lang.String fileName
         2: .line 66
            ldc "catalina.config"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* configUrl */
        start local 2 // java.lang.String configUrl
         3: .line 67
            aload 2 /* configUrl */
            ifnull 11
         4: .line 68
            aload 2 /* configUrl */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 7
         5: .line 70
            aload 2 /* configUrl */
            astore 1 /* fileName */
         6: .line 71
            goto 11
         7: .line 72
      StackMap locals: java.io.InputStream java.lang.String java.lang.String
      StackMap stack:
            new java.net.URL
            dup
            aload 2 /* configUrl */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 0 /* is */
        end local 2 // java.lang.String configUrl
         8: .line 75
            goto 11
      StackMap locals: java.io.InputStream java.lang.String
      StackMap stack: java.lang.Throwable
         9: astore 2 /* t */
        start local 2 // java.lang.Throwable t
        10: .line 76
            aload 2 /* t */
            invokestatic org.apache.catalina.startup.CatalinaProperties.handleThrowable:(Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
        11: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* is */
            ifnonnull 19
        12: .line 81
            new java.io.File
            dup
            invokestatic org.apache.catalina.startup.Bootstrap.getCatalinaBase:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 2 /* home */
        start local 2 // java.io.File home
        13: .line 82
            new java.io.File
            dup
            aload 2 /* home */
            ldc "conf"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* conf */
        start local 3 // java.io.File conf
        14: .line 83
            new java.io.File
            dup
            aload 3 /* conf */
            aload 1 /* fileName */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* propsFile */
        start local 4 // java.io.File propsFile
        15: .line 84
            new java.io.FileInputStream
            dup
            aload 4 /* propsFile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 0 /* is */
        end local 4 // java.io.File propsFile
        end local 3 // java.io.File conf
        end local 2 // java.io.File home
        16: .line 85
            goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 2 /* t */
        start local 2 // java.lang.Throwable t
        18: .line 86
            aload 2 /* t */
            invokestatic org.apache.catalina.startup.CatalinaProperties.handleThrowable:(Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
        19: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* is */
            ifnonnull 26
        20: .line 92
            ldc Lorg/apache/catalina/startup/CatalinaProperties;
        21: .line 93
            ldc "/org/apache/catalina/startup/catalina.properties"
        22: .line 92
            invokevirtual java.lang.Class.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 0 /* is */
        23: .line 94
            goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 2 /* t */
        start local 2 // java.lang.Throwable t
        25: .line 95
            aload 2 /* t */
            invokestatic org.apache.catalina.startup.CatalinaProperties.handleThrowable:(Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
        26: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* is */
            ifnull 48
        27: .line 101
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
        28: .line 102
            getstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
            aload 0 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        29: .line 103
            goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: astore 2 /* t */
        start local 2 // java.lang.Throwable t
        31: .line 104
            aload 2 /* t */
            invokestatic org.apache.catalina.startup.CatalinaProperties.handleThrowable:(Ljava/lang/Throwable;)V
        32: .line 105
            getstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
            aload 2 /* t */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        end local 2 // java.lang.Throwable t
        33: .line 108
            aload 0 /* is */
            invokevirtual java.io.InputStream.close:()V
        34: .line 109
            goto 48
      StackMap locals:
      StackMap stack: java.io.IOException
        35: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        36: .line 110
            getstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
            ldc "Could not close catalina properties file"
            aload 4 /* ioe */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        37: goto 48
        38: .line 106
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        39: .line 108
            aload 0 /* is */
            invokevirtual java.io.InputStream.close:()V
        40: .line 109
            goto 43
      StackMap locals: java.io.InputStream java.lang.String top java.lang.Throwable
      StackMap stack: java.io.IOException
        41: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        42: .line 110
            getstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
            ldc "Could not close catalina properties file"
            aload 4 /* ioe */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        43: .line 112
      StackMap locals:
      StackMap stack:
            aload 3
            athrow
        44: .line 108
      StackMap locals: java.io.InputStream java.lang.String
      StackMap stack:
            aload 0 /* is */
            invokevirtual java.io.InputStream.close:()V
        45: .line 109
            goto 48
      StackMap locals:
      StackMap stack: java.io.IOException
        46: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        47: .line 110
            getstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
            ldc "Could not close catalina properties file"
            aload 4 /* ioe */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.io.IOException ioe
        48: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* is */
            ifnonnull 51
        49: .line 117
            getstatic org.apache.catalina.startup.CatalinaProperties.log:Lorg/apache/juli/logging/Log;
            ldc "Failed to load catalina properties file"
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        50: .line 119
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            putstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
        51: .line 123
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
            invokevirtual java.util.Properties.propertyNames:()Ljava/util/Enumeration;
            astore 2 /* enumeration */
        start local 2 // java.util.Enumeration enumeration
        52: .line 124
            goto 57
        53: .line 125
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 2 /* enumeration */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* name */
        start local 3 // java.lang.String name
        54: .line 126
            getstatic org.apache.catalina.startup.CatalinaProperties.properties:Ljava/util/Properties;
            aload 3 /* name */
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* value */
        start local 4 // java.lang.String value
        55: .line 127
            aload 4 /* value */
            ifnull 57
        56: .line 128
            aload 3 /* name */
            aload 4 /* value */
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
        end local 4 // java.lang.String value
        end local 3 // java.lang.String name
        57: .line 124
      StackMap locals:
      StackMap stack:
            aload 2 /* enumeration */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 53
        58: .line 131
            return
        end local 2 // java.util.Enumeration enumeration
        end local 1 // java.lang.String fileName
        end local 0 // java.io.InputStream is
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1   59     0           is  Ljava/io/InputStream;
            2   59     1     fileName  Ljava/lang/String;
            3    8     2    configUrl  Ljava/lang/String;
           10   11     2            t  Ljava/lang/Throwable;
           13   16     2         home  Ljava/io/File;
           14   16     3         conf  Ljava/io/File;
           15   16     4    propsFile  Ljava/io/File;
           18   19     2            t  Ljava/lang/Throwable;
           25   26     2            t  Ljava/lang/Throwable;
           31   33     2            t  Ljava/lang/Throwable;
           36   37     4          ioe  Ljava/io/IOException;
           42   43     4          ioe  Ljava/io/IOException;
           47   48     4          ioe  Ljava/io/IOException;
           52   59     2  enumeration  Ljava/util/Enumeration<*>;
           54   57     3         name  Ljava/lang/String;
           55   57     4        value  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     8       9  Class java.lang.Throwable
          12    16      17  Class java.lang.Throwable
          20    23      24  Class java.lang.Throwable
          27    29      30  Class java.lang.Throwable
          33    34      35  Class java.io.IOException
          27    33      38  any
          39    40      41  Class java.io.IOException
          44    45      46  Class java.io.IOException

  private static void handleThrowable(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 136
            aload 0 /* t */
            instanceof java.lang.ThreadDeath
            ifeq 2
         1: .line 137
            aload 0 /* t */
            checkcast java.lang.ThreadDeath
            athrow
         2: .line 139
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            instanceof java.lang.VirtualMachineError
            ifeq 4
         3: .line 140
            aload 0 /* t */
            checkcast java.lang.VirtualMachineError
            athrow
         4: .line 143
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     
}
SourceFile: "CatalinaProperties.java"