public abstract class com.sun.jmx.mbeanserver.OpenConverter
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.jmx.mbeanserver.OpenConverter
  super_class: java.lang.Object
{
  private final java.lang.reflect.Type targetType;
    descriptor: Ljava/lang/reflect/Type;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.management.openmbean.OpenType openType;
    descriptor: Ljavax/management/openmbean/OpenType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private static final com.sun.jmx.mbeanserver.OpenConverter$ConverterMap converterMap;
    descriptor: Lcom/sun/jmx/mbeanserver/OpenConverter$ConverterMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.List<com.sun.jmx.mbeanserver.OpenConverter> permanentConverters;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Lcom/sun/jmx/mbeanserver/OpenConverter;>;

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

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

  private static final java.util.Map<java.lang.reflect.Type, java.lang.reflect.Type> inProgress;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=11, args_size=0
         0: .line 117
            ldc Lcom/sun/jmx/mbeanserver/OpenConverter;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.sun.jmx.mbeanserver.OpenConverter.$assertionsDisabled:Z
         3: .line 186
            new com.sun.jmx.mbeanserver.OpenConverter$ConverterMap
            dup
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$ConverterMap.<init>:()V
            putstatic com.sun.jmx.mbeanserver.OpenConverter.converterMap:Lcom/sun/jmx/mbeanserver/OpenConverter$ConverterMap;
         4: .line 190
            invokestatic com.sun.jmx.mbeanserver.Util.newList:()Ljava/util/List;
            putstatic com.sun.jmx.mbeanserver.OpenConverter.permanentConverters:Ljava/util/List;
         5: .line 213
            bipush 14
            anewarray javax.management.openmbean.OpenType
            dup
            iconst_0
         6: .line 214
            getstatic javax.management.openmbean.SimpleType.BIGDECIMAL:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_1
            getstatic javax.management.openmbean.SimpleType.BIGINTEGER:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_2
            getstatic javax.management.openmbean.SimpleType.BOOLEAN:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_3
            getstatic javax.management.openmbean.SimpleType.BYTE:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_4
            getstatic javax.management.openmbean.SimpleType.CHARACTER:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_5
            getstatic javax.management.openmbean.SimpleType.DATE:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 6
         7: .line 215
            getstatic javax.management.openmbean.SimpleType.DOUBLE:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 7
            getstatic javax.management.openmbean.SimpleType.FLOAT:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 8
            getstatic javax.management.openmbean.SimpleType.INTEGER:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 9
            getstatic javax.management.openmbean.SimpleType.LONG:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 10
            getstatic javax.management.openmbean.SimpleType.OBJECTNAME:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 11
            getstatic javax.management.openmbean.SimpleType.SHORT:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 12
            getstatic javax.management.openmbean.SimpleType.STRING:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            bipush 13
         8: .line 216
            getstatic javax.management.openmbean.SimpleType.VOID:Ljavax/management/openmbean/SimpleType;
            aastore
         9: .line 213
            astore 0 /* simpleTypes */
        start local 0 // javax.management.openmbean.OpenType[] simpleTypes
        10: .line 219
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        11: goto 47
        12: .line 220
      StackMap locals: javax.management.openmbean.OpenType[] int
      StackMap stack:
            aload 0 /* simpleTypes */
            iload 1 /* i */
            aaload
            astore 2 /* t */
        start local 2 // javax.management.openmbean.OpenType t
        13: .line 223
            aload 2 /* t */
            invokevirtual javax.management.openmbean.OpenType.getClassName:()Ljava/lang/String;
            iconst_0
        14: .line 224
            ldc Ljavax/management/ObjectName;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
        15: .line 223
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 3 /* c */
        start local 3 // java.lang.Class c
        16: .line 225
            goto 19
        end local 3 // java.lang.Class c
      StackMap locals: javax.management.openmbean.OpenType[] int javax.management.openmbean.OpenType
      StackMap stack: java.lang.ClassNotFoundException
        17: astore 4 /* e */
        start local 4 // java.lang.ClassNotFoundException e
        18: .line 227
            new java.lang.Error
            dup
            aload 4 /* e */
            invokespecial java.lang.Error.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.ClassNotFoundException e
        start local 3 // java.lang.Class c
        19: .line 229
      StackMap locals: java.lang.Class
      StackMap stack:
            new com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter
            dup
            aload 3 /* c */
            aload 2 /* t */
            aload 3 /* c */
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/OpenType;Ljava/lang/Class;)V
            astore 4 /* conv */
        start local 4 // com.sun.jmx.mbeanserver.OpenConverter conv
        20: .line 230
            aload 3 /* c */
            aload 4 /* conv */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.putPermanentConverter:(Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
        21: .line 232
            aload 3 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "java.lang."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 46
        22: .line 234
            aload 3 /* c */
            ldc "TYPE"
            invokevirtual java.lang.Class.getField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 5 /* typeField */
        start local 5 // java.lang.reflect.Field typeField
        23: .line 235
            aload 5 /* typeField */
            aconst_null
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 6 /* primitiveType */
        start local 6 // java.lang.Class primitiveType
        24: .line 237
            new com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter
            dup
            aload 6 /* primitiveType */
            aload 2 /* t */
            aload 6 /* primitiveType */
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/OpenType;Ljava/lang/Class;)V
        25: .line 236
            astore 7 /* primitiveConv */
        start local 7 // com.sun.jmx.mbeanserver.OpenConverter primitiveConv
        26: .line 238
            aload 6 /* primitiveType */
        27: .line 239
            aload 7 /* primitiveConv */
        28: .line 238
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.putPermanentConverter:(Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
        29: .line 240
            aload 6 /* primitiveType */
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 46
        30: .line 242
            aload 6 /* primitiveType */
            iconst_0
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
        31: .line 241
            astore 8 /* primitiveArrayType */
        start local 8 // java.lang.Class primitiveArrayType
        32: .line 244
            aload 8 /* primitiveArrayType */
            invokestatic javax.management.openmbean.ArrayType.getPrimitiveArrayType:(Ljava/lang/Class;)Ljavax/management/openmbean/ArrayType;
        33: .line 243
            astore 9 /* primitiveArrayOpenType */
        start local 9 // javax.management.openmbean.OpenType primitiveArrayOpenType
        34: .line 246
            new com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter
            dup
            aload 8 /* primitiveArrayType */
        35: .line 247
            aload 9 /* primitiveArrayOpenType */
        36: .line 248
            aload 8 /* primitiveArrayType */
        37: .line 246
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/OpenType;Ljava/lang/Class;)V
        38: .line 245
            astore 10 /* primitiveArrayConv */
        start local 10 // com.sun.jmx.mbeanserver.OpenConverter primitiveArrayConv
        39: .line 249
            aload 8 /* primitiveArrayType */
        40: .line 250
            aload 10 /* primitiveArrayConv */
        41: .line 249
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.putPermanentConverter:(Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
        end local 10 // com.sun.jmx.mbeanserver.OpenConverter primitiveArrayConv
        end local 9 // javax.management.openmbean.OpenType primitiveArrayOpenType
        end local 8 // java.lang.Class primitiveArrayType
        end local 7 // com.sun.jmx.mbeanserver.OpenConverter primitiveConv
        end local 6 // java.lang.Class primitiveType
        end local 5 // java.lang.reflect.Field typeField
        42: .line 252
            goto 46
      StackMap locals: javax.management.openmbean.OpenType[] int javax.management.openmbean.OpenType java.lang.Class com.sun.jmx.mbeanserver.OpenConverter
      StackMap stack: java.lang.NoSuchFieldException
        43: pop
            goto 46
        44: .line 254
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            pop
        45: .line 256
            getstatic com.sun.jmx.mbeanserver.OpenConverter.$assertionsDisabled:Z
            ifne 46
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 4 // com.sun.jmx.mbeanserver.OpenConverter conv
        end local 3 // java.lang.Class c
        end local 2 // javax.management.openmbean.OpenType t
        46: .line 219
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        47: iload 1 /* i */
            aload 0 /* simpleTypes */
            arraylength
            if_icmplt 12
        end local 1 // int i
        end local 0 // javax.management.openmbean.OpenType[] simpleTypes
        48: .line 367
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "key"
            aastore
            putstatic com.sun.jmx.mbeanserver.OpenConverter.keyArray:[Ljava/lang/String;
        49: .line 368
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "key"
            aastore
            dup
            iconst_1
            ldc "value"
            aastore
            putstatic com.sun.jmx.mbeanserver.OpenConverter.keyValueArray:[Ljava/lang/String;
        50: .line 1463
            invokestatic com.sun.jmx.mbeanserver.Util.newIdentityHashMap:()Ljava/util/IdentityHashMap;
            putstatic com.sun.jmx.mbeanserver.OpenConverter.inProgress:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
           10   48     0             simpleTypes  [Ljavax/management/openmbean/OpenType;
           11   48     1                       i  I
           13   46     2                       t  Ljavax/management/openmbean/OpenType;
           16   17     3                       c  Ljava/lang/Class;
           19   46     3                       c  Ljava/lang/Class;
           18   19     4                       e  Ljava/lang/ClassNotFoundException;
           20   46     4                    conv  Lcom/sun/jmx/mbeanserver/OpenConverter;
           23   42     5               typeField  Ljava/lang/reflect/Field;
           24   42     6           primitiveType  Ljava/lang/Class;
           26   42     7           primitiveConv  Lcom/sun/jmx/mbeanserver/OpenConverter;
           32   42     8      primitiveArrayType  Ljava/lang/Class<*>;
           34   42     9  primitiveArrayOpenType  Ljavax/management/openmbean/OpenType;
           39   42    10      primitiveArrayConv  Lcom/sun/jmx/mbeanserver/OpenConverter;
      Exception table:
        from    to  target  type
          13    16      17  Class java.lang.ClassNotFoundException
          22    42      43  Class java.lang.NoSuchFieldException
          22    42      44  Class java.lang.IllegalAccessException

  private void <init>(java.lang.reflect.Type, javax.management.openmbean.OpenType, java.lang.Class);
    descriptor: (Ljava/lang/reflect/Type;Ljavax/management/openmbean/OpenType;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
        start local 1 // java.lang.reflect.Type targetType
        start local 2 // javax.management.openmbean.OpenType openType
        start local 3 // java.lang.Class openClass
         0: .line 118
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 120
            aload 0 /* this */
            aload 1 /* targetType */
            putfield com.sun.jmx.mbeanserver.OpenConverter.targetType:Ljava/lang/reflect/Type;
         2: .line 121
            aload 0 /* this */
            aload 2 /* openType */
            putfield com.sun.jmx.mbeanserver.OpenConverter.openType:Ljavax/management/openmbean/OpenType;
         3: .line 122
            aload 0 /* this */
            aload 3 /* openClass */
            putfield com.sun.jmx.mbeanserver.OpenConverter.openClass:Ljava/lang/Class;
         4: .line 123
            return
        end local 3 // java.lang.Class openClass
        end local 2 // javax.management.openmbean.OpenType openType
        end local 1 // java.lang.reflect.Type targetType
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/sun/jmx/mbeanserver/OpenConverter;
            0    5     1  targetType  Ljava/lang/reflect/Type;
            0    5     2    openType  Ljavax/management/openmbean/OpenType;
            0    5     3   openClass  Ljava/lang/Class;
    MethodParameters:
            Name  Flags
      targetType  
      openType    
      openClass   

  public final java.lang.Object fromOpenValue(com.sun.jmx.mbeanserver.MXBeanLookup, java.lang.Object);
    descriptor: (Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
        start local 1 // com.sun.jmx.mbeanserver.MXBeanLookup lookup
        start local 2 // java.lang.Object value
         0: .line 128
            aload 2 /* value */
            ifnonnull 2
         1: .line 129
            aconst_null
            areturn
         2: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* lookup */
            aload 2 /* value */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.fromNonNullOpenValue:(Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // com.sun.jmx.mbeanserver.MXBeanLookup lookup
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/sun/jmx/mbeanserver/OpenConverter;
            0    3     1  lookup  Lcom/sun/jmx/mbeanserver/MXBeanLookup;
            0    3     2   value  Ljava/lang/Object;
    Exceptions:
      throws java.io.InvalidObjectException
    MethodParameters:
        Name  Flags
      lookup  
      value   

  abstract java.lang.Object fromNonNullOpenValue(com.sun.jmx.mbeanserver.MXBeanLookup, java.lang.Object);
    descriptor: (Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.io.InvalidObjectException
    MethodParameters:
        Name  Flags
      lookup  
      value   

  void checkReconstructible();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
         0: .line 141
            return
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/mbeanserver/OpenConverter;
    Exceptions:
      throws java.io.InvalidObjectException

  final java.lang.Object toOpenValue(com.sun.jmx.mbeanserver.MXBeanLookup, java.lang.Object);
    descriptor: (Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
        start local 1 // com.sun.jmx.mbeanserver.MXBeanLookup lookup
        start local 2 // java.lang.Object value
         0: .line 146
            aload 2 /* value */
            ifnonnull 2
         1: .line 147
            aconst_null
            areturn
         2: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* lookup */
            aload 2 /* value */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.toNonNullOpenValue:(Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // com.sun.jmx.mbeanserver.MXBeanLookup lookup
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/sun/jmx/mbeanserver/OpenConverter;
            0    3     1  lookup  Lcom/sun/jmx/mbeanserver/MXBeanLookup;
            0    3     2   value  Ljava/lang/Object;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
        Name  Flags
      lookup  
      value   

  abstract java.lang.Object toNonNullOpenValue(com.sun.jmx.mbeanserver.MXBeanLookup, java.lang.Object);
    descriptor: (Lcom/sun/jmx/mbeanserver/MXBeanLookup;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
        Name  Flags
      lookup  
      value   

  boolean isIdentity();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
         0: .line 158
            iconst_0
            ireturn
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/mbeanserver/OpenConverter;

  final java.lang.reflect.Type getTargetType();
    descriptor: ()Ljava/lang/reflect/Type;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
         0: .line 165
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.OpenConverter.targetType:Ljava/lang/reflect/Type;
            areturn
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/mbeanserver/OpenConverter;

  final javax.management.openmbean.OpenType getOpenType();
    descriptor: ()Ljavax/management/openmbean/OpenType;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
         0: .line 169
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.OpenConverter.openType:Ljavax/management/openmbean/OpenType;
            areturn
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/mbeanserver/OpenConverter;

  final java.lang.Class getOpenClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jmx.mbeanserver.OpenConverter this
         0: .line 176
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.OpenConverter.openClass:Ljava/lang/Class;
            areturn
        end local 0 // com.sun.jmx.mbeanserver.OpenConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jmx/mbeanserver/OpenConverter;

  private static synchronized com.sun.jmx.mbeanserver.OpenConverter getConverter(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.reflect.Type type
         0: .line 193
            getstatic com.sun.jmx.mbeanserver.OpenConverter.converterMap:Lcom/sun/jmx/mbeanserver/OpenConverter$ConverterMap;
            aload 0 /* type */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter$ConverterMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 1 /* wr */
        start local 1 // java.lang.ref.WeakReference wr
         1: .line 194
            aload 1 /* wr */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: java.lang.ref.WeakReference
      StackMap stack:
         2: aload 1 /* wr */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast com.sun.jmx.mbeanserver.OpenConverter
      StackMap locals:
      StackMap stack: com.sun.jmx.mbeanserver.OpenConverter
         3: areturn
        end local 1 // java.lang.ref.WeakReference wr
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  type  Ljava/lang/reflect/Type;
            1    4     1    wr  Ljava/lang/ref/WeakReference<Lcom/sun/jmx/mbeanserver/OpenConverter;>;
    MethodParameters:
      Name  Flags
      type  

  private static synchronized void putConverter(java.lang.reflect.Type, com.sun.jmx.mbeanserver.OpenConverter);
    descriptor: (Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.reflect.Type type
        start local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
         0: .line 200
            new java.lang.ref.WeakReference
            dup
            aload 1 /* conv */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
         1: .line 199
            astore 2 /* wr */
        start local 2 // java.lang.ref.WeakReference wr
         2: .line 201
            getstatic com.sun.jmx.mbeanserver.OpenConverter.converterMap:Lcom/sun/jmx/mbeanserver/OpenConverter$ConverterMap;
            aload 0 /* type */
            aload 2 /* wr */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter$ConverterMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 202
            return
        end local 2 // java.lang.ref.WeakReference wr
        end local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  type  Ljava/lang/reflect/Type;
            0    4     1  conv  Lcom/sun/jmx/mbeanserver/OpenConverter;
            2    4     2    wr  Ljava/lang/ref/WeakReference<Lcom/sun/jmx/mbeanserver/OpenConverter;>;
    MethodParameters:
      Name  Flags
      type  
      conv  

  private static synchronized void putPermanentConverter(java.lang.reflect.Type, com.sun.jmx.mbeanserver.OpenConverter);
    descriptor: (Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.reflect.Type type
        start local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
         0: .line 206
            aload 0 /* type */
            aload 1 /* conv */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.putConverter:(Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
         1: .line 207
            getstatic com.sun.jmx.mbeanserver.OpenConverter.permanentConverters:Ljava/util/List;
            aload 1 /* conv */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 208
            return
        end local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
        end local 0 // java.lang.reflect.Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  type  Ljava/lang/reflect/Type;
            0    3     1  conv  Lcom/sun/jmx/mbeanserver/OpenConverter;
    MethodParameters:
      Name  Flags
      type  
      conv  

  public static synchronized com.sun.jmx.mbeanserver.OpenConverter toConverter(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.reflect.Type objType
         0: .line 266
            getstatic com.sun.jmx.mbeanserver.OpenConverter.inProgress:Ljava/util/Map;
            aload 0 /* objType */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 267
            new javax.management.openmbean.OpenDataException
            dup
            ldc "Recursive data structure"
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* objType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.getConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            astore 1 /* conv */
        start local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
         3: .line 272
            aload 1 /* conv */
            ifnull 5
         4: .line 273
            aload 1 /* conv */
            areturn
         5: .line 275
      StackMap locals: com.sun.jmx.mbeanserver.OpenConverter
      StackMap stack:
            getstatic com.sun.jmx.mbeanserver.OpenConverter.inProgress:Ljava/util/Map;
            aload 0 /* objType */
            aload 0 /* objType */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 277
            aload 0 /* objType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            astore 1 /* conv */
         7: .line 278
            goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 2
         9: .line 279
            getstatic com.sun.jmx.mbeanserver.OpenConverter.inProgress:Ljava/util/Map;
            aload 0 /* objType */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 280
            aload 2
            athrow
        11: .line 279
      StackMap locals:
      StackMap stack:
            getstatic com.sun.jmx.mbeanserver.OpenConverter.inProgress:Ljava/util/Map;
            aload 0 /* objType */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 282
            aload 0 /* objType */
            aload 1 /* conv */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.putConverter:(Ljava/lang/reflect/Type;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
        13: .line 283
            aload 1 /* conv */
            areturn
        end local 1 // com.sun.jmx.mbeanserver.OpenConverter conv
        end local 0 // java.lang.reflect.Type objType
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0  objType  Ljava/lang/reflect/Type;
            3   14     1     conv  Lcom/sun/jmx/mbeanserver/OpenConverter;
      Exception table:
        from    to  target  type
           6     8       8  any
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
         Name  Flags
      objType  

  private static com.sun.jmx.mbeanserver.OpenConverter makeConverter(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.reflect.Type objType
         0: .line 292
            aload 0 /* objType */
            instanceof java.lang.reflect.GenericArrayType
            ifeq 4
         1: .line 294
            aload 0 /* objType */
            checkcast java.lang.reflect.GenericArrayType
            invokeinterface java.lang.reflect.GenericArrayType.getGenericComponentType:()Ljava/lang/reflect/Type;
         2: .line 293
            astore 1 /* componentType */
        start local 1 // java.lang.reflect.Type componentType
         3: .line 295
            aload 0 /* objType */
            aload 1 /* componentType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        end local 1 // java.lang.reflect.Type componentType
         4: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* objType */
            instanceof java.lang.Class
            ifeq 14
         5: .line 297
            aload 0 /* objType */
            checkcast java.lang.Class
            astore 1 /* objClass */
        start local 1 // java.lang.Class objClass
         6: .line 298
            aload 1 /* objClass */
            invokevirtual java.lang.Class.isEnum:()Z
            ifeq 8
         7: .line 302
            aload 1 /* objClass */
            ldc Ljava/lang/annotation/ElementType;
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeEnumConverter:(Ljava/lang/Class;Ljava/lang/Class;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
         8: .line 303
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* objClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 11
         9: .line 304
            aload 1 /* objClass */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 2 /* componentType */
        start local 2 // java.lang.reflect.Type componentType
        10: .line 305
            aload 1 /* objClass */
            aload 2 /* componentType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        end local 2 // java.lang.reflect.Type componentType
        11: .line 306
      StackMap locals:
      StackMap stack:
            aload 1 /* objClass */
            invokestatic javax.management.JMX.isMXBeanInterface:(Ljava/lang/Class;)Z
            ifeq 13
        12: .line 307
            aload 1 /* objClass */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeMXBeanConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        13: .line 309
      StackMap locals:
      StackMap stack:
            aload 1 /* objClass */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeCompositeConverter:(Ljava/lang/Class;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        end local 1 // java.lang.Class objClass
        14: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* objType */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 16
        15: .line 312
            aload 0 /* objType */
            checkcast java.lang.reflect.ParameterizedType
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeParameterizedConverter:(Ljava/lang/reflect/ParameterizedType;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        16: .line 314
      StackMap locals:
      StackMap stack:
            new javax.management.openmbean.OpenDataException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot map type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* objType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.reflect.Type objType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0        objType  Ljava/lang/reflect/Type;
            3    4     1  componentType  Ljava/lang/reflect/Type;
            6   14     1       objClass  Ljava/lang/Class<*>;
           10   11     2  componentType  Ljava/lang/reflect/Type;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
         Name  Flags
      objType  

  private static <T extends java.lang.Enum<T>> com.sun.jmx.mbeanserver.OpenConverter makeEnumConverter(java.lang.Class<?>, java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.Class enumClass
        start local 1 // java.lang.Class fake
         0: .line 319
            aload 0 /* enumClass */
            invokestatic com.sun.jmx.mbeanserver.Util.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 2 /* enumClassT */
        start local 2 // java.lang.Class enumClassT
         1: .line 320
            new com.sun.jmx.mbeanserver.OpenConverter$EnumConverter
            dup
            aload 2 /* enumClassT */
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$EnumConverter.<init>:(Ljava/lang/Class;)V
            areturn
        end local 2 // java.lang.Class enumClassT
        end local 1 // java.lang.Class fake
        end local 0 // java.lang.Class enumClass
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0   enumClass  Ljava/lang/Class<*>;
            0    2     1        fake  Ljava/lang/Class<TT;>;
            1    2     2  enumClassT  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<*>;Ljava/lang/Class<TT;>;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    MethodParameters:
           Name  Flags
      enumClass  
      fake       

  private static com.sun.jmx.mbeanserver.OpenConverter makeArrayOrCollectionConverter(java.lang.reflect.Type, java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // java.lang.reflect.Type collectionType
        start local 1 // java.lang.reflect.Type elementType
         0: .line 332
            aload 1 /* elementType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.toConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            astore 2 /* elementConverter */
        start local 2 // com.sun.jmx.mbeanserver.OpenConverter elementConverter
         1: .line 333
            aload 2 /* elementConverter */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.getOpenType:()Ljavax/management/openmbean/OpenType;
            astore 3 /* elementOpenType */
        start local 3 // javax.management.openmbean.OpenType elementOpenType
         2: .line 334
            aload 3 /* elementOpenType */
            invokestatic javax.management.openmbean.ArrayType.getArrayType:(Ljavax/management/openmbean/OpenType;)Ljavax/management/openmbean/ArrayType;
            astore 4 /* openType */
        start local 4 // javax.management.openmbean.ArrayType openType
         3: .line 335
            aload 2 /* elementConverter */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.getOpenClass:()Ljava/lang/Class;
            astore 5 /* elementOpenClass */
        start local 5 // java.lang.Class elementOpenClass
         4: .line 339
            aload 5 /* elementOpenClass */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 7
         5: .line 340
            new java.lang.StringBuilder
            dup
            ldc "["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* elementOpenClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 7 /* openArrayClassName */
        start local 7 // java.lang.String openArrayClassName
         6: goto 8
        end local 7 // java.lang.String openArrayClassName
         7: .line 342
      StackMap locals: java.lang.reflect.Type java.lang.reflect.Type com.sun.jmx.mbeanserver.OpenConverter javax.management.openmbean.OpenType javax.management.openmbean.ArrayType java.lang.Class
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "[L"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* elementOpenClass */
            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;
            astore 7 /* openArrayClassName */
        start local 7 // java.lang.String openArrayClassName
         8: .line 344
      StackMap locals: java.lang.reflect.Type java.lang.reflect.Type com.sun.jmx.mbeanserver.OpenConverter javax.management.openmbean.OpenType javax.management.openmbean.ArrayType java.lang.Class top java.lang.String
      StackMap stack:
            aload 7 /* openArrayClassName */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* openArrayClass */
        start local 6 // java.lang.Class openArrayClass
         9: .line 345
            goto 12
        end local 6 // java.lang.Class openArrayClass
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
        10: astore 8 /* e */
        start local 8 // java.lang.ClassNotFoundException e
        11: .line 346
            ldc "Cannot obtain array class"
            aload 8 /* e */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.openDataException:(Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/management/openmbean/OpenDataException;
            athrow
        end local 8 // java.lang.ClassNotFoundException e
        start local 6 // java.lang.Class openArrayClass
        12: .line 349
      StackMap locals: java.lang.reflect.Type java.lang.reflect.Type com.sun.jmx.mbeanserver.OpenConverter javax.management.openmbean.OpenType javax.management.openmbean.ArrayType java.lang.Class java.lang.Class java.lang.String
      StackMap stack:
            aload 0 /* collectionType */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 17
        13: .line 350
            new com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter
            dup
            aload 0 /* collectionType */
        14: .line 351
            aload 4 /* openType */
            aload 6 /* openArrayClass */
        15: .line 352
            aload 2 /* elementConverter */
        16: .line 350
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/ArrayType;Ljava/lang/Class;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
            areturn
        17: .line 354
      StackMap locals:
      StackMap stack:
            aload 2 /* elementConverter */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.isIdentity:()Z
            ifeq 22
        18: .line 355
            new com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter
            dup
            aload 0 /* collectionType */
        19: .line 356
            aload 4 /* openType */
        20: .line 357
            aload 6 /* openArrayClass */
        21: .line 355
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/OpenType;Ljava/lang/Class;)V
            areturn
        22: .line 359
      StackMap locals:
      StackMap stack:
            new com.sun.jmx.mbeanserver.OpenConverter$ArrayConverter
            dup
            aload 0 /* collectionType */
        23: .line 360
            aload 4 /* openType */
        24: .line 361
            aload 6 /* openArrayClass */
        25: .line 362
            aload 2 /* elementConverter */
        26: .line 359
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$ArrayConverter.<init>:(Ljava/lang/reflect/Type;Ljavax/management/openmbean/ArrayType;Ljava/lang/Class;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
            areturn
        end local 7 // java.lang.String openArrayClassName
        end local 6 // java.lang.Class openArrayClass
        end local 5 // java.lang.Class elementOpenClass
        end local 4 // javax.management.openmbean.ArrayType openType
        end local 3 // javax.management.openmbean.OpenType elementOpenType
        end local 2 // com.sun.jmx.mbeanserver.OpenConverter elementConverter
        end local 1 // java.lang.reflect.Type elementType
        end local 0 // java.lang.reflect.Type collectionType
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   27     0      collectionType  Ljava/lang/reflect/Type;
            0   27     1         elementType  Ljava/lang/reflect/Type;
            1   27     2    elementConverter  Lcom/sun/jmx/mbeanserver/OpenConverter;
            2   27     3     elementOpenType  Ljavax/management/openmbean/OpenType<*>;
            3   27     4            openType  Ljavax/management/openmbean/ArrayType<*>;
            4   27     5    elementOpenClass  Ljava/lang/Class<*>;
            9   10     6      openArrayClass  Ljava/lang/Class<*>;
           12   27     6      openArrayClass  Ljava/lang/Class<*>;
            6    7     7  openArrayClassName  Ljava/lang/String;
            8   27     7  openArrayClassName  Ljava/lang/String;
           11   12     8                   e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.ClassNotFoundException
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
                Name  Flags
      collectionType  
      elementType     

  private static com.sun.jmx.mbeanserver.OpenConverter makeTabularConverter(java.lang.reflect.Type, boolean, java.lang.reflect.Type, java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;ZLjava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=11, args_size=4
        start local 0 // java.lang.reflect.Type objType
        start local 1 // boolean sortedMap
        start local 2 // java.lang.reflect.Type keyType
        start local 3 // java.lang.reflect.Type valueType
         0: .line 375
            aload 0 /* objType */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 4 /* objTypeName */
        start local 4 // java.lang.String objTypeName
         1: .line 376
            aload 2 /* keyType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.toConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            astore 5 /* keyConverter */
        start local 5 // com.sun.jmx.mbeanserver.OpenConverter keyConverter
         2: .line 377
            aload 3 /* valueType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.toConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            astore 6 /* valueConverter */
        start local 6 // com.sun.jmx.mbeanserver.OpenConverter valueConverter
         3: .line 378
            aload 5 /* keyConverter */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.getOpenType:()Ljavax/management/openmbean/OpenType;
            astore 7 /* keyOpenType */
        start local 7 // javax.management.openmbean.OpenType keyOpenType
         4: .line 379
            aload 6 /* valueConverter */
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.getOpenType:()Ljavax/management/openmbean/OpenType;
            astore 8 /* valueOpenType */
        start local 8 // javax.management.openmbean.OpenType valueOpenType
         5: .line 381
            new javax.management.openmbean.CompositeType
            dup
            aload 4 /* objTypeName */
         6: .line 382
            aload 4 /* objTypeName */
         7: .line 383
            getstatic com.sun.jmx.mbeanserver.OpenConverter.keyValueArray:[Ljava/lang/String;
         8: .line 384
            getstatic com.sun.jmx.mbeanserver.OpenConverter.keyValueArray:[Ljava/lang/String;
         9: .line 385
            iconst_2
            anewarray javax.management.openmbean.OpenType
            dup
            iconst_0
            aload 7 /* keyOpenType */
            aastore
            dup
            iconst_1
            aload 8 /* valueOpenType */
            aastore
        10: .line 381
            invokespecial javax.management.openmbean.CompositeType.<init>:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljavax/management/openmbean/OpenType;)V
        11: .line 380
            astore 9 /* rowType */
        start local 9 // javax.management.openmbean.CompositeType rowType
        12: .line 387
            new javax.management.openmbean.TabularType
            dup
            aload 4 /* objTypeName */
            aload 4 /* objTypeName */
            aload 9 /* rowType */
            getstatic com.sun.jmx.mbeanserver.OpenConverter.keyArray:[Ljava/lang/String;
            invokespecial javax.management.openmbean.TabularType.<init>:(Ljava/lang/String;Ljava/lang/String;Ljavax/management/openmbean/CompositeType;[Ljava/lang/String;)V
        13: .line 386
            astore 10 /* tabularType */
        start local 10 // javax.management.openmbean.TabularType tabularType
        14: .line 388
            new com.sun.jmx.mbeanserver.OpenConverter$TabularConverter
            dup
            aload 0 /* objType */
            iload 1 /* sortedMap */
            aload 10 /* tabularType */
        15: .line 389
            aload 5 /* keyConverter */
            aload 6 /* valueConverter */
        16: .line 388
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$TabularConverter.<init>:(Ljava/lang/reflect/Type;ZLjavax/management/openmbean/TabularType;Lcom/sun/jmx/mbeanserver/OpenConverter;Lcom/sun/jmx/mbeanserver/OpenConverter;)V
            areturn
        end local 10 // javax.management.openmbean.TabularType tabularType
        end local 9 // javax.management.openmbean.CompositeType rowType
        end local 8 // javax.management.openmbean.OpenType valueOpenType
        end local 7 // javax.management.openmbean.OpenType keyOpenType
        end local 6 // com.sun.jmx.mbeanserver.OpenConverter valueConverter
        end local 5 // com.sun.jmx.mbeanserver.OpenConverter keyConverter
        end local 4 // java.lang.String objTypeName
        end local 3 // java.lang.reflect.Type valueType
        end local 2 // java.lang.reflect.Type keyType
        end local 1 // boolean sortedMap
        end local 0 // java.lang.reflect.Type objType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   17     0         objType  Ljava/lang/reflect/Type;
            0   17     1       sortedMap  Z
            0   17     2         keyType  Ljava/lang/reflect/Type;
            0   17     3       valueType  Ljava/lang/reflect/Type;
            1   17     4     objTypeName  Ljava/lang/String;
            2   17     5    keyConverter  Lcom/sun/jmx/mbeanserver/OpenConverter;
            3   17     6  valueConverter  Lcom/sun/jmx/mbeanserver/OpenConverter;
            4   17     7     keyOpenType  Ljavax/management/openmbean/OpenType;
            5   17     8   valueOpenType  Ljavax/management/openmbean/OpenType;
           12   17     9         rowType  Ljavax/management/openmbean/CompositeType;
           14   17    10     tabularType  Ljavax/management/openmbean/TabularType;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
           Name  Flags
      objType    
      sortedMap  
      keyType    
      valueType  

  private static com.sun.jmx.mbeanserver.OpenConverter makeParameterizedConverter(java.lang.reflect.ParameterizedType);
    descriptor: (Ljava/lang/reflect/ParameterizedType;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.reflect.ParameterizedType objType
         0: .line 400
            aload 0 /* objType */
            invokeinterface java.lang.reflect.ParameterizedType.getRawType:()Ljava/lang/reflect/Type;
            astore 1 /* rawType */
        start local 1 // java.lang.reflect.Type rawType
         1: .line 402
            aload 1 /* rawType */
            instanceof java.lang.Class
            ifeq 20
         2: .line 403
            aload 1 /* rawType */
            checkcast java.lang.Class
            astore 2 /* c */
        start local 2 // java.lang.Class c
         3: .line 404
            aload 2 /* c */
            ldc Ljava/util/List;
            if_acmpeq 4
            aload 2 /* c */
            ldc Ljava/util/Set;
            if_acmpeq 4
            aload 2 /* c */
            ldc Ljava/util/SortedSet;
            if_acmpne 9
         4: .line 405
      StackMap locals: java.lang.reflect.Type java.lang.Class
      StackMap stack:
            aload 0 /* objType */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            astore 3 /* actuals */
        start local 3 // java.lang.reflect.Type[] actuals
         5: .line 406
            getstatic com.sun.jmx.mbeanserver.OpenConverter.$assertionsDisabled:Z
            ifne 6
            aload 3 /* actuals */
            arraylength
            iconst_1
            if_icmpeq 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 407
      StackMap locals: java.lang.reflect.Type[]
      StackMap stack:
            aload 2 /* c */
            ldc Ljava/util/SortedSet;
            if_acmpne 8
         7: .line 408
            aload 2 /* c */
            aload 3 /* actuals */
            iconst_0
            aaload
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.mustBeComparable:(Ljava/lang/Class;Ljava/lang/reflect/Type;)V
         8: .line 409
      StackMap locals:
      StackMap stack:
            aload 0 /* objType */
            aload 3 /* actuals */
            iconst_0
            aaload
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeArrayOrCollectionConverter:(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        end local 3 // java.lang.reflect.Type[] actuals
         9: .line 411
      StackMap locals:
      StackMap stack:
            aload 2 /* c */
            ldc Ljava/util/SortedMap;
            if_acmpne 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 3 /* sortedMap */
        start local 3 // boolean sortedMap
        12: .line 412
            aload 2 /* c */
            ldc Ljava/util/Map;
            if_acmpeq 13
            iload 3 /* sortedMap */
            ifeq 20
        13: .line 413
      StackMap locals: int
      StackMap stack:
            aload 0 /* objType */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            astore 4 /* actuals */
        start local 4 // java.lang.reflect.Type[] actuals
        14: .line 414
            getstatic com.sun.jmx.mbeanserver.OpenConverter.$assertionsDisabled:Z
            ifne 15
            aload 4 /* actuals */
            arraylength
            iconst_2
            if_icmpeq 15
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        15: .line 415
      StackMap locals: java.lang.reflect.Type[]
      StackMap stack:
            iload 3 /* sortedMap */
            ifeq 17
        16: .line 416
            aload 2 /* c */
            aload 4 /* actuals */
            iconst_0
            aaload
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.mustBeComparable:(Ljava/lang/Class;Ljava/lang/reflect/Type;)V
        17: .line 417
      StackMap locals:
      StackMap stack:
            aload 0 /* objType */
            iload 3 /* sortedMap */
        18: .line 418
            aload 4 /* actuals */
            iconst_0
            aaload
            aload 4 /* actuals */
            iconst_1
            aaload
        19: .line 417
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.makeTabularConverter:(Ljava/lang/reflect/Type;ZLjava/lang/reflect/Type;Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            areturn
        end local 4 // java.lang.reflect.Type[] actuals
        end local 3 // boolean sortedMap
        end local 2 // java.lang.Class c
        20: .line 422
      StackMap locals:
      StackMap stack:
            new javax.management.openmbean.OpenDataException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot convert type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* objType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.reflect.Type rawType
        end local 0 // java.lang.reflect.ParameterizedType objType
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0    objType  Ljava/lang/reflect/ParameterizedType;
            1   21     1    rawType  Ljava/lang/reflect/Type;
            3   20     2          c  Ljava/lang/Class;
            5    9     3    actuals  [Ljava/lang/reflect/Type;
           12   20     3  sortedMap  Z
           14   20     4    actuals  [Ljava/lang/reflect/Type;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
         Name  Flags
      objType  

  private static com.sun.jmx.mbeanserver.OpenConverter makeMXBeanConverter(java.lang.reflect.Type);
    descriptor: (Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.reflect.Type t
         0: .line 427
            new com.sun.jmx.mbeanserver.OpenConverter$MXBeanConverter
            dup
            aload 0 /* t */
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$MXBeanConverter.<init>:(Ljava/lang/reflect/Type;)V
            areturn
        end local 0 // java.lang.reflect.Type t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     t  Ljava/lang/reflect/Type;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
      Name  Flags
      t     

  private static com.sun.jmx.mbeanserver.OpenConverter makeCompositeConverter(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lcom/sun/jmx/mbeanserver/OpenConverter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=13, args_size=1
        start local 0 // java.lang.Class c
         0: .line 437
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "com.sun.management.GcInfo"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 438
            aload 0 /* c */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ifnonnull 3
         2: .line 436
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 1 /* gcInfoHack */
        start local 1 // boolean gcInfoHack
         5: .line 441
            aload 0 /* c */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            invokestatic com.sun.jmx.mbeanserver.MBeanAnalyzer.eliminateCovariantMethods:([Ljava/lang/reflect/Method;)Ljava/util/List;
         6: .line 440
            astore 2 /* methods */
        start local 2 // java.util.List methods
         7: .line 442
            invokestatic com.sun.jmx.mbeanserver.Util.newSortedMap:()Ljava/util/SortedMap;
            astore 3 /* getterMap */
        start local 3 // java.util.SortedMap getterMap
         8: .line 447
            aload 2 /* methods */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 25
      StackMap locals: java.lang.Class int java.util.List java.util.SortedMap top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 4 /* method */
        start local 4 // java.lang.reflect.Method method
        10: .line 448
            aload 4 /* method */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.propertyName:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 6 /* propertyName */
        start local 6 // java.lang.String propertyName
        11: .line 450
            aload 6 /* propertyName */
            ifnonnull 13
        12: .line 451
            goto 25
        13: .line 452
      StackMap locals: java.lang.Class int java.util.List java.util.SortedMap java.lang.reflect.Method java.util.Iterator java.lang.String
      StackMap stack:
            iload 1 /* gcInfoHack */
            ifeq 15
            aload 6 /* propertyName */
            ldc "CompositeType"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        14: .line 453
            goto 25
        15: .line 456
      StackMap locals:
      StackMap stack:
            aload 3 /* getterMap */
            aload 6 /* propertyName */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.decapitalize:(Ljava/lang/String;)Ljava/lang/String;
        16: .line 457
            aload 4 /* method */
        17: .line 456
            invokeinterface java.util.SortedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Method
        18: .line 455
            astore 7 /* old */
        start local 7 // java.lang.reflect.Method old
        19: .line 458
            aload 7 /* old */
            ifnull 25
        20: .line 460
            new java.lang.StringBuilder
            dup
            ldc "Class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " has method name clash: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 461
            aload 7 /* old */
            invokevirtual java.lang.reflect.Method.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;
            aload 4 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 460
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 459
            astore 8 /* msg */
        start local 8 // java.lang.String msg
        24: .line 462
            new javax.management.openmbean.OpenDataException
            dup
            aload 8 /* msg */
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // java.lang.String msg
        end local 7 // java.lang.reflect.Method old
        end local 6 // java.lang.String propertyName
        end local 4 // java.lang.reflect.Method method
        25: .line 447
      StackMap locals: java.lang.Class int java.util.List java.util.SortedMap top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        26: .line 466
            aload 3 /* getterMap */
            invokeinterface java.util.SortedMap.size:()I
            istore 4 /* nitems */
        start local 4 // int nitems
        27: .line 468
            iload 4 /* nitems */
            ifne 31
        28: .line 469
            new javax.management.openmbean.OpenDataException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can't map "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        29: .line 470
            ldc " to an open data type"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        30: .line 469
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 473
      StackMap locals: java.lang.Class int java.util.List java.util.SortedMap int
      StackMap stack:
            iload 4 /* nitems */
            anewarray java.lang.reflect.Method
            astore 5 /* getters */
        start local 5 // java.lang.reflect.Method[] getters
        32: .line 474
            iload 4 /* nitems */
            anewarray java.lang.String
            astore 6 /* itemNames */
        start local 6 // java.lang.String[] itemNames
        33: .line 475
            iload 4 /* nitems */
            anewarray javax.management.openmbean.OpenType
            astore 7 /* openTypes */
        start local 7 // javax.management.openmbean.OpenType[] openTypes
        34: .line 476
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        35: .line 477
            aload 3 /* getterMap */
            invokeinterface java.util.SortedMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 10
            goto 43
      StackMap locals: java.lang.Class int java.util.List java.util.SortedMap int java.lang.reflect.Method[] java.lang.String[] javax.management.openmbean.OpenType[] int top java.util.Iterator
      StackMap stack:
        36: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 9 /* entry */
        start local 9 // java.util.Map$Entry entry
        37: .line 478
            aload 6 /* itemNames */
            iload 8 /* i */
            aload 9 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aastore
        38: .line 479
            aload 9 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 11 /* getter */
        start local 11 // java.lang.reflect.Method getter
        39: .line 480
            aload 5 /* getters */
            iload 8 /* i */
            aload 11 /* getter */
            aastore
        40: .line 481
            aload 11 /* getter */
            invokevirtual java.lang.reflect.Method.getGenericReturnType:()Ljava/lang/reflect/Type;
            astore 12 /* retType */
        start local 12 // java.lang.reflect.Type retType
        41: .line 482
            aload 7 /* openTypes */
            iload 8 /* i */
            aload 12 /* retType */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.toConverter:(Ljava/lang/reflect/Type;)Lcom/sun/jmx/mbeanserver/OpenConverter;
            invokevirtual com.sun.jmx.mbeanserver.OpenConverter.getOpenType:()Ljavax/management/openmbean/OpenType;
            aastore
        42: .line 483
            iinc 8 /* i */ 1
        end local 12 // java.lang.reflect.Type retType
        end local 11 // java.lang.reflect.Method getter
        end local 9 // java.util.Map$Entry entry
        43: .line 477
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 36
        44: .line 487
            new javax.management.openmbean.CompositeType
            dup
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        45: .line 488
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        46: .line 489
            aload 6 /* itemNames */
        47: .line 490
            aload 6 /* itemNames */
        48: .line 491
            aload 7 /* openTypes */
        49: .line 487
            invokespecial javax.management.openmbean.CompositeType.<init>:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljavax/management/openmbean/OpenType;)V
        50: .line 486
            astore 9 /* compositeType */
        start local 9 // javax.management.openmbean.CompositeType compositeType
        51: .line 493
            new com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter
            dup
            aload 0 /* c */
        52: .line 494
            aload 9 /* compositeType */
        53: .line 495
            aload 6 /* itemNames */
        54: .line 496
            aload 5 /* getters */
        55: .line 493
            invokespecial com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter.<init>:(Ljava/lang/Class;Ljavax/management/openmbean/CompositeType;[Ljava/lang/String;[Ljava/lang/reflect/Method;)V
            areturn
        end local 9 // javax.management.openmbean.CompositeType compositeType
        end local 8 // int i
        end local 7 // javax.management.openmbean.OpenType[] openTypes
        end local 6 // java.lang.String[] itemNames
        end local 5 // java.lang.reflect.Method[] getters
        end local 4 // int nitems
        end local 3 // java.util.SortedMap getterMap
        end local 2 // java.util.List methods
        end local 1 // boolean gcInfoHack
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   56     0              c  Ljava/lang/Class;
            5   56     1     gcInfoHack  Z
            7   56     2        methods  Ljava/util/List<Ljava/lang/reflect/Method;>;
            8   56     3      getterMap  Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/reflect/Method;>;
           10   25     4         method  Ljava/lang/reflect/Method;
           11   25     6   propertyName  Ljava/lang/String;
           19   25     7            old  Ljava/lang/reflect/Method;
           24   25     8            msg  Ljava/lang/String;
           27   56     4         nitems  I
           32   56     5        getters  [Ljava/lang/reflect/Method;
           33   56     6      itemNames  [Ljava/lang/String;
           34   56     7      openTypes  [Ljavax/management/openmbean/OpenType;
           35   56     8              i  I
           37   43     9          entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/reflect/Method;>;
           39   43    11         getter  Ljava/lang/reflect/Method;
           41   43    12        retType  Ljava/lang/reflect/Type;
           51   56     9  compositeType  Ljavax/management/openmbean/CompositeType;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
      Name  Flags
      c     

  static java.io.InvalidObjectException invalidObjectException(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)Ljava/io/InvalidObjectException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String msg
        start local 1 // java.lang.Throwable cause
         0: .line 1381
            new java.io.InvalidObjectException
            dup
            aload 0 /* msg */
            invokespecial java.io.InvalidObjectException.<init>:(Ljava/lang/String;)V
            aload 1 /* cause */
            invokestatic com.sun.jmx.remote.util.EnvHelp.initCause:(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast java.io.InvalidObjectException
            areturn
        end local 1 // java.lang.Throwable cause
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0    msg  Ljava/lang/String;
            0    1     1  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      msg    
      cause  

  static java.io.InvalidObjectException invalidObjectException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/io/InvalidObjectException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Throwable cause
         0: .line 1385
            aload 0 /* cause */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            aload 0 /* cause */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.invalidObjectException:(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/io/InvalidObjectException;
            areturn
        end local 0 // java.lang.Throwable cause
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      cause  

  static javax.management.openmbean.OpenDataException openDataException(java.lang.String, java.lang.Throwable);
    descriptor: (Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/management/openmbean/OpenDataException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String msg
        start local 1 // java.lang.Throwable cause
         0: .line 1389
            new javax.management.openmbean.OpenDataException
            dup
            aload 0 /* msg */
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            aload 1 /* cause */
            invokestatic com.sun.jmx.remote.util.EnvHelp.initCause:(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast javax.management.openmbean.OpenDataException
            areturn
        end local 1 // java.lang.Throwable cause
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0    msg  Ljava/lang/String;
            0    1     1  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      msg    
      cause  

  static javax.management.openmbean.OpenDataException openDataException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljavax/management/openmbean/OpenDataException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Throwable cause
         0: .line 1393
            aload 0 /* cause */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            aload 0 /* cause */
            invokestatic com.sun.jmx.mbeanserver.OpenConverter.openDataException:(Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/management/openmbean/OpenDataException;
            areturn
        end local 0 // java.lang.Throwable cause
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      cause  

  static void mustBeComparable(java.lang.Class, java.lang.reflect.Type);
    descriptor: (Ljava/lang/Class;Ljava/lang/reflect/Type;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.Class collection
        start local 1 // java.lang.reflect.Type element
         0: .line 1398
            aload 1 /* element */
            instanceof java.lang.Class
            ifeq 2
         1: .line 1399
            ldc Ljava/lang/Comparable;
            aload 1 /* element */
            checkcast java.lang.Class
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 8
         2: .line 1401
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Parameter class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* element */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 1402
            aload 0 /* collection */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " does not implement "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 1403
            ldc Ljava/lang/Comparable;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 1401
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 1400
            astore 2 /* msg */
        start local 2 // java.lang.String msg
         7: .line 1404
            new javax.management.openmbean.OpenDataException
            dup
            aload 2 /* msg */
            invokespecial javax.management.openmbean.OpenDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String msg
         8: .line 1406
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.reflect.Type element
        end local 0 // java.lang.Class collection
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  collection  Ljava/lang/Class;
            0    9     1     element  Ljava/lang/reflect/Type;
            7    8     2         msg  Ljava/lang/String;
    Exceptions:
      throws javax.management.openmbean.OpenDataException
    MethodParameters:
            Name  Flags
      collection  
      element     

  public static java.lang.String decapitalize(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 1422
            aload 0 /* name */
            ifnull 1
            aload 0 /* name */
            invokevirtual java.lang.String.length:()I
            ifne 2
         1: .line 1423
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            areturn
         2: .line 1425
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            iconst_0
            iconst_1
            invokestatic java.lang.Character.offsetByCodePoints:(Ljava/lang/CharSequence;II)I
            istore 1 /* offset1 */
        start local 1 // int offset1
         3: .line 1427
            iload 1 /* offset1 */
            aload 0 /* name */
            invokevirtual java.lang.String.length:()I
            if_icmpge 6
         4: .line 1428
            aload 0 /* name */
            iload 1 /* offset1 */
            invokevirtual java.lang.String.codePointAt:(I)I
            invokestatic java.lang.Character.isUpperCase:(I)Z
            ifeq 6
         5: .line 1429
            aload 0 /* name */
            areturn
         6: .line 1430
      StackMap locals: int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* name */
            iconst_0
            iload 1 /* offset1 */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 1431
            aload 0 /* name */
            iload 1 /* offset1 */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 1430
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // int offset1
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     name  Ljava/lang/String;
            3    9     1  offset1  I
    MethodParameters:
      Name  Flags
      name  

  static java.lang.String capitalize(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 1441
            aload 0 /* name */
            ifnull 1
            aload 0 /* name */
            invokevirtual java.lang.String.length:()I
            ifne 2
         1: .line 1442
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            areturn
         2: .line 1443
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            iconst_0
            iconst_1
            invokevirtual java.lang.String.offsetByCodePoints:(II)I
            istore 1 /* offset1 */
        start local 1 // int offset1
         3: .line 1444
            new java.lang.StringBuilder
            dup
            aload 0 /* name */
            iconst_0
            iload 1 /* offset1 */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 1445
            aload 0 /* name */
            iload 1 /* offset1 */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 1444
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // int offset1
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     name  Ljava/lang/String;
            3    6     1  offset1  I
    MethodParameters:
      Name  Flags
      name  

  public static java.lang.String propertyName(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.reflect.Method m
         0: .line 1449
            aconst_null
            astore 1 /* rest */
        start local 1 // java.lang.String rest
         1: .line 1450
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         2: .line 1451
            aload 2 /* name */
            ldc "get"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 1452
            aload 2 /* name */
            iconst_3
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* rest */
            goto 6
         4: .line 1453
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 2 /* name */
            ldc "is"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 6
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 6
         5: .line 1454
            aload 2 /* name */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* rest */
         6: .line 1455
      StackMap locals:
      StackMap stack:
            aload 1 /* rest */
            ifnull 10
            aload 1 /* rest */
            invokevirtual java.lang.String.length:()I
            ifeq 10
         7: .line 1456
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifgt 10
         8: .line 1457
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpeq 10
         9: .line 1458
            aload 2 /* name */
            ldc "getClass"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 1459
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        11: .line 1460
      StackMap locals:
      StackMap stack:
            aload 1 /* rest */
            areturn
        end local 2 // java.lang.String name
        end local 1 // java.lang.String rest
        end local 0 // java.lang.reflect.Method m
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0     m  Ljava/lang/reflect/Method;
            1   12     1  rest  Ljava/lang/String;
            2   12     2  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      m     
}
SourceFile: "OpenConverter.java"
NestMembers:
  com.sun.jmx.mbeanserver.OpenConverter$ArrayConverter  com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilder  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderCheckGetters  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaConstructor  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaConstructor$Constr  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaFrom  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaProxy  com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaSetters  com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter  com.sun.jmx.mbeanserver.OpenConverter$ConverterMap  com.sun.jmx.mbeanserver.OpenConverter$EnumConverter  com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter  com.sun.jmx.mbeanserver.OpenConverter$MXBeanConverter  com.sun.jmx.mbeanserver.OpenConverter$TabularConverter
InnerClasses:
  private final ArrayConverter = com.sun.jmx.mbeanserver.OpenConverter$ArrayConverter of com.sun.jmx.mbeanserver.OpenConverter
  private final CollectionConverter = com.sun.jmx.mbeanserver.OpenConverter$CollectionConverter of com.sun.jmx.mbeanserver.OpenConverter
  private abstract CompositeBuilder = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilder of com.sun.jmx.mbeanserver.OpenConverter
  private CompositeBuilderCheckGetters = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderCheckGetters of com.sun.jmx.mbeanserver.OpenConverter
  private final CompositeBuilderViaConstructor = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaConstructor of com.sun.jmx.mbeanserver.OpenConverter
  private final CompositeBuilderViaFrom = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaFrom of com.sun.jmx.mbeanserver.OpenConverter
  private final CompositeBuilderViaProxy = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaProxy of com.sun.jmx.mbeanserver.OpenConverter
  private CompositeBuilderViaSetters = com.sun.jmx.mbeanserver.OpenConverter$CompositeBuilderViaSetters of com.sun.jmx.mbeanserver.OpenConverter
  private final CompositeConverter = com.sun.jmx.mbeanserver.OpenConverter$CompositeConverter of com.sun.jmx.mbeanserver.OpenConverter
  private final ConverterMap = com.sun.jmx.mbeanserver.OpenConverter$ConverterMap of com.sun.jmx.mbeanserver.OpenConverter
  private final EnumConverter = com.sun.jmx.mbeanserver.OpenConverter$EnumConverter of com.sun.jmx.mbeanserver.OpenConverter
  private final IdentityConverter = com.sun.jmx.mbeanserver.OpenConverter$IdentityConverter of com.sun.jmx.mbeanserver.OpenConverter
  private final MXBeanConverter = com.sun.jmx.mbeanserver.OpenConverter$MXBeanConverter of com.sun.jmx.mbeanserver.OpenConverter
  private final TabularConverter = com.sun.jmx.mbeanserver.OpenConverter$TabularConverter of com.sun.jmx.mbeanserver.OpenConverter
  public abstract Entry = java.util.Map$Entry of java.util.Map