public IntrospectedDynamicMBean(Object mbean) throws ManagementException {
        this.mbean = mbean;
        this.mbeanClass = mbean.getClass();
        if (!mbeanClass.isAnnotationPresent(MBean.class)) {
            throw new IllegalArgumentException(
                    format("MBean %s is not annotated with @%s", mbeanClass, MBean.class.getName()));
        }
        registrationDelegate = (MBeanRegistration) ((mbean instanceof MBeanRegistration) ? mbean
                : new MBeanRegistrationBase());
        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(mbeanClass);
            propertyDescriptors = createPropertyDescriptors(beanInfo);
            operationMethods = createOperationMethods(beanInfo);
            mbeanInfo = createMbeanInfo(mbeanClass, propertyDescriptors, operationMethods);
        } catch (IntrospectionException e) {
            throw new ManagementException(e);
        } catch (java.beans.IntrospectionException e) {
            throw new ManagementException(e);
        }
    }