public class org.apache.catalina.util.ServerInfo
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.util.ServerInfo
  super_class: java.lang.Object
{
  private static final java.lang.String serverInfo;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String serverBuilt;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String serverNumber;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=7, args_size=0
         0: .line 57
            aconst_null
            astore 0 /* info */
        start local 0 // java.lang.String info
         1: .line 58
            aconst_null
            astore 1 /* built */
        start local 1 // java.lang.String built
         2: .line 59
            aconst_null
            astore 2 /* number */
        start local 2 // java.lang.String number
         3: .line 61
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 3 /* props */
        start local 3 // java.util.Properties props
         4: .line 62
            aconst_null
            astore 4
            aconst_null
            astore 5
         5: ldc Lorg/apache/catalina/util/ServerInfo;
         6: .line 63
            ldc "/org/apache/catalina/util/ServerInfo.properties"
         7: .line 62
            invokevirtual java.lang.Class.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 6 /* is */
        start local 6 // java.io.InputStream is
         8: .line 64
            aload 3 /* props */
            aload 6 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         9: .line 65
            aload 3 /* props */
            ldc "server.info"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* info */
        10: .line 66
            aload 3 /* props */
            ldc "server.built"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* built */
        11: .line 67
            aload 3 /* props */
            ldc "server.number"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* number */
        12: .line 68
            aload 6 /* is */
            ifnull 20
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 20
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Properties java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        13: astore 4
            aload 6 /* is */
            ifnull 14
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        14: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 5
            aload 4
            ifnonnull 16
            aload 5
            astore 4
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 4
            aload 5
            if_acmpeq 17
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 4
            athrow
      StackMap locals: java.lang.String java.lang.String java.lang.String java.util.Properties
      StackMap stack: java.lang.Throwable
        18: astore 4 /* t */
        start local 4 // java.lang.Throwable t
        19: .line 69
            aload 4 /* t */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        end local 4 // java.lang.Throwable t
        20: .line 71
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            ifnull 21
            aload 0 /* info */
            ldc "Apache Tomcat/@VERSION@"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 72
      StackMap locals:
      StackMap stack:
            ldc "Apache Tomcat/9.0.x-dev"
            astore 0 /* info */
        22: .line 73
      StackMap locals:
      StackMap stack:
            aload 1 /* built */
            ifnull 23
            aload 1 /* built */
            ldc "@VERSION_BUILT@"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        23: .line 74
      StackMap locals:
      StackMap stack:
            ldc "unknown"
            astore 1 /* built */
        24: .line 75
      StackMap locals:
      StackMap stack:
            aload 2 /* number */
            ifnull 25
            aload 2 /* number */
            ldc "@VERSION_NUMBER@"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        25: .line 76
      StackMap locals:
      StackMap stack:
            ldc "9.0.x"
            astore 2 /* number */
        26: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            putstatic org.apache.catalina.util.ServerInfo.serverInfo:Ljava/lang/String;
        27: .line 79
            aload 1 /* built */
            putstatic org.apache.catalina.util.ServerInfo.serverBuilt:Ljava/lang/String;
        28: .line 80
            aload 2 /* number */
            putstatic org.apache.catalina.util.ServerInfo.serverNumber:Ljava/lang/String;
        end local 3 // java.util.Properties props
        end local 2 // java.lang.String number
        end local 1 // java.lang.String built
        end local 0 // java.lang.String info
        29: .line 81
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1   29     0    info  Ljava/lang/String;
            2   29     1   built  Ljava/lang/String;
            3   29     2  number  Ljava/lang/String;
            4   29     3   props  Ljava/util/Properties;
            8   14     6      is  Ljava/io/InputStream;
           19   20     4       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           8    12      13  any
           5    15      15  any
           4    18      18  Class java.lang.Throwable

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

  public static java.lang.String getServerInfo();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 91
            getstatic org.apache.catalina.util.ServerInfo.serverInfo:Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.String getServerBuilt();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 98
            getstatic org.apache.catalina.util.ServerInfo.serverBuilt:Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.String getServerNumber();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 105
            getstatic org.apache.catalina.util.ServerInfo.serverNumber:Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 109
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Server version: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.catalina.util.ServerInfo.getServerInfo:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 110
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Server built:   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.catalina.util.ServerInfo.getServerBuilt:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 111
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Server number:  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.catalina.util.ServerInfo.getServerNumber:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 112
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "OS Name:        "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 113
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 112
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 114
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "OS Version:     "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 115
            ldc "os.version"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 114
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 116
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Architecture:   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 117
            ldc "os.arch"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 116
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 118
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "JVM Version:    "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 119
            ldc "java.runtime.version"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 118
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 120
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "JVM Vendor:     "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        16: .line 121
            ldc "java.vm.vendor"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 120
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        18: .line 122
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  args  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "ServerInfo.java"