code: public static ObjectName makeObjectName(Object obj) {
  		JmxResource jmxResource = obj.getClass().getAnnotation(JmxResource.class);
  		if (obj instanceof JmxSelfNaming) {
  			return makeObjectName(jmxResource, (JmxSelfNaming) obj);
  		} else {
  			if (jmxResource == null) {
  				throw new IllegalArgumentException(
  						"Registered class must either implement JmxSelfNaming or have JmxResource annotation");
  			}
  			return makeObjectName(jmxResource, obj);
  		}
  	}
docs: Constructs an object-name from an object that is detected either having the {@link JmxResource} annotation or
  implementing {@link JmxSelfNaming}.
  
  @param obj
  Object for which we are creating our ObjectName
  @throws IllegalArgumentException
  If we had problems building the name