public class org.apache.cassandra.utils.JMXServerUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.JMXServerUtils
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 52
            ldc Lorg/apache/cassandra/utils/JMXServerUtils;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.utils.JMXServerUtils.logger:Lorg/slf4j/Logger;
            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.cassandra.utils.JMXServerUtils this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.utils.JMXServerUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/JMXServerUtils;

  public static javax.management.remote.JMXConnectorServer createJMXServer(int, boolean);
    descriptor: (IZ)Ljavax/management/remote/JMXConnectorServer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // int port
        start local 1 // boolean local
         0: .line 62
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* env */
        start local 2 // java.util.Map env
         1: .line 64
            aconst_null
            astore 3 /* serverAddress */
        start local 3 // java.net.InetAddress serverAddress
         2: .line 65
            iload 1 /* local */
            ifeq 5
         3: .line 67
            invokestatic java.net.InetAddress.getLoopbackAddress:()Ljava/net/InetAddress;
            astore 3 /* serverAddress */
         4: .line 68
            ldc "java.rmi.server.hostname"
            aload 3 /* serverAddress */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 72
      StackMap locals: java.util.Map java.net.InetAddress
      StackMap stack:
            aload 2 /* env */
            aload 3 /* serverAddress */
            iload 1 /* local */
            invokestatic org.apache.cassandra.utils.JMXServerUtils.configureJmxSocketFactories:(Ljava/net/InetAddress;Z)Ljava/util/Map;
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
         6: .line 75
            iload 0 /* port */
         7: .line 76
            aload 2 /* env */
            ldc "jmx.remote.rmi.client.socket.factory"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.rmi.server.RMIClientSocketFactory
         8: .line 77
            aload 2 /* env */
            ldc "jmx.remote.rmi.server.socket.factory"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.rmi.server.RMIServerSocketFactory
         9: .line 75
            invokestatic java.rmi.registry.LocateRegistry.createRegistry:(ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;)Ljava/rmi/registry/Registry;
            astore 4 /* registry */
        start local 4 // java.rmi.registry.Registry registry
        10: .line 82
            aload 2 /* env */
            invokestatic org.apache.cassandra.utils.JMXServerUtils.configureJmxAuthentication:()Ljava/util/Map;
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
        11: .line 88
            aload 2 /* env */
            invokestatic org.apache.cassandra.utils.JMXServerUtils.configureJmxAuthorization:(Ljava/util/Map;)Ljavax/management/remote/MBeanServerForwarder;
            astore 5 /* authzProxy */
        start local 5 // javax.management.remote.MBeanServerForwarder authzProxy
        12: .line 97
            aload 2 /* env */
            ldc "jmx.remote.x.daemon"
            ldc "true"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 102
            ldc "com.sun.management.jmxremote.rmi.port"
            iconst_0
            invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;I)Ljava/lang/Integer;
            invokevirtual java.lang.Integer.intValue:()I
            istore 6 /* rmiPort */
        start local 6 // int rmiPort
        14: .line 111
            new javax.management.remote.rmi.RMIJRMPServerImpl
            dup
            iload 6 /* rmiPort */
        15: .line 112
            aload 2 /* env */
            ldc "jmx.remote.rmi.client.socket.factory"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.rmi.server.RMIClientSocketFactory
        16: .line 113
            aload 2 /* env */
            ldc "jmx.remote.rmi.server.socket.factory"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.rmi.server.RMIServerSocketFactory
        17: .line 114
            aload 2 /* env */
        18: .line 111
            invokespecial javax.management.remote.rmi.RMIJRMPServerImpl.<init>:(ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Ljava/util/Map;)V
            astore 7 /* server */
        start local 7 // javax.management.remote.rmi.RMIJRMPServerImpl server
        19: .line 115
            new javax.management.remote.JMXServiceURL
            dup
            ldc "rmi"
            aconst_null
            iload 6 /* rmiPort */
            invokespecial javax.management.remote.JMXServiceURL.<init>:(Ljava/lang/String;Ljava/lang/String;I)V
            astore 8 /* serviceURL */
        start local 8 // javax.management.remote.JMXServiceURL serviceURL
        20: .line 116
            new javax.management.remote.rmi.RMIConnectorServer
            dup
            aload 8 /* serviceURL */
            aload 2 /* env */
            aload 7 /* server */
            invokestatic java.lang.management.ManagementFactory.getPlatformMBeanServer:()Ljavax/management/MBeanServer;
            invokespecial javax.management.remote.rmi.RMIConnectorServer.<init>:(Ljavax/management/remote/JMXServiceURL;Ljava/util/Map;Ljavax/management/remote/rmi/RMIServerImpl;Ljavax/management/MBeanServer;)V
            astore 9 /* jmxServer */
        start local 9 // javax.management.remote.rmi.RMIConnectorServer jmxServer
        21: .line 119
            aload 5 /* authzProxy */
            ifnull 23
        22: .line 120
            aload 9 /* jmxServer */
            aload 5 /* authzProxy */
            invokevirtual javax.management.remote.rmi.RMIConnectorServer.setMBeanServerForwarder:(Ljavax/management/remote/MBeanServerForwarder;)V
        23: .line 121
      StackMap locals: int int java.util.Map java.net.InetAddress java.rmi.registry.Registry javax.management.remote.MBeanServerForwarder int javax.management.remote.rmi.RMIJRMPServerImpl javax.management.remote.JMXServiceURL javax.management.remote.rmi.RMIConnectorServer
      StackMap stack:
            aload 9 /* jmxServer */
            invokevirtual javax.management.remote.rmi.RMIConnectorServer.start:()V
        24: .line 123
            aload 4 /* registry */
            ldc "jmxrmi"
            aload 7 /* server */
            invokeinterface java.rmi.registry.Registry.rebind:(Ljava/lang/String;Ljava/rmi/Remote;)V
        25: .line 124
            aload 3 /* serverAddress */
            iload 0 /* port */
            invokestatic org.apache.cassandra.utils.JMXServerUtils.logJmxServiceUrl:(Ljava/net/InetAddress;I)V
        26: .line 125
            aload 9 /* jmxServer */
            areturn
        end local 9 // javax.management.remote.rmi.RMIConnectorServer jmxServer
        end local 8 // javax.management.remote.JMXServiceURL serviceURL
        end local 7 // javax.management.remote.rmi.RMIJRMPServerImpl server
        end local 6 // int rmiPort
        end local 5 // javax.management.remote.MBeanServerForwarder authzProxy
        end local 4 // java.rmi.registry.Registry registry
        end local 3 // java.net.InetAddress serverAddress
        end local 2 // java.util.Map env
        end local 1 // boolean local
        end local 0 // int port
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   27     0           port  I
            0   27     1          local  Z
            1   27     2            env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            2   27     3  serverAddress  Ljava/net/InetAddress;
           10   27     4       registry  Ljava/rmi/registry/Registry;
           12   27     5     authzProxy  Ljavax/management/remote/MBeanServerForwarder;
           14   27     6        rmiPort  I
           19   27     7         server  Ljavax/management/remote/rmi/RMIJRMPServerImpl;
           20   27     8     serviceURL  Ljavax/management/remote/JMXServiceURL;
           21   27     9      jmxServer  Ljavax/management/remote/rmi/RMIConnectorServer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      port   
      local  

  private static java.util.Map<java.lang.String, java.lang.Object> configureJmxAuthentication();
    descriptor: ()Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=0
         0: .line 130
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 0 /* env */
        start local 0 // java.util.Map env
         1: .line 131
            ldc "com.sun.management.jmxremote.authenticate"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            ifne 3
         2: .line 132
            aload 0 /* env */
            areturn
         3: .line 145
      StackMap locals: java.util.Map
      StackMap stack:
            ldc "cassandra.jmx.remote.login.config"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* configEntry */
        start local 1 // java.lang.String configEntry
         4: .line 146
            aload 1 /* configEntry */
            ifnull 7
         5: .line 148
            aload 0 /* env */
            ldc "jmx.remote.authenticator"
            new org.apache.cassandra.auth.jmx.AuthenticationProxy
            dup
            aload 1 /* configEntry */
            invokespecial org.apache.cassandra.auth.jmx.AuthenticationProxy.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 149
            goto 11
         7: .line 152
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "com.sun.management.jmxremote.password.file"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* passwordFile */
        start local 2 // java.lang.String passwordFile
         8: .line 153
            aload 2 /* passwordFile */
            ifnull 10
         9: .line 156
            aload 0 /* env */
            ldc "jmx.remote.x.password.file"
            aload 2 /* passwordFile */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 159
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* env */
            ldc "jmx.remote.authenticator"
            new org.apache.cassandra.utils.JMXServerUtils$JMXPluggableAuthenticatorWrapper
            dup
            aload 0 /* env */
            invokespecial org.apache.cassandra.utils.JMXServerUtils$JMXPluggableAuthenticatorWrapper.<init>:(Ljava/util/Map;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.lang.String passwordFile
        11: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* env */
            areturn
        end local 1 // java.lang.String configEntry
        end local 0 // java.util.Map env
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            1   12     0           env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            4   12     1   configEntry  Ljava/lang/String;
            8   11     2  passwordFile  Ljava/lang/String;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private static javax.management.remote.MBeanServerForwarder configureJmxAuthorization(java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljavax/management/remote/MBeanServerForwarder;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.util.Map env
         0: .line 172
            ldc "cassandra.jmx.authorizer"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* authzProxyClass */
        start local 1 // java.lang.String authzProxyClass
         1: .line 173
            aload 1 /* authzProxyClass */
            ifnull 6
         2: .line 175
            aload 1 /* authzProxyClass */
            ldc "JMX authz proxy"
            invokestatic org.apache.cassandra.utils.FBUtilities.construct:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.reflect.InvocationHandler
            astore 2 /* handler */
        start local 2 // java.lang.reflect.InvocationHandler handler
         3: .line 176
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljavax/management/remote/MBeanServerForwarder;
            aastore
            astore 3 /* interfaces */
        start local 3 // java.lang.Class[] interfaces
         4: .line 178
            ldc Ljavax/management/remote/MBeanServerForwarder;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            aload 3 /* interfaces */
            aload 2 /* handler */
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            astore 4 /* proxy */
        start local 4 // java.lang.Object proxy
         5: .line 179
            ldc Ljavax/management/remote/MBeanServerForwarder;
            aload 4 /* proxy */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.management.remote.MBeanServerForwarder
            areturn
        end local 4 // java.lang.Object proxy
        end local 3 // java.lang.Class[] interfaces
        end local 2 // java.lang.reflect.InvocationHandler handler
         6: .line 183
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "com.sun.management.jmxremote.access.file"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* accessFile */
        start local 2 // java.lang.String accessFile
         7: .line 184
            aload 2 /* accessFile */
            ifnull 9
         8: .line 186
            aload 0 /* env */
            ldc "jmx.remote.x.access.file"
            aload 2 /* accessFile */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 188
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.lang.String accessFile
        end local 1 // java.lang.String authzProxyClass
        end local 0 // java.util.Map env
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0              env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   10     1  authzProxyClass  Ljava/lang/String;
            3    6     2          handler  Ljava/lang/reflect/InvocationHandler;
            4    6     3       interfaces  [Ljava/lang/Class;
            5    6     4            proxy  Ljava/lang/Object;
            7   10     2       accessFile  Ljava/lang/String;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Ljavax/management/remote/MBeanServerForwarder;
    MethodParameters:
      Name  Flags
      env   

  private static java.util.Map<java.lang.String, java.lang.Object> configureJmxSocketFactories(java.net.InetAddress, boolean);
    descriptor: (Ljava/net/InetAddress;Z)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // java.net.InetAddress serverAddress
        start local 1 // boolean localOnly
         0: .line 194
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* env */
        start local 2 // java.util.Map env
         1: .line 195
            ldc "com.sun.management.jmxremote.ssl"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            ifeq 20
         2: .line 197
            ldc "com.sun.management.jmxremote.ssl.need.client.auth"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            istore 3 /* requireClientAuth */
        start local 3 // boolean requireClientAuth
         3: .line 198
            aconst_null
            astore 4 /* protocols */
        start local 4 // java.lang.String[] protocols
         4: .line 199
            ldc "com.sun.management.jmxremote.ssl.enabled.protocols"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* protocolList */
        start local 5 // java.lang.String protocolList
         5: .line 200
            aload 5 /* protocolList */
            ifnull 8
         6: .line 202
            ldc "javax.rmi.ssl.client.enabledProtocols"
            aload 5 /* protocolList */
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
         7: .line 203
            aload 5 /* protocolList */
            bipush 44
            invokestatic org.apache.commons.lang3.StringUtils.split:(Ljava/lang/String;C)[Ljava/lang/String;
            astore 4 /* protocols */
         8: .line 206
      StackMap locals: java.net.InetAddress int java.util.Map int java.lang.String[] java.lang.String
      StackMap stack:
            aconst_null
            astore 6 /* ciphers */
        start local 6 // java.lang.String[] ciphers
         9: .line 207
            ldc "com.sun.management.jmxremote.ssl.enabled.cipher.suites"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* cipherList */
        start local 7 // java.lang.String cipherList
        10: .line 208
            aload 7 /* cipherList */
            ifnull 13
        11: .line 210
            ldc "javax.rmi.ssl.client.enabledCipherSuites"
            aload 7 /* cipherList */
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
        12: .line 211
            aload 7 /* cipherList */
            bipush 44
            invokestatic org.apache.commons.lang3.StringUtils.split:(Ljava/lang/String;C)[Ljava/lang/String;
            astore 6 /* ciphers */
        13: .line 214
      StackMap locals: java.lang.String[] java.lang.String
      StackMap stack:
            new javax.rmi.ssl.SslRMIClientSocketFactory
            dup
            invokespecial javax.rmi.ssl.SslRMIClientSocketFactory.<init>:()V
            astore 8 /* clientFactory */
        start local 8 // javax.rmi.ssl.SslRMIClientSocketFactory clientFactory
        14: .line 215
            new javax.rmi.ssl.SslRMIServerSocketFactory
            dup
            aload 6 /* ciphers */
            aload 4 /* protocols */
            iload 3 /* requireClientAuth */
            invokespecial javax.rmi.ssl.SslRMIServerSocketFactory.<init>:([Ljava/lang/String;[Ljava/lang/String;Z)V
            astore 9 /* serverFactory */
        start local 9 // javax.rmi.ssl.SslRMIServerSocketFactory serverFactory
        15: .line 216
            aload 2 /* env */
            ldc "jmx.remote.rmi.server.socket.factory"
            aload 9 /* serverFactory */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 217
            aload 2 /* env */
            ldc "jmx.remote.rmi.client.socket.factory"
            aload 8 /* clientFactory */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 218
            aload 2 /* env */
            ldc "com.sun.jndi.rmi.factory.socket"
            aload 8 /* clientFactory */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 219
            aload 9 /* serverFactory */
            invokestatic org.apache.cassandra.utils.JMXServerUtils.logJmxSslConfig:(Ljavax/rmi/ssl/SslRMIServerSocketFactory;)V
        end local 9 // javax.rmi.ssl.SslRMIServerSocketFactory serverFactory
        end local 8 // javax.rmi.ssl.SslRMIClientSocketFactory clientFactory
        end local 7 // java.lang.String cipherList
        end local 6 // java.lang.String[] ciphers
        end local 5 // java.lang.String protocolList
        end local 4 // java.lang.String[] protocols
        end local 3 // boolean requireClientAuth
        19: .line 220
            goto 24
        20: .line 221
      StackMap locals: java.net.InetAddress int java.util.Map
      StackMap stack:
            iload 1 /* localOnly */
            ifeq 24
        21: .line 223
            aload 2 /* env */
            ldc "jmx.remote.rmi.server.socket.factory"
        22: .line 224
            new org.apache.cassandra.utils.RMIServerSocketFactoryImpl
            dup
            aload 0 /* serverAddress */
            invokespecial org.apache.cassandra.utils.RMIServerSocketFactoryImpl.<init>:(Ljava/net/InetAddress;)V
        23: .line 223
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 227
      StackMap locals:
      StackMap stack:
            aload 2 /* env */
            areturn
        end local 2 // java.util.Map env
        end local 1 // boolean localOnly
        end local 0 // java.net.InetAddress serverAddress
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   25     0      serverAddress  Ljava/net/InetAddress;
            0   25     1          localOnly  Z
            1   25     2                env  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            3   19     3  requireClientAuth  Z
            4   19     4          protocols  [Ljava/lang/String;
            5   19     5       protocolList  Ljava/lang/String;
            9   19     6            ciphers  [Ljava/lang/String;
           10   19     7         cipherList  Ljava/lang/String;
           14   19     8      clientFactory  Ljavax/rmi/ssl/SslRMIClientSocketFactory;
           15   19     9      serverFactory  Ljavax/rmi/ssl/SslRMIServerSocketFactory;
    Signature: (Ljava/net/InetAddress;Z)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
               Name  Flags
      serverAddress  
      localOnly      

  private static void logJmxServiceUrl(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.net.InetAddress serverAddress
        start local 1 // int port
         0: .line 232
            ldc "service:jmx:rmi://%1$s/jndi/rmi://%1$s:%2$d/jmxrmi"
            astore 2 /* urlTemplate */
        start local 2 // java.lang.String urlTemplate
         1: .line 234
            aload 0 /* serverAddress */
            ifnonnull 6
         2: .line 236
            invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 3
            ldc "[::]"
            goto 4
      StackMap locals: java.lang.String
      StackMap stack:
         3: ldc "0.0.0.0"
      StackMap locals:
      StackMap stack: java.lang.String
         4: astore 3 /* hostName */
        start local 3 // java.lang.String hostName
         5: .line 237
            goto 10
        end local 3 // java.lang.String hostName
         6: .line 241
      StackMap locals:
      StackMap stack:
            aload 0 /* serverAddress */
            instanceof java.net.Inet6Address
            ifeq 8
         7: .line 242
            new java.lang.StringBuilder
            dup
            bipush 91
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* serverAddress */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 9
         8: .line 243
      StackMap locals:
      StackMap stack:
            aload 0 /* serverAddress */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
         9: .line 241
      StackMap locals:
      StackMap stack: java.lang.String
            astore 3 /* hostName */
        start local 3 // java.lang.String hostName
        10: .line 245
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* urlTemplate */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* hostName */
            aastore
            dup
            iconst_1
            iload 1 /* port */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 4 /* url */
        start local 4 // java.lang.String url
        11: .line 246
            getstatic org.apache.cassandra.utils.JMXServerUtils.logger:Lorg/slf4j/Logger;
            ldc "Configured JMX server at: {}"
            aload 4 /* url */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 247
            return
        end local 4 // java.lang.String url
        end local 3 // java.lang.String hostName
        end local 2 // java.lang.String urlTemplate
        end local 1 // int port
        end local 0 // java.net.InetAddress serverAddress
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0  serverAddress  Ljava/net/InetAddress;
            0   13     1           port  I
            1   13     2    urlTemplate  Ljava/lang/String;
            5    6     3       hostName  Ljava/lang/String;
           10   13     3       hostName  Ljava/lang/String;
           11   13     4            url  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      serverAddress  
      port           

  private static void logJmxSslConfig(javax.rmi.ssl.SslRMIServerSocketFactory);
    descriptor: (Ljavax/rmi/ssl/SslRMIServerSocketFactory;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=1, args_size=1
        start local 0 // javax.rmi.ssl.SslRMIServerSocketFactory serverFactory
         0: .line 251
            getstatic org.apache.cassandra.utils.JMXServerUtils.logger:Lorg/slf4j/Logger;
            ldc "JMX SSL configuration. { protocols: [{}], cipher_suites: [{}], require_client_auth: {} }"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 252
            aload 0 /* serverFactory */
            invokevirtual javax.rmi.ssl.SslRMIServerSocketFactory.getEnabledProtocols:()[Ljava/lang/String;
            ifnonnull 3
         2: .line 253
            ldc "'JVM defaults'"
            goto 4
         3: .line 254
      StackMap locals: javax.rmi.ssl.SslRMIServerSocketFactory
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int
            aload 0 /* serverFactory */
            invokevirtual javax.rmi.ssl.SslRMIServerSocketFactory.getEnabledProtocols:()[Ljava/lang/String;
            invokestatic java.util.Arrays.stream:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            ldc "','"
            ldc "'"
            ldc "'"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
      StackMap locals: javax.rmi.ssl.SslRMIServerSocketFactory
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.Object
         4: aastore
            dup
            iconst_1
         5: .line 255
            aload 0 /* serverFactory */
            invokevirtual javax.rmi.ssl.SslRMIServerSocketFactory.getEnabledCipherSuites:()[Ljava/lang/String;
            ifnonnull 7
         6: .line 256
            ldc "'JVM defaults'"
            goto 8
         7: .line 257
      StackMap locals: javax.rmi.ssl.SslRMIServerSocketFactory
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int
            aload 0 /* serverFactory */
            invokevirtual javax.rmi.ssl.SslRMIServerSocketFactory.getEnabledCipherSuites:()[Ljava/lang/String;
            invokestatic java.util.Arrays.stream:([Ljava/lang/Object;)Ljava/util/stream/Stream;
            ldc "','"
            ldc "'"
            ldc "'"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
      StackMap locals: javax.rmi.ssl.SslRMIServerSocketFactory
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.Object
         8: aastore
            dup
            iconst_2
         9: .line 258
            aload 0 /* serverFactory */
            invokevirtual javax.rmi.ssl.SslRMIServerSocketFactory.getNeedClientAuth:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
        10: .line 251
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        11: .line 259
            return
        end local 0 // javax.rmi.ssl.SslRMIServerSocketFactory serverFactory
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0  serverFactory  Ljavax/rmi/ssl/SslRMIServerSocketFactory;
    MethodParameters:
               Name  Flags
      serverFactory  
}
SourceFile: "JMXServerUtils.java"
NestMembers:
  org.apache.cassandra.utils.JMXServerUtils$JMXPluggableAuthenticatorWrapper
InnerClasses:
  private JMXPluggableAuthenticatorWrapper = org.apache.cassandra.utils.JMXServerUtils$JMXPluggableAuthenticatorWrapper of org.apache.cassandra.utils.JMXServerUtils