public class org.springframework.jmx.access.MBeanClientInterceptor implements org.aopalliance.intercept.MethodInterceptor, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.jmx.access.MBeanClientInterceptor
  super_class: java.lang.Object
{
  protected final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private javax.management.MBeanServerConnection server;
    descriptor: Ljavax/management/MBeanServerConnection;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private javax.management.remote.JMXServiceURL serviceUrl;
    descriptor: Ljavax/management/remote/JMXServiceURL;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.util.Map<java.lang.String, ?> environment;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;*>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.String agentId;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private boolean connectOnStartup;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean refreshOnConnectFailure;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private javax.management.ObjectName objectName;
    descriptor: Ljavax/management/ObjectName;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private boolean useStrictCasing;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Class<?> managementInterface;
    descriptor: Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.ClassLoader beanClassLoader;
    descriptor: Ljava/lang/ClassLoader;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final org.springframework.jmx.access.ConnectorDelegate connector;
    descriptor: Lorg/springframework/jmx/access/ConnectorDelegate;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private javax.management.MBeanServerConnection serverToUse;
    descriptor: Ljavax/management/MBeanServerConnection;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private javax.management.MBeanServerInvocationHandler invocationHandler;
    descriptor: Ljavax/management/MBeanServerInvocationHandler;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.util.Map<java.lang.String, javax.management.MBeanAttributeInfo> allowedAttributes;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljavax/management/MBeanAttributeInfo;>;

  private java.util.Map<org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey, javax.management.MBeanOperationInfo> allowedOperations;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Lorg/springframework/jmx/access/MBeanClientInterceptor$MethodCacheKey;Ljavax/management/MBeanOperationInfo;>;

  private final java.util.Map<java.lang.reflect.Method, java.lang.String[]> signatureCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/reflect/Method;[Ljava/lang/String;>;

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 94
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 98
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.logger:Lorg/apache/commons/logging/Log;
         2: .line 112
            aload 0 /* this */
            iconst_1
            putfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
         3: .line 114
            aload 0 /* this */
            iconst_0
            putfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
         4: .line 119
            aload 0 /* this */
            iconst_1
            putfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
         5: .line 125
            aload 0 /* this */
            invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.beanClassLoader:Ljava/lang/ClassLoader;
         6: .line 127
            aload 0 /* this */
            new org.springframework.jmx.access.ConnectorDelegate
            dup
            invokespecial org.springframework.jmx.access.ConnectorDelegate.<init>:()V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.connector:Lorg/springframework/jmx/access/ConnectorDelegate;
         7: .line 135
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
         8: .line 137
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
         9: .line 139
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.signatureCache:Ljava/util/Map;
        10: .line 141
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
        11: .line 94
            return
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;

  public void setServer(javax.management.MBeanServerConnection);
    descriptor: (Ljavax/management/MBeanServerConnection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // javax.management.MBeanServerConnection server
         0: .line 149
            aload 0 /* this */
            aload 1 /* server */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
         1: .line 150
            return
        end local 1 // javax.management.MBeanServerConnection server
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  server  Ljavax/management/MBeanServerConnection;
    MethodParameters:
        Name  Flags
      server  

  public void setServiceUrl(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.String url
         0: .line 156
            aload 0 /* this */
            new javax.management.remote.JMXServiceURL
            dup
            aload 1 /* url */
            invokespecial javax.management.remote.JMXServiceURL.<init>:(Ljava/lang/String;)V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.serviceUrl:Ljavax/management/remote/JMXServiceURL;
         1: .line 157
            return
        end local 1 // java.lang.String url
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1   url  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException
    MethodParameters:
      Name  Flags
      url   

  public void setEnvironment(java.util.Map<java.lang.String, ?>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.util.Map environment
         0: .line 164
            aload 0 /* this */
            aload 1 /* environment */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.environment:Ljava/util/Map;
         1: .line 165
            return
        end local 1 // java.util.Map environment
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  environment  Ljava/util/Map<Ljava/lang/String;*>;
    Signature: (Ljava/util/Map<Ljava/lang/String;*>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      environment  

  public java.util.Map<java.lang.String, ?> getEnvironment();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 176
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.environment:Ljava/util/Map;
            areturn
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
    Signature: ()Ljava/util/Map<Ljava/lang/String;*>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setAgentId(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.String agentId
         0: .line 188
            aload 0 /* this */
            aload 1 /* agentId */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.agentId:Ljava/lang/String;
         1: .line 189
            return
        end local 1 // java.lang.String agentId
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  agentId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      agentId  

  public void setConnectOnStartup(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // boolean connectOnStartup
         0: .line 197
            aload 0 /* this */
            iload 1 /* connectOnStartup */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
         1: .line 198
            return
        end local 1 // boolean connectOnStartup
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  connectOnStartup  Z
    MethodParameters:
                  Name  Flags
      connectOnStartup  

  public void setRefreshOnConnectFailure(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // boolean refreshOnConnectFailure
         0: .line 207
            aload 0 /* this */
            iload 1 /* refreshOnConnectFailure */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
         1: .line 208
            return
        end local 1 // boolean refreshOnConnectFailure
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  refreshOnConnectFailure  Z
    MethodParameters:
                         Name  Flags
      refreshOnConnectFailure  

  public void setObjectName(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.Object objectName
         0: .line 215
            aload 0 /* this */
            aload 1 /* objectName */
            invokestatic org.springframework.jmx.support.ObjectNameManager.getInstance:(Ljava/lang/Object;)Ljavax/management/ObjectName;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
         1: .line 216
            return
        end local 1 // java.lang.Object objectName
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  objectName  Ljava/lang/Object;
    Exceptions:
      throws javax.management.MalformedObjectNameException
    MethodParameters:
            Name  Flags
      objectName  

  public void setUseStrictCasing(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // boolean useStrictCasing
         0: .line 226
            aload 0 /* this */
            iload 1 /* useStrictCasing */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
         1: .line 227
            return
        end local 1 // boolean useStrictCasing
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  useStrictCasing  Z
    MethodParameters:
                 Name  Flags
      useStrictCasing  

  public void setManagementInterface(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.Class managementInterface
         0: .line 235
            aload 0 /* this */
            aload 1 /* managementInterface */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.managementInterface:Ljava/lang/Class;
         1: .line 236
            return
        end local 1 // java.lang.Class managementInterface
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  managementInterface  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                     Name  Flags
      managementInterface  

  protected final java.lang.Class<?> getManagementInterface();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 244
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.managementInterface:Ljava/lang/Class;
            areturn
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
    Signature: ()Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setBeanClassLoader(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.ClassLoader beanClassLoader
         0: .line 249
            aload 0 /* this */
            aload 1 /* beanClassLoader */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.beanClassLoader:Ljava/lang/ClassLoader;
         1: .line 250
            return
        end local 1 // java.lang.ClassLoader beanClassLoader
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    2     1  beanClassLoader  Ljava/lang/ClassLoader;
    MethodParameters:
                 Name  Flags
      beanClassLoader  

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 259
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
            ifnull 2
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
            ifeq 2
         1: .line 260
            new java.lang.IllegalArgumentException
            dup
            ldc "'refreshOnConnectFailure' does not work when setting a 'server' reference. Prefer 'serviceUrl' etc instead."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
            ifeq 4
         3: .line 264
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         4: .line 266
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;

  public void prepare();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 273
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 274
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
            ifnull 4
         2: .line 275
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
         3: .line 276
            goto 6
         4: .line 278
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
         5: .line 279
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.connector:Lorg/springframework/jmx/access/ConnectorDelegate;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serviceUrl:Ljavax/management/remote/JMXServiceURL;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.environment:Ljava/util/Map;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.agentId:Ljava/lang/String;
            invokevirtual org.springframework.jmx.access.ConnectorDelegate.connect:(Ljavax/management/remote/JMXServiceURL;Ljava/util/Map;Ljava/lang/String;)Ljavax/management/MBeanServerConnection;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
         6: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
         7: .line 282
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
            ifeq 18
         8: .line 283
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            ifnull 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: ldc "No ObjectName set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
        11: .line 285
            aload 0 /* this */
        12: new javax.management.MBeanServerInvocationHandler
            dup
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
        13: .line 286
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.managementInterface:Ljava/lang/Class;
            ifnull 14
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.managementInterface:Ljava/lang/Class;
            invokestatic javax.management.JMX.isMXBeanInterface:(Ljava/lang/Class;)Z
            ifeq 14
            iconst_1
            goto 15
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor java.lang.Object
      StackMap stack: org.springframework.jmx.access.MBeanClientInterceptor new 12 new 12 javax.management.MBeanServerConnection javax.management.ObjectName
        14: iconst_0
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor java.lang.Object
      StackMap stack: org.springframework.jmx.access.MBeanClientInterceptor new 12 new 12 javax.management.MBeanServerConnection javax.management.ObjectName int
        15: invokespecial javax.management.MBeanServerInvocationHandler.<init>:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Z)V
        16: .line 285
            putfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
        17: .line 287
            goto 19
        18: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.retrieveMBeanInfo:(Ljavax/management/MBeanServerConnection;)V
        19: .line 273
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        20: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: aload 1
            monitorexit
        22: athrow
        23: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
      Exception table:
        from    to  target  type
           1    20      21  any
          21    22      21  any

  private void retrieveMBeanInfo(javax.management.MBeanServerConnection);
    descriptor: (Ljavax/management/MBeanServerConnection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // javax.management.MBeanServerConnection server
         0: .line 302
            aload 1 /* server */
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            invokeinterface javax.management.MBeanServerConnection.getMBeanInfo:(Ljavax/management/ObjectName;)Ljavax/management/MBeanInfo;
            astore 2 /* info */
        start local 2 // javax.management.MBeanInfo info
         1: .line 304
            aload 2 /* info */
            invokevirtual javax.management.MBeanInfo.getAttributes:()[Ljavax/management/MBeanAttributeInfo;
            astore 3 /* attributeInfo */
        start local 3 // javax.management.MBeanAttributeInfo[] attributeInfo
         2: .line 305
            aload 0 /* this */
            aload 3 /* attributeInfo */
            arraylength
            invokestatic org.springframework.util.CollectionUtils.newHashMap:(I)Ljava/util/HashMap;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
         3: .line 306
            aload 3 /* attributeInfo */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 7
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor javax.management.MBeanServerConnection javax.management.MBeanInfo javax.management.MBeanAttributeInfo[] top int int javax.management.MBeanAttributeInfo[]
      StackMap stack:
         4: aload 7
            iload 5
            aaload
            astore 4 /* infoEle */
        start local 4 // javax.management.MBeanAttributeInfo infoEle
         5: .line 307
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
            aload 4 /* infoEle */
            invokevirtual javax.management.MBeanAttributeInfo.getName:()Ljava/lang/String;
            aload 4 /* infoEle */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // javax.management.MBeanAttributeInfo infoEle
         6: .line 306
            iinc 5 1
      StackMap locals:
      StackMap stack:
         7: iload 5
            iload 6
            if_icmplt 4
         8: .line 310
            aload 2 /* info */
            invokevirtual javax.management.MBeanInfo.getOperations:()[Ljavax/management/MBeanOperationInfo;
            astore 4 /* operationInfo */
        start local 4 // javax.management.MBeanOperationInfo[] operationInfo
         9: .line 311
            aload 0 /* this */
            aload 4 /* operationInfo */
            arraylength
            invokestatic org.springframework.util.CollectionUtils.newHashMap:(I)Ljava/util/HashMap;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
        10: .line 312
            aload 4 /* operationInfo */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 15
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor javax.management.MBeanServerConnection javax.management.MBeanInfo javax.management.MBeanAttributeInfo[] javax.management.MBeanOperationInfo[] top int int javax.management.MBeanOperationInfo[]
      StackMap stack:
        11: aload 8
            iload 6
            aaload
            astore 5 /* infoEle */
        start local 5 // javax.management.MBeanOperationInfo infoEle
        12: .line 313
            aload 5 /* infoEle */
            invokevirtual javax.management.MBeanOperationInfo.getSignature:()[Ljavax/management/MBeanParameterInfo;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.beanClassLoader:Ljava/lang/ClassLoader;
            invokestatic org.springframework.jmx.support.JmxUtils.parameterInfoToTypes:([Ljavax/management/MBeanParameterInfo;Ljava/lang/ClassLoader;)[Ljava/lang/Class;
            astore 9 /* paramTypes */
        start local 9 // java.lang.Class[] paramTypes
        13: .line 314
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
            new org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey
            dup
            aload 5 /* infoEle */
            invokevirtual javax.management.MBeanOperationInfo.getName:()Ljava/lang/String;
            aload 9 /* paramTypes */
            invokespecial org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey.<init>:(Ljava/lang/String;[Ljava/lang/Class;)V
            aload 5 /* infoEle */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 9 // java.lang.Class[] paramTypes
        end local 5 // javax.management.MBeanOperationInfo infoEle
        14: .line 312
            iinc 6 1
      StackMap locals:
      StackMap stack:
        15: iload 6
            iload 7
            if_icmplt 11
        end local 4 // javax.management.MBeanOperationInfo[] operationInfo
        end local 3 // javax.management.MBeanAttributeInfo[] attributeInfo
        end local 2 // javax.management.MBeanInfo info
        16: .line 316
            goto 32
        17: .line 317
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor javax.management.MBeanServerConnection
      StackMap stack: java.lang.ClassNotFoundException
            astore 2 /* ex */
        start local 2 // java.lang.ClassNotFoundException ex
        18: .line 318
            new org.springframework.jmx.access.MBeanInfoRetrievalException
            dup
            ldc "Unable to locate class specified in method signature"
            aload 2 /* ex */
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.ClassNotFoundException ex
        19: .line 320
      StackMap locals:
      StackMap stack: javax.management.IntrospectionException
            astore 2 /* ex */
        start local 2 // javax.management.IntrospectionException ex
        20: .line 321
            new org.springframework.jmx.access.MBeanInfoRetrievalException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to obtain MBean info for bean ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.management.IntrospectionException ex
        21: .line 323
      StackMap locals:
      StackMap stack: javax.management.InstanceNotFoundException
            astore 2 /* ex */
        start local 2 // javax.management.InstanceNotFoundException ex
        22: .line 325
            new org.springframework.jmx.access.MBeanInfoRetrievalException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to obtain MBean info for bean ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        23: .line 326
            ldc "]: it is likely that this bean was unregistered during the proxy creation process"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 327
            aload 2 /* ex */
        25: .line 325
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.management.InstanceNotFoundException ex
        26: .line 329
      StackMap locals:
      StackMap stack: javax.management.ReflectionException
            astore 2 /* ex */
        start local 2 // javax.management.ReflectionException ex
        27: .line 330
            new org.springframework.jmx.access.MBeanInfoRetrievalException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to read MBean info for bean [ "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.management.ReflectionException ex
        28: .line 332
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* ex */
        start local 2 // java.io.IOException ex
        29: .line 333
            new org.springframework.jmx.access.MBeanInfoRetrievalException
            dup
            ldc "An IOException occurred when communicating with the MBeanServer. It is likely that you are communicating with a remote MBeanServer. Check the inner exception for exact details."
        30: .line 335
            aload 2 /* ex */
        31: .line 333
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException ex
        32: .line 337
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.management.MBeanServerConnection server
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   33     0           this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   33     1         server  Ljavax/management/MBeanServerConnection;
            1   16     2           info  Ljavax/management/MBeanInfo;
            2   16     3  attributeInfo  [Ljavax/management/MBeanAttributeInfo;
            5    6     4        infoEle  Ljavax/management/MBeanAttributeInfo;
            9   16     4  operationInfo  [Ljavax/management/MBeanOperationInfo;
           12   14     5        infoEle  Ljavax/management/MBeanOperationInfo;
           13   14     9     paramTypes  [Ljava/lang/Class;
           18   19     2             ex  Ljava/lang/ClassNotFoundException;
           20   21     2             ex  Ljavax/management/IntrospectionException;
           22   26     2             ex  Ljavax/management/InstanceNotFoundException;
           27   28     2             ex  Ljavax/management/ReflectionException;
           29   32     2             ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0    16      17  Class java.lang.ClassNotFoundException
           0    16      19  Class javax.management.IntrospectionException
           0    16      21  Class javax.management.InstanceNotFoundException
           0    16      26  Class javax.management.ReflectionException
           0    16      28  Class java.io.IOException
    Exceptions:
      throws org.springframework.jmx.access.MBeanInfoRetrievalException
    MethodParameters:
        Name  Flags
      server  

  protected boolean isPrepared();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 344
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 345
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: aload 1
            monitorexit
         4: ireturn
         5: .line 344
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  public java.lang.Object invoke(org.aopalliance.intercept.MethodInvocation);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation invocation
         0: .line 362
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 363
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.isPrepared:()Z
            ifne 3
         2: .line 364
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         3: .line 362
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2
            monitorexit
         4: goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: aload 2
            monitorexit
         6: athrow
         7: .line 368
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* invocation */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.doInvoke:(Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
         8: areturn
         9: .line 370
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* ex */
        start local 2 // java.lang.Exception ex
        10: .line 371
            aload 0 /* this */
            aload 1 /* invocation */
            aload 2 /* ex */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.handleConnectFailure:(Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Exception;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Exception ex
        end local 1 // org.aopalliance.intercept.MethodInvocation invocation
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   11     1  invocation  Lorg/aopalliance/intercept/MethodInvocation;
           10   11     2          ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
           7     8       9  Class org.springframework.jmx.access.MBeanConnectFailureException
           7     8       9  Class java.io.IOException
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      invocation  

  protected java.lang.Object handleConnectFailure(org.aopalliance.intercept.MethodInvocation, java.lang.Exception);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Exception;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation invocation
        start local 2 // java.lang.Exception ex
         0: .line 389
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
            ifeq 9
         1: .line 390
            ldc "Could not connect to JMX server - retrying"
            astore 3 /* msg */
        start local 3 // java.lang.String msg
         2: .line 391
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 5
         3: .line 392
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.logger:Lorg/apache/commons/logging/Log;
            aload 3 /* msg */
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         4: .line 393
            goto 7
         5: .line 394
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isWarnEnabled:()Z
            ifeq 7
         6: .line 395
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.logger:Lorg/apache/commons/logging/Log;
            aload 3 /* msg */
            invokeinterface org.apache.commons.logging.Log.warn:(Ljava/lang/Object;)V
         7: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         8: .line 398
            aload 0 /* this */
            aload 1 /* invocation */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.doInvoke:(Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.String msg
         9: .line 401
      StackMap locals:
      StackMap stack:
            aload 2 /* ex */
            athrow
        end local 2 // java.lang.Exception ex
        end local 1 // org.aopalliance.intercept.MethodInvocation invocation
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   10     1  invocation  Lorg/aopalliance/intercept/MethodInvocation;
            0   10     2          ex  Ljava/lang/Exception;
            2    9     3         msg  Ljava/lang/String;
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      invocation  
      ex          

  protected java.lang.Object doInvoke(org.aopalliance.intercept.MethodInvocation);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation invocation
         0: .line 415
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         1: .line 418
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
            ifnull 4
         2: .line 419
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getThis:()Ljava/lang/Object;
            aload 2 /* method */
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getArguments:()[Ljava/lang/Object;
            invokevirtual javax.management.MBeanServerInvocationHandler.invoke:(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* result */
        start local 3 // java.lang.Object result
         3: .line 420
            goto 9
        end local 3 // java.lang.Object result
         4: .line 422
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 2 /* method */
            invokestatic org.springframework.beans.BeanUtils.findPropertyForMethod:(Ljava/lang/reflect/Method;)Ljava/beans/PropertyDescriptor;
            astore 4 /* pd */
        start local 4 // java.beans.PropertyDescriptor pd
         5: .line 423
            aload 4 /* pd */
            ifnull 8
         6: .line 424
            aload 0 /* this */
            aload 4 /* pd */
            aload 1 /* invocation */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.invokeAttribute:(Ljava/beans/PropertyDescriptor;Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
            astore 3 /* result */
        start local 3 // java.lang.Object result
         7: .line 425
            goto 9
        end local 3 // java.lang.Object result
         8: .line 427
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method top java.beans.PropertyDescriptor
      StackMap stack:
            aload 0 /* this */
            aload 2 /* method */
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getArguments:()[Ljava/lang/Object;
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.invokeOperation:(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* result */
        end local 4 // java.beans.PropertyDescriptor pd
        start local 3 // java.lang.Object result
         9: .line 430
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 3 /* result */
            new org.springframework.core.MethodParameter
            dup
            aload 2 /* method */
            iconst_m1
            invokespecial org.springframework.core.MethodParameter.<init>:(Ljava/lang/reflect/Method;I)V
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.convertResultValueIfNecessary:(Ljava/lang/Object;Lorg/springframework/core/MethodParameter;)Ljava/lang/Object;
        10: areturn
        end local 3 // java.lang.Object result
        11: .line 432
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method
      StackMap stack: javax.management.MBeanException
            astore 3 /* ex */
        start local 3 // javax.management.MBeanException ex
        12: .line 433
            aload 3 /* ex */
            invokevirtual javax.management.MBeanException.getTargetException:()Ljava/lang/Exception;
            athrow
        end local 3 // javax.management.MBeanException ex
        13: .line 435
      StackMap locals:
      StackMap stack: javax.management.RuntimeMBeanException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeMBeanException ex
        14: .line 436
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeMBeanException.getTargetException:()Ljava/lang/RuntimeException;
            athrow
        end local 3 // javax.management.RuntimeMBeanException ex
        15: .line 438
      StackMap locals:
      StackMap stack: javax.management.RuntimeErrorException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeErrorException ex
        16: .line 439
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeErrorException.getTargetError:()Ljava/lang/Error;
            athrow
        end local 3 // javax.management.RuntimeErrorException ex
        17: .line 441
      StackMap locals:
      StackMap stack: javax.management.RuntimeOperationsException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeOperationsException ex
        18: .line 443
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeOperationsException.getTargetException:()Ljava/lang/RuntimeException;
            astore 4 /* rex */
        start local 4 // java.lang.RuntimeException rex
        19: .line 444
            aload 4 /* rex */
            instanceof javax.management.RuntimeMBeanException
            ifeq 21
        20: .line 445
            aload 4 /* rex */
            checkcast javax.management.RuntimeMBeanException
            invokevirtual javax.management.RuntimeMBeanException.getTargetException:()Ljava/lang/RuntimeException;
            athrow
        21: .line 447
      StackMap locals: javax.management.RuntimeOperationsException java.lang.RuntimeException
      StackMap stack:
            aload 4 /* rex */
            instanceof javax.management.RuntimeErrorException
            ifeq 23
        22: .line 448
            aload 4 /* rex */
            checkcast javax.management.RuntimeErrorException
            invokevirtual javax.management.RuntimeErrorException.getTargetError:()Ljava/lang/Error;
            athrow
        23: .line 451
      StackMap locals:
      StackMap stack:
            aload 4 /* rex */
            athrow
        end local 4 // java.lang.RuntimeException rex
        end local 3 // javax.management.RuntimeOperationsException ex
        24: .line 454
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method
      StackMap stack: javax.management.OperationsException
            astore 3 /* ex */
        start local 3 // javax.management.OperationsException ex
        25: .line 455
            aload 2 /* method */
            aload 3 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.util.ReflectionUtils.declaresException:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
            ifeq 27
        26: .line 456
            aload 3 /* ex */
            athrow
        27: .line 459
      StackMap locals: javax.management.OperationsException
      StackMap stack:
            new org.springframework.jmx.access.InvalidInvocationException
            dup
            aload 3 /* ex */
            invokevirtual javax.management.OperationsException.getMessage:()Ljava/lang/String;
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.management.OperationsException ex
        28: .line 462
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method
      StackMap stack: javax.management.JMException
            astore 3 /* ex */
        start local 3 // javax.management.JMException ex
        29: .line 463
            aload 2 /* method */
            aload 3 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.util.ReflectionUtils.declaresException:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
            ifeq 31
        30: .line 464
            aload 3 /* ex */
            athrow
        31: .line 467
      StackMap locals: javax.management.JMException
      StackMap stack:
            new org.springframework.jmx.access.InvocationFailureException
            dup
            ldc "JMX access failed"
            aload 3 /* ex */
            invokespecial org.springframework.jmx.access.InvocationFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.management.JMException ex
        32: .line 470
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor org.aopalliance.intercept.MethodInvocation java.lang.reflect.Method
      StackMap stack: java.io.IOException
            astore 3 /* ex */
        start local 3 // java.io.IOException ex
        33: .line 471
            aload 2 /* method */
            aload 3 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.util.ReflectionUtils.declaresException:(Ljava/lang/reflect/Method;Ljava/lang/Class;)Z
            ifeq 35
        34: .line 472
            aload 3 /* ex */
            athrow
        35: .line 475
      StackMap locals: java.io.IOException
      StackMap stack:
            new org.springframework.jmx.access.MBeanConnectFailureException
            dup
            ldc "I/O failure during JMX access"
            aload 3 /* ex */
            invokespecial org.springframework.jmx.access.MBeanConnectFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.io.IOException ex
        end local 2 // java.lang.reflect.Method method
        end local 1 // org.aopalliance.intercept.MethodInvocation invocation
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   36     0        this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   36     1  invocation  Lorg/aopalliance/intercept/MethodInvocation;
            1   36     2      method  Ljava/lang/reflect/Method;
            3    4     3      result  Ljava/lang/Object;
            7    8     3      result  Ljava/lang/Object;
            9   11     3      result  Ljava/lang/Object;
            5    9     4          pd  Ljava/beans/PropertyDescriptor;
           12   13     3          ex  Ljavax/management/MBeanException;
           14   15     3          ex  Ljavax/management/RuntimeMBeanException;
           16   17     3          ex  Ljavax/management/RuntimeErrorException;
           18   24     3          ex  Ljavax/management/RuntimeOperationsException;
           19   24     4         rex  Ljava/lang/RuntimeException;
           25   28     3          ex  Ljavax/management/OperationsException;
           29   32     3          ex  Ljavax/management/JMException;
           33   36     3          ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1    10      11  Class javax.management.MBeanException
           1    10      13  Class javax.management.RuntimeMBeanException
           1    10      15  Class javax.management.RuntimeErrorException
           1    10      17  Class javax.management.RuntimeOperationsException
           1    10      24  Class javax.management.OperationsException
           1    10      28  Class javax.management.JMException
           1    10      32  Class java.io.IOException
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      invocation  

  private java.lang.Object invokeAttribute(java.beans.PropertyDescriptor, org.aopalliance.intercept.MethodInvocation);
    descriptor: (Ljava/beans/PropertyDescriptor;Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.beans.PropertyDescriptor pd
        start local 2 // org.aopalliance.intercept.MethodInvocation invocation
         0: .line 484
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No MBeanServerConnection available"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 486
            aload 1 /* pd */
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
            invokestatic org.springframework.jmx.support.JmxUtils.getAttributeName:(Ljava/beans/PropertyDescriptor;Z)Ljava/lang/String;
            astore 3 /* attributeName */
        start local 3 // java.lang.String attributeName
         4: .line 487
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
            aload 3 /* attributeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.management.MBeanAttributeInfo
            astore 4 /* inf */
        start local 4 // javax.management.MBeanAttributeInfo inf
         5: .line 490
            aload 4 /* inf */
            ifnonnull 9
         6: .line 491
            new org.springframework.jmx.access.InvalidInvocationException
            dup
         7: .line 492
            new java.lang.StringBuilder
            dup
            ldc "Attribute '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' is not exposed on the management interface"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 491
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 495
      StackMap locals: java.lang.String javax.management.MBeanAttributeInfo
      StackMap stack:
            aload 2 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            aload 1 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getReadMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.equals:(Ljava/lang/Object;)Z
            ifeq 13
        10: .line 496
            aload 4 /* inf */
            invokevirtual javax.management.MBeanAttributeInfo.isReadable:()Z
            ifeq 12
        11: .line 497
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            aload 3 /* attributeName */
            invokeinterface javax.management.MBeanServerConnection.getAttribute:(Ljavax/management/ObjectName;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        12: .line 500
      StackMap locals:
      StackMap stack:
            new org.springframework.jmx.access.InvalidInvocationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Attribute '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* attributeName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' is not readable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 503
      StackMap locals:
      StackMap stack:
            aload 2 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            aload 1 /* pd */
            invokevirtual java.beans.PropertyDescriptor.getWriteMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.equals:(Ljava/lang/Object;)Z
            ifeq 18
        14: .line 504
            aload 4 /* inf */
            invokevirtual javax.management.MBeanAttributeInfo.isWritable:()Z
            ifeq 17
        15: .line 505
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            new javax.management.Attribute
            dup
            aload 3 /* attributeName */
            aload 2 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getArguments:()[Ljava/lang/Object;
            iconst_0
            aaload
            invokespecial javax.management.Attribute.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            invokeinterface javax.management.MBeanServerConnection.setAttribute:(Ljavax/management/ObjectName;Ljavax/management/Attribute;)V
        16: .line 506
            aconst_null
            areturn
        17: .line 509
      StackMap locals:
      StackMap stack:
            new org.springframework.jmx.access.InvalidInvocationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Attribute '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* attributeName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' is not writable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 513
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
        19: .line 514
            new java.lang.StringBuilder
            dup
            ldc "Method ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] is neither a bean property getter nor a setter"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 513
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // javax.management.MBeanAttributeInfo inf
        end local 3 // java.lang.String attributeName
        end local 2 // org.aopalliance.intercept.MethodInvocation invocation
        end local 1 // java.beans.PropertyDescriptor pd
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0           this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   21     1             pd  Ljava/beans/PropertyDescriptor;
            0   21     2     invocation  Lorg/aopalliance/intercept/MethodInvocation;
            4   21     3  attributeName  Ljava/lang/String;
            5   21     4            inf  Ljavax/management/MBeanAttributeInfo;
    Exceptions:
      throws javax.management.JMException, java.io.IOException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      pd          
      invocation  

  private java.lang.Object invokeOperation(java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.reflect.Method method
        start local 2 // java.lang.Object[] args
         0: .line 526
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No MBeanServerConnection available"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 528
            new org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey
            dup
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            invokespecial org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey.<init>:(Ljava/lang/String;[Ljava/lang/Class;)V
            astore 3 /* key */
        start local 3 // org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey key
         4: .line 529
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
            aload 3 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.management.MBeanOperationInfo
            astore 4 /* info */
        start local 4 // javax.management.MBeanOperationInfo info
         5: .line 530
            aload 4 /* info */
            ifnonnull 9
         6: .line 531
            new org.springframework.jmx.access.InvalidInvocationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Operation '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 532
            ldc "' is not exposed on the management interface"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 531
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 536
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey javax.management.MBeanOperationInfo
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.signatureCache:Ljava/util/Map;
            dup
            astore 6
            monitorenter
        10: .line 537
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.signatureCache:Ljava/util/Map;
            aload 1 /* method */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 5 /* signature */
        start local 5 // java.lang.String[] signature
        11: .line 538
            aload 5 /* signature */
            ifnonnull 14
        12: .line 539
            aload 1 /* method */
            invokestatic org.springframework.jmx.support.JmxUtils.getMethodSignature:(Ljava/lang/reflect/Method;)[Ljava/lang/String;
            astore 5 /* signature */
        13: .line 540
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.signatureCache:Ljava/util/Map;
            aload 1 /* method */
            aload 5 /* signature */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 536
      StackMap locals: java.lang.String[] java.util.Map
      StackMap stack:
            aload 6
            monitorexit
        15: goto 18
        end local 5 // java.lang.String[] signature
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey javax.management.MBeanOperationInfo top java.util.Map
      StackMap stack: java.lang.Throwable
        16: aload 6
            monitorexit
        17: athrow
        start local 5 // java.lang.String[] signature
        18: .line 544
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey javax.management.MBeanOperationInfo java.lang.String[]
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.objectName:Ljavax/management/ObjectName;
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 2 /* args */
            aload 5 /* signature */
            invokeinterface javax.management.MBeanServerConnection.invoke:(Ljavax/management/ObjectName;Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.String[] signature
        end local 4 // javax.management.MBeanOperationInfo info
        end local 3 // org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey key
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   19     1     method  Ljava/lang/reflect/Method;
            0   19     2       args  [Ljava/lang/Object;
            4   19     3        key  Lorg/springframework/jmx/access/MBeanClientInterceptor$MethodCacheKey;
            5   19     4       info  Ljavax/management/MBeanOperationInfo;
           11   16     5  signature  [Ljava/lang/String;
           18   19     5  signature  [Ljava/lang/String;
      Exception table:
        from    to  target  type
          10    15      16  any
          16    17      16  any
    Exceptions:
      throws javax.management.JMException, java.io.IOException
    MethodParameters:
        Name  Flags
      method  
      args    

  protected java.lang.Object convertResultValueIfNecessary(java.lang.Object, org.springframework.core.MethodParameter);
    descriptor: (Ljava/lang/Object;Lorg/springframework/core/MethodParameter;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.Object result
        start local 2 // org.springframework.core.MethodParameter parameter
         0: .line 557
            aload 2 /* parameter */
            invokevirtual org.springframework.core.MethodParameter.getParameterType:()Ljava/lang/Class;
            astore 3 /* targetClass */
        start local 3 // java.lang.Class targetClass
         1: .line 559
            aload 1 /* result */
            ifnonnull 3
         2: .line 560
            aconst_null
            areturn
         3: .line 562
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 3 /* targetClass */
            aload 1 /* result */
            invokestatic org.springframework.util.ClassUtils.isAssignableValue:(Ljava/lang/Class;Ljava/lang/Object;)Z
            ifeq 6
         4: .line 563
            aload 1 /* result */
         5: areturn
         6: .line 565
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.CompositeData
            ifeq 10
         7: .line 566
            aload 3 /* targetClass */
            ldc "from"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljavax/management/openmbean/CompositeData;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* fromMethod */
        start local 4 // java.lang.reflect.Method fromMethod
         8: .line 567
            aload 4 /* fromMethod */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* result */
            aastore
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
         9: areturn
        end local 4 // java.lang.reflect.Method fromMethod
        10: .line 569
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.CompositeData[]
            ifeq 21
        11: .line 570
            aload 1 /* result */
            checkcast javax.management.openmbean.CompositeData[]
            astore 4 /* array */
        start local 4 // javax.management.openmbean.CompositeData[] array
        12: .line 571
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 15
        13: .line 572
            aload 0 /* this */
            aload 4 /* array */
            aload 3 /* targetClass */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.convertDataArrayToTargetArray:([Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
        14: areturn
        15: .line 574
      StackMap locals: javax.management.openmbean.CompositeData[]
      StackMap stack:
            ldc Ljava/util/Collection;
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 36
        16: .line 576
            aload 2 /* parameter */
            invokestatic org.springframework.core.ResolvableType.forMethodParameter:(Lorg/springframework/core/MethodParameter;)Lorg/springframework/core/ResolvableType;
            invokevirtual org.springframework.core.ResolvableType.asCollection:()Lorg/springframework/core/ResolvableType;
            iconst_0
            newarray 10
            invokevirtual org.springframework.core.ResolvableType.resolveGeneric:([I)Ljava/lang/Class;
        17: .line 575
            astore 5 /* elementType */
        start local 5 // java.lang.Class elementType
        18: .line 577
            aload 5 /* elementType */
            ifnull 36
        19: .line 578
            aload 0 /* this */
            aload 4 /* array */
            aload 3 /* targetClass */
            aload 5 /* elementType */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.convertDataArrayToTargetCollection:([Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Collection;
        20: areturn
        end local 5 // java.lang.Class elementType
        end local 4 // javax.management.openmbean.CompositeData[] array
        21: .line 582
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.TabularData
            ifeq 25
        22: .line 583
            aload 3 /* targetClass */
            ldc "from"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljavax/management/openmbean/TabularData;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* fromMethod */
        start local 4 // java.lang.reflect.Method fromMethod
        23: .line 584
            aload 4 /* fromMethod */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* result */
            aastore
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
        24: areturn
        end local 4 // java.lang.reflect.Method fromMethod
        25: .line 586
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.TabularData[]
            ifeq 36
        26: .line 587
            aload 1 /* result */
            checkcast javax.management.openmbean.TabularData[]
            astore 4 /* array */
        start local 4 // javax.management.openmbean.TabularData[] array
        27: .line 588
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 30
        28: .line 589
            aload 0 /* this */
            aload 4 /* array */
            aload 3 /* targetClass */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.convertDataArrayToTargetArray:([Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
        29: areturn
        30: .line 591
      StackMap locals: javax.management.openmbean.TabularData[]
      StackMap stack:
            ldc Ljava/util/Collection;
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 36
        31: .line 593
            aload 2 /* parameter */
            invokestatic org.springframework.core.ResolvableType.forMethodParameter:(Lorg/springframework/core/MethodParameter;)Lorg/springframework/core/ResolvableType;
            invokevirtual org.springframework.core.ResolvableType.asCollection:()Lorg/springframework/core/ResolvableType;
            iconst_0
            newarray 10
            invokevirtual org.springframework.core.ResolvableType.resolveGeneric:([I)Ljava/lang/Class;
        32: .line 592
            astore 5 /* elementType */
        start local 5 // java.lang.Class elementType
        33: .line 594
            aload 5 /* elementType */
            ifnull 36
        34: .line 595
            aload 0 /* this */
            aload 4 /* array */
            aload 3 /* targetClass */
            aload 5 /* elementType */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.convertDataArrayToTargetCollection:([Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Collection;
        35: areturn
        end local 5 // java.lang.Class elementType
        end local 4 // javax.management.openmbean.TabularData[] array
        36: .line 599
      StackMap locals:
      StackMap stack:
            new org.springframework.jmx.access.InvocationFailureException
            dup
        37: .line 600
            new java.lang.StringBuilder
            dup
            ldc "Incompatible result value ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* result */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for target type ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            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;
        38: .line 599
            invokespecial org.springframework.jmx.access.InvocationFailureException.<init>:(Ljava/lang/String;)V
            athrow
        39: .line 602
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        40: .line 603
            new org.springframework.jmx.access.InvocationFailureException
            dup
        41: .line 604
            new java.lang.StringBuilder
            dup
            ldc "Could not obtain 'from(CompositeData)' / 'from(TabularData)' method on target type ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        42: .line 605
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] for conversion of MXBean data structure ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* result */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        43: .line 604
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        44: .line 603
            invokespecial org.springframework.jmx.access.InvocationFailureException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.Class targetClass
        end local 2 // org.springframework.core.MethodParameter parameter
        end local 1 // java.lang.Object result
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   45     0         this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0   45     1       result  Ljava/lang/Object;
            0   45     2    parameter  Lorg/springframework/core/MethodParameter;
            1   45     3  targetClass  Ljava/lang/Class<*>;
            8   10     4   fromMethod  Ljava/lang/reflect/Method;
           12   21     4        array  [Ljavax/management/openmbean/CompositeData;
           18   21     5  elementType  Ljava/lang/Class<*>;
           23   25     4   fromMethod  Ljava/lang/reflect/Method;
           27   36     4        array  [Ljavax/management/openmbean/TabularData;
           33   36     5  elementType  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           1     2      39  Class java.lang.NoSuchMethodException
           3     5      39  Class java.lang.NoSuchMethodException
           6     9      39  Class java.lang.NoSuchMethodException
          10    14      39  Class java.lang.NoSuchMethodException
          15    20      39  Class java.lang.NoSuchMethodException
          21    24      39  Class java.lang.NoSuchMethodException
          25    29      39  Class java.lang.NoSuchMethodException
          30    35      39  Class java.lang.NoSuchMethodException
          36    39      39  Class java.lang.NoSuchMethodException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
           Name  Flags
      result     
      parameter  

  private  convertDataArrayToTargetArray([], java.lang.Class<?>);
    descriptor: ([Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=7, args_size=3
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.Object[] array
        start local 2 // java.lang.Class targetClass
         0: .line 610
            aload 2 /* targetClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 3 /* targetType */
        start local 3 // java.lang.Class targetType
         1: .line 611
            aload 3 /* targetType */
            ldc "from"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 1 /* array */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* fromMethod */
        start local 4 // java.lang.reflect.Method fromMethod
         2: .line 612
            aload 3 /* targetType */
            aload 1 /* array */
            arraylength
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 5 /* resultArray */
        start local 5 // java.lang.Object resultArray
         3: .line 613
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 7
         5: .line 614
      StackMap locals: org.springframework.jmx.access.MBeanClientInterceptor java.lang.Object[] java.lang.Class java.lang.Class java.lang.reflect.Method java.lang.Object int
      StackMap stack:
            aload 5 /* resultArray */
            iload 6 /* i */
            aload 4 /* fromMethod */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* array */
            iload 6 /* i */
            aaload
            aastore
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic java.lang.reflect.Array.set:(Ljava/lang/Object;ILjava/lang/Object;)V
         6: .line 613
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 6 /* i */
            aload 1 /* array */
            arraylength
            if_icmplt 5
        end local 6 // int i
         8: .line 616
            aload 5 /* resultArray */
            areturn
        end local 5 // java.lang.Object resultArray
        end local 4 // java.lang.reflect.Method fromMethod
        end local 3 // java.lang.Class targetType
        end local 2 // java.lang.Class targetClass
        end local 1 // java.lang.Object[] array
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    9     1        array  [Ljava/lang/Object;
            0    9     2  targetClass  Ljava/lang/Class<*>;
            1    9     3   targetType  Ljava/lang/Class<*>;
            2    9     4   fromMethod  Ljava/lang/reflect/Method;
            3    9     5  resultArray  Ljava/lang/Object;
            4    8     6            i  I
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: ([Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      array        
      targetClass  

  private java.util.Collection<?> convertDataArrayToTargetCollection([], java.lang.Class<?>, java.lang.Class<?>);
    descriptor: ([Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Collection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
        start local 1 // java.lang.Object[] array
        start local 2 // java.lang.Class collectionType
        start local 3 // java.lang.Class elementType
         0: .line 622
            aload 3 /* elementType */
            ldc "from"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 1 /* array */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* fromMethod */
        start local 4 // java.lang.reflect.Method fromMethod
         1: .line 623
            aload 2 /* collectionType */
            aload 1 /* array */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            invokestatic org.springframework.core.CollectionFactory.createCollection:(Ljava/lang/Class;I)Ljava/util/Collection;
            astore 5 /* resultColl */
        start local 5 // java.util.Collection resultColl
         2: .line 624
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 6
         4: .line 625
      StackMap locals: java.lang.reflect.Method java.util.Collection int
      StackMap stack:
            aload 5 /* resultColl */
            aload 4 /* fromMethod */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* array */
            iload 6 /* i */
            aaload
            aastore
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         5: .line 624
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 6 /* i */
            aload 1 /* array */
            arraylength
            if_icmplt 4
        end local 6 // int i
         7: .line 627
            aload 5 /* resultColl */
            areturn
        end local 5 // java.util.Collection resultColl
        end local 4 // java.lang.reflect.Method fromMethod
        end local 3 // java.lang.Class elementType
        end local 2 // java.lang.Class collectionType
        end local 1 // java.lang.Object[] array
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
            0    8     1           array  [Ljava/lang/Object;
            0    8     2  collectionType  Ljava/lang/Class<*>;
            0    8     3     elementType  Ljava/lang/Class<*>;
            1    8     4      fromMethod  Ljava/lang/reflect/Method;
            2    8     5      resultColl  Ljava/util/Collection<Ljava/lang/Object;>;
            3    7     6               i  I
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: ([Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/util/Collection<*>;
    MethodParameters:
                Name  Flags
      array           
      collectionType  
      elementType     

  public void destroy();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
         0: .line 633
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.connector:Lorg/springframework/jmx/access/ConnectorDelegate;
            invokevirtual org.springframework.jmx.access.ConnectorDelegate.close:()V
         1: .line 634
            return
        end local 0 // org.springframework.jmx.access.MBeanClientInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/jmx/access/MBeanClientInterceptor;
}
SourceFile: "MBeanClientInterceptor.java"
NestMembers:
  org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey
InnerClasses:
  private final MethodCacheKey = org.springframework.jmx.access.MBeanClientInterceptor$MethodCacheKey of org.springframework.jmx.access.MBeanClientInterceptor