private static MBeanInfo createMbeanInfo(Class<?> mbeanClass, Map<String, PropertyDescriptor> propertyDescriptors, Map<String, Method> operationMethods) throws IntrospectionException, ManagementException {
        String description = description(mbeanClass);
        final MBeanAttributeInfo[] attributeInfo = createAttributeInfo(propertyDescriptors);
        final MBeanConstructorInfo[] constructorInfo = createConstructorInfo();
        final MBeanOperationInfo[] operationInfo = createOperationInfo(operationMethods);
        final MBeanNotificationInfo[] notificationInfo = createNotificationInfo();
        return new MBeanInfo(
                mbeanClass.getName(),
                description,
                attributeInfo,
                constructorInfo,
                operationInfo,
                notificationInfo);
    }