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 92
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 96
            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 110
            aload 0 /* this */
            iconst_1
            putfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
         3: .line 112
            aload 0 /* this */
            iconst_0
            putfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
         4: .line 117
            aload 0 /* this */
            iconst_1
            putfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
         5: .line 123
            aload 0 /* this */
            invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.beanClassLoader:Ljava/lang/ClassLoader;
         6: .line 125
            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 133
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
         8: .line 135
            aload 0 /* this */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
         9: .line 137
            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 139
            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 92
            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 147
            aload 0 /* this */
            aload 1 /* server */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
         1: .line 148
            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 154
            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 155
            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 162
            aload 0 /* this */
            aload 1 /* environment */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.environment:Ljava/util/Map;
         1: .line 163
            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 174
            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 186
            aload 0 /* this */
            aload 1 /* agentId */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.agentId:Ljava/lang/String;
         1: .line 187
            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 195
            aload 0 /* this */
            iload 1 /* connectOnStartup */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
         1: .line 196
            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 205
            aload 0 /* this */
            iload 1 /* refreshOnConnectFailure */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
         1: .line 206
            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 213
            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 214
            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 224
            aload 0 /* this */
            iload 1 /* useStrictCasing */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
         1: .line 225
            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 233
            aload 0 /* this */
            aload 1 /* managementInterface */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.managementInterface:Ljava/lang/Class;
         1: .line 234
            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 242
            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 247
            aload 0 /* this */
            aload 1 /* beanClassLoader */
            putfield org.springframework.jmx.access.MBeanClientInterceptor.beanClassLoader:Ljava/lang/ClassLoader;
         1: .line 248
            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 257
            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 258
            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 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.connectOnStartup:Z
            ifeq 4
         3: .line 262
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         4: .line 264
      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 271
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 272
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.server:Ljavax/management/MBeanServerConnection;
            ifnull 4
         2: .line 273
            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 274
            goto 6
         4: .line 276
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.springframework.jmx.access.MBeanClientInterceptor.serverToUse:Ljavax/management/MBeanServerConnection;
         5: .line 277
            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 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
         7: .line 280
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.useStrictCasing:Z
            ifeq 18
         8: .line 281
            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 283
            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 284
            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 283
            putfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
        17: .line 285
            goto 19
        18: .line 289
      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 271
      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 292
      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 300
            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 302
            aload 2 /* info */
            invokevirtual javax.management.MBeanInfo.getAttributes:()[Ljavax/management/MBeanAttributeInfo;
            astore 3 /* attributeInfo */
        start local 3 // javax.management.MBeanAttributeInfo[] attributeInfo
         2: .line 303
            aload 0 /* this */
            new java.util.HashMap
            dup
            aload 3 /* attributeInfo */
            arraylength
            invokespecial java.util.HashMap.<init>:(I)V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedAttributes:Ljava/util/Map;
         3: .line 304
            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 305
            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 304
            iinc 5 1
      StackMap locals:
      StackMap stack:
         7: iload 5
            iload 6
            if_icmplt 4
         8: .line 308
            aload 2 /* info */
            invokevirtual javax.management.MBeanInfo.getOperations:()[Ljavax/management/MBeanOperationInfo;
            astore 4 /* operationInfo */
        start local 4 // javax.management.MBeanOperationInfo[] operationInfo
         9: .line 309
            aload 0 /* this */
            new java.util.HashMap
            dup
            aload 4 /* operationInfo */
            arraylength
            invokespecial java.util.HashMap.<init>:(I)V
            putfield org.springframework.jmx.access.MBeanClientInterceptor.allowedOperations:Ljava/util/Map;
        10: .line 310
            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 311
            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 312
            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 310
            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 314
            goto 32
        17: .line 315
      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 316
            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 318
      StackMap locals:
      StackMap stack: javax.management.IntrospectionException
            astore 2 /* ex */
        start local 2 // javax.management.IntrospectionException ex
        20: .line 319
            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 321
      StackMap locals:
      StackMap stack: javax.management.InstanceNotFoundException
            astore 2 /* ex */
        start local 2 // javax.management.InstanceNotFoundException ex
        22: .line 323
            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 324
            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 325
            aload 2 /* ex */
        25: .line 323
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.management.InstanceNotFoundException ex
        26: .line 327
      StackMap locals:
      StackMap stack: javax.management.ReflectionException
            astore 2 /* ex */
        start local 2 // javax.management.ReflectionException ex
        27: .line 328
            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 330
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 2 /* ex */
        start local 2 // java.io.IOException ex
        29: .line 331
            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 333
            aload 2 /* ex */
        31: .line 331
            invokespecial org.springframework.jmx.access.MBeanInfoRetrievalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException ex
        32: .line 335
      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 342
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 343
            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 342
      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 360
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.preparationMonitor:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 361
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.isPrepared:()Z
            ifne 3
         2: .line 362
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         3: .line 360
      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 366
      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 368
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* ex */
        start local 2 // java.lang.Exception ex
        10: .line 369
            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 387
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.refreshOnConnectFailure:Z
            ifeq 9
         1: .line 388
            ldc "Could not connect to JMX server - retrying"
            astore 3 /* msg */
        start local 3 // java.lang.String msg
         2: .line 389
            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 390
            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 391
            goto 7
         5: .line 392
      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 393
            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 395
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.jmx.access.MBeanClientInterceptor.prepare:()V
         8: .line 396
            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 399
      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 413
            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 416
            aload 0 /* this */
            getfield org.springframework.jmx.access.MBeanClientInterceptor.invocationHandler:Ljavax/management/MBeanServerInvocationHandler;
            ifnull 4
         2: .line 417
            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 418
            goto 9
        end local 3 // java.lang.Object result
         4: .line 420
      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 421
            aload 4 /* pd */
            ifnull 8
         6: .line 422
            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 423
            goto 9
        end local 3 // java.lang.Object result
         8: .line 425
      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 428
      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 430
      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 431
            aload 3 /* ex */
            invokevirtual javax.management.MBeanException.getTargetException:()Ljava/lang/Exception;
            athrow
        end local 3 // javax.management.MBeanException ex
        13: .line 433
      StackMap locals:
      StackMap stack: javax.management.RuntimeMBeanException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeMBeanException ex
        14: .line 434
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeMBeanException.getTargetException:()Ljava/lang/RuntimeException;
            athrow
        end local 3 // javax.management.RuntimeMBeanException ex
        15: .line 436
      StackMap locals:
      StackMap stack: javax.management.RuntimeErrorException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeErrorException ex
        16: .line 437
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeErrorException.getTargetError:()Ljava/lang/Error;
            athrow
        end local 3 // javax.management.RuntimeErrorException ex
        17: .line 439
      StackMap locals:
      StackMap stack: javax.management.RuntimeOperationsException
            astore 3 /* ex */
        start local 3 // javax.management.RuntimeOperationsException ex
        18: .line 441
            aload 3 /* ex */
            invokevirtual javax.management.RuntimeOperationsException.getTargetException:()Ljava/lang/RuntimeException;
            astore 4 /* rex */
        start local 4 // java.lang.RuntimeException rex
        19: .line 442
            aload 4 /* rex */
            instanceof javax.management.RuntimeMBeanException
            ifeq 21
        20: .line 443
            aload 4 /* rex */
            checkcast javax.management.RuntimeMBeanException
            invokevirtual javax.management.RuntimeMBeanException.getTargetException:()Ljava/lang/RuntimeException;
            athrow
        21: .line 445
      StackMap locals: javax.management.RuntimeOperationsException java.lang.RuntimeException
      StackMap stack:
            aload 4 /* rex */
            instanceof javax.management.RuntimeErrorException
            ifeq 23
        22: .line 446
            aload 4 /* rex */
            checkcast javax.management.RuntimeErrorException
            invokevirtual javax.management.RuntimeErrorException.getTargetError:()Ljava/lang/Error;
            athrow
        23: .line 449
      StackMap locals:
      StackMap stack:
            aload 4 /* rex */
            athrow
        end local 4 // java.lang.RuntimeException rex
        end local 3 // javax.management.RuntimeOperationsException ex
        24: .line 452
      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 453
            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 454
            aload 3 /* ex */
            athrow
        27: .line 457
      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 460
      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 461
            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 462
            aload 3 /* ex */
            athrow
        31: .line 465
      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 468
      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 469
            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 470
            aload 3 /* ex */
            athrow
        35: .line 473
      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 482
            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 484
            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 485
            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 488
            aload 4 /* inf */
            ifnonnull 9
         6: .line 489
            new org.springframework.jmx.access.InvalidInvocationException
            dup
         7: .line 490
            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 489
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 493
      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 494
            aload 4 /* inf */
            invokevirtual javax.management.MBeanAttributeInfo.isReadable:()Z
            ifeq 12
        11: .line 495
            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 498
      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 501
      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 502
            aload 4 /* inf */
            invokevirtual javax.management.MBeanAttributeInfo.isWritable:()Z
            ifeq 17
        15: .line 503
            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 504
            aconst_null
            areturn
        17: .line 507
      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 511
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
        19: .line 512
            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 511
            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 524
            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 526
            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 527
            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 528
            aload 4 /* info */
            ifnonnull 9
         6: .line 529
            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 530
            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 529
            invokespecial org.springframework.jmx.access.InvalidInvocationException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 534
      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 535
            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 536
            aload 5 /* signature */
            ifnonnull 14
        12: .line 537
            aload 1 /* method */
            invokestatic org.springframework.jmx.support.JmxUtils.getMethodSignature:(Ljava/lang/reflect/Method;)[Ljava/lang/String;
            astore 5 /* signature */
        13: .line 538
            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 534
      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 542
      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 555
            aload 2 /* parameter */
            invokevirtual org.springframework.core.MethodParameter.getParameterType:()Ljava/lang/Class;
            astore 3 /* targetClass */
        start local 3 // java.lang.Class targetClass
         1: .line 557
            aload 1 /* result */
            ifnonnull 3
         2: .line 558
            aconst_null
            areturn
         3: .line 560
      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 561
            aload 1 /* result */
         5: areturn
         6: .line 563
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.CompositeData
            ifeq 10
         7: .line 564
            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 565
            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 567
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.CompositeData[]
            ifeq 21
        11: .line 568
            aload 1 /* result */
            checkcast javax.management.openmbean.CompositeData[]
            astore 4 /* array */
        start local 4 // javax.management.openmbean.CompositeData[] array
        12: .line 569
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 15
        13: .line 570
            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 572
      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 574
            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 573
            astore 5 /* elementType */
        start local 5 // java.lang.Class elementType
        18: .line 575
            aload 5 /* elementType */
            ifnull 36
        19: .line 576
            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 580
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.TabularData
            ifeq 25
        22: .line 581
            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 582
            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 584
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            instanceof javax.management.openmbean.TabularData[]
            ifeq 36
        26: .line 585
            aload 1 /* result */
            checkcast javax.management.openmbean.TabularData[]
            astore 4 /* array */
        start local 4 // javax.management.openmbean.TabularData[] array
        27: .line 586
            aload 3 /* targetClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 30
        28: .line 587
            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 589
      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 591
            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 590
            astore 5 /* elementType */
        start local 5 // java.lang.Class elementType
        33: .line 592
            aload 5 /* elementType */
            ifnull 36
        34: .line 593
            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 597
      StackMap locals:
      StackMap stack:
            new org.springframework.jmx.access.InvocationFailureException
            dup
        37: .line 598
            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 597
            invokespecial org.springframework.jmx.access.InvocationFailureException.<init>:(Ljava/lang/String;)V
            athrow
        39: .line 600
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        40: .line 601
            new org.springframework.jmx.access.InvocationFailureException
            dup
        41: .line 602
            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 603
            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 602
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        44: .line 601
            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 608
            aload 2 /* targetClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 3 /* targetType */
        start local 3 // java.lang.Class targetType
         1: .line 609
            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 610
            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 611
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 7
         5: .line 612
      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 611
            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 614
            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 620
            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 621
            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 622
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 6
         4: .line 623
      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 622
            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 625
            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 631
            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 632
            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