code: private void discoverAttributeMethods(Map<String, JmxAttributeMethodInfo> attributeMethodInfoMap,
  			Set<String> attributeNameSet, List<MBeanAttributeInfo> attributes, boolean ignoreErrors) {
  		for (Class<?> clazz = target.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
  			discoverAttributeMethods(attributeMethodInfoMap, attributeNameSet, attributes, ignoreErrors, clazz);
  		}
  		/*
  		 * we have to go back and post process the attribute-method-map because the getter and setter methods change the
  		 * method-info multiple times.
  		 */
  		for (AttributeMethodInfo methodInfo : attributeMethodMap.values()) {
  			attributes.add(new MBeanAttributeInfo(methodInfo.varName, methodInfo.type.getName(),
  					methodInfo.description, (methodInfo.getterMethod != null), (methodInfo.setterMethod != null),
  					methodInfo.isIs()));
  			attributeNameSet.add(methodInfo.varName);
  		}
  	}
docs: Find attribute methods from our object that will be exposed via JMX.