class com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker implements com.sun.jmx.mbeanserver.MBeanAnalyzer$MBeanVisitor<M>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker
  super_class: java.lang.Object
{
  private final java.util.List<javax.management.MBeanAttributeInfo> attrs;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljavax/management/MBeanAttributeInfo;>;

  private final java.util.List<javax.management.MBeanOperationInfo> ops;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljavax/management/MBeanOperationInfo;>;

  final com.sun.jmx.mbeanserver.MBeanIntrospector this$0;
    descriptor: Lcom/sun/jmx/mbeanserver/MBeanIntrospector;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(com.sun.jmx.mbeanserver.MBeanIntrospector);
    descriptor: (Lcom/sun/jmx/mbeanserver/MBeanIntrospector;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
         0: .line 317
            aload 0 /* this */
            aload 1
            putfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.this$0:Lcom/sun/jmx/mbeanserver/MBeanIntrospector;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 367
            aload 0 /* this */
            invokestatic com.sun.jmx.mbeanserver.Util.newList:()Ljava/util/List;
            putfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.attrs:Ljava/util/List;
         2: .line 368
            aload 0 /* this */
            invokestatic com.sun.jmx.mbeanserver.Util.newList:()Ljava/util/List;
            putfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.ops:Ljava/util/List;
         3: .line 317
            return
        end local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/jmx/mbeanserver/MBeanIntrospector$MBeanInfoMaker;
    MethodParameters:
        Name  Flags
      this$0  final

  public void visitAttribute(java.lang.String, M, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
        start local 1 // java.lang.String attributeName
        start local 2 // java.lang.Object getter
        start local 3 // java.lang.Object setter
         0: .line 324
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.this$0:Lcom/sun/jmx/mbeanserver/MBeanIntrospector;
            aload 1 /* attributeName */
            aload 2 /* getter */
            aload 3 /* setter */
            invokevirtual com.sun.jmx.mbeanserver.MBeanIntrospector.getMBeanAttributeInfo:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljavax/management/MBeanAttributeInfo;
         1: .line 323
            astore 4 /* mbai */
        start local 4 // javax.management.MBeanAttributeInfo mbai
         2: .line 326
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.attrs:Ljava/util/List;
            aload 4 /* mbai */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 327
            return
        end local 4 // javax.management.MBeanAttributeInfo mbai
        end local 3 // java.lang.Object setter
        end local 2 // java.lang.Object getter
        end local 1 // java.lang.String attributeName
        end local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/sun/jmx/mbeanserver/MBeanIntrospector$MBeanInfoMaker;
            0    4     1  attributeName  Ljava/lang/String;
            0    4     2         getter  TM;
            0    4     3         setter  TM;
            2    4     4           mbai  Ljavax/management/MBeanAttributeInfo;
    Signature: (Ljava/lang/String;TM;TM;)V
    MethodParameters:
               Name  Flags
      attributeName  
      getter         
      setter         

  public void visitOperation(java.lang.String, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
        start local 1 // java.lang.String operationName
        start local 2 // java.lang.Object operation
         0: .line 332
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.this$0:Lcom/sun/jmx/mbeanserver/MBeanIntrospector;
            aload 1 /* operationName */
            aload 2 /* operation */
            invokevirtual com.sun.jmx.mbeanserver.MBeanIntrospector.getMBeanOperationInfo:(Ljava/lang/String;Ljava/lang/Object;)Ljavax/management/MBeanOperationInfo;
         1: .line 331
            astore 3 /* mboi */
        start local 3 // javax.management.MBeanOperationInfo mboi
         2: .line 334
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.ops:Ljava/util/List;
            aload 3 /* mboi */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 335
            return
        end local 3 // javax.management.MBeanOperationInfo mboi
        end local 2 // java.lang.Object operation
        end local 1 // java.lang.String operationName
        end local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/sun/jmx/mbeanserver/MBeanIntrospector$MBeanInfoMaker;
            0    4     1  operationName  Ljava/lang/String;
            0    4     2      operation  TM;
            2    4     3           mboi  Ljavax/management/MBeanOperationInfo;
    Signature: (Ljava/lang/String;TM;)V
    MethodParameters:
               Name  Flags
      operationName  
      operation      

  javax.management.MBeanInfo makeMBeanInfo(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljavax/management/MBeanInfo;
    flags: (0x0000) 
    Code:
      stack=9, locals=10, args_size=3
        start local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
        start local 1 // java.lang.Class mbeanInterface
        start local 2 // java.lang.String description
         0: .line 342
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.attrs:Ljava/util/List;
            iconst_0
            anewarray javax.management.MBeanAttributeInfo
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.management.MBeanAttributeInfo[]
         1: .line 341
            astore 3 /* attrArray */
        start local 3 // javax.management.MBeanAttributeInfo[] attrArray
         2: .line 344
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.ops:Ljava/util/List;
            iconst_0
            anewarray javax.management.MBeanOperationInfo
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.management.MBeanOperationInfo[]
         3: .line 343
            astore 4 /* opArray */
        start local 4 // javax.management.MBeanOperationInfo[] opArray
         4: .line 346
            new java.lang.StringBuilder
            dup
            ldc "interfaceClassName="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* mbeanInterface */
            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;
         5: .line 345
            astore 5 /* interfaceClassName */
        start local 5 // java.lang.String interfaceClassName
         6: .line 348
            new javax.management.ImmutableDescriptor
            dup
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 5 /* interfaceClassName */
            aastore
            invokespecial javax.management.ImmutableDescriptor.<init>:([Ljava/lang/String;)V
         7: .line 347
            astore 6 /* classNameDescriptor */
        start local 6 // javax.management.Descriptor classNameDescriptor
         8: .line 349
            aload 0 /* this */
            getfield com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker.this$0:Lcom/sun/jmx/mbeanserver/MBeanIntrospector;
            invokevirtual com.sun.jmx.mbeanserver.MBeanIntrospector.getBasicMBeanDescriptor:()Ljavax/management/Descriptor;
            astore 7 /* mbeanDescriptor */
        start local 7 // javax.management.Descriptor mbeanDescriptor
         9: .line 351
            aload 1 /* mbeanInterface */
            invokestatic com.sun.jmx.mbeanserver.Introspector.descriptorForElement:(Ljava/lang/reflect/AnnotatedElement;)Ljavax/management/Descriptor;
        10: .line 350
            astore 8 /* annotatedDescriptor */
        start local 8 // javax.management.Descriptor annotatedDescriptor
        11: .line 353
            invokestatic com.sun.jmx.mbeanserver.DescriptorCache.getInstance:()Lcom/sun/jmx/mbeanserver/DescriptorCache;
            iconst_3
            anewarray javax.management.Descriptor
            dup
            iconst_0
        12: .line 354
            aload 6 /* classNameDescriptor */
            aastore
            dup
            iconst_1
        13: .line 355
            aload 7 /* mbeanDescriptor */
            aastore
            dup
            iconst_2
        14: .line 356
            aload 8 /* annotatedDescriptor */
            aastore
        15: .line 353
            invokevirtual com.sun.jmx.mbeanserver.DescriptorCache.union:([Ljavax/management/Descriptor;)Ljavax/management/ImmutableDescriptor;
        16: .line 352
            astore 9 /* descriptor */
        start local 9 // javax.management.Descriptor descriptor
        17: .line 358
            new javax.management.MBeanInfo
            dup
            aload 1 /* mbeanInterface */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        18: .line 359
            aload 2 /* description */
        19: .line 360
            aload 3 /* attrArray */
        20: .line 361
            aconst_null
        21: .line 362
            aload 4 /* opArray */
        22: .line 363
            aconst_null
        23: .line 364
            aload 9 /* descriptor */
        24: .line 358
            invokespecial javax.management.MBeanInfo.<init>:(Ljava/lang/String;Ljava/lang/String;[Ljavax/management/MBeanAttributeInfo;[Ljavax/management/MBeanConstructorInfo;[Ljavax/management/MBeanOperationInfo;[Ljavax/management/MBeanNotificationInfo;Ljavax/management/Descriptor;)V
            areturn
        end local 9 // javax.management.Descriptor descriptor
        end local 8 // javax.management.Descriptor annotatedDescriptor
        end local 7 // javax.management.Descriptor mbeanDescriptor
        end local 6 // javax.management.Descriptor classNameDescriptor
        end local 5 // java.lang.String interfaceClassName
        end local 4 // javax.management.MBeanOperationInfo[] opArray
        end local 3 // javax.management.MBeanAttributeInfo[] attrArray
        end local 2 // java.lang.String description
        end local 1 // java.lang.Class mbeanInterface
        end local 0 // com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   25     0                 this  Lcom/sun/jmx/mbeanserver/MBeanIntrospector$MBeanInfoMaker;
            0   25     1       mbeanInterface  Ljava/lang/Class<*>;
            0   25     2          description  Ljava/lang/String;
            2   25     3            attrArray  [Ljavax/management/MBeanAttributeInfo;
            4   25     4              opArray  [Ljavax/management/MBeanOperationInfo;
            6   25     5   interfaceClassName  Ljava/lang/String;
            8   25     6  classNameDescriptor  Ljavax/management/Descriptor;
            9   25     7      mbeanDescriptor  Ljavax/management/Descriptor;
           11   25     8  annotatedDescriptor  Ljavax/management/Descriptor;
           17   25     9           descriptor  Ljavax/management/Descriptor;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljavax/management/MBeanInfo;
    MethodParameters:
                Name  Flags
      mbeanInterface  
      description     
}
Signature: Ljava/lang/Object;Lcom/sun/jmx/mbeanserver/MBeanAnalyzer$MBeanVisitor<TM;>;
SourceFile: "MBeanIntrospector.java"
NestHost: com.sun.jmx.mbeanserver.MBeanIntrospector
InnerClasses:
  abstract MBeanVisitor = com.sun.jmx.mbeanserver.MBeanAnalyzer$MBeanVisitor of com.sun.jmx.mbeanserver.MBeanAnalyzer
  private MBeanInfoMaker = com.sun.jmx.mbeanserver.MBeanIntrospector$MBeanInfoMaker of com.sun.jmx.mbeanserver.MBeanIntrospector