code: public void addNewReportable(Reportable reportable) {
      // use intern string representation - so we can synchronize on it
      final String reportableKey = reportable.getName().intern();
  
  
      //noinspection SynchronizationOnLocalVariableOrMethodParameter
      synchronized (reportableKey) {
        boolean beanAlreadyRegistred = reportables.containsKey(reportableKey);
        reportables.put(reportableKey, reportable);
  
        // MBean for each reportable
        if ((reportable instanceof Timer) || (reportable instanceof HistorizableList)) {
          InApplicationMonitorDynamicMBean bean = new InApplicationMonitorDynamicMBean(reportable);
          try {
            if (beanAlreadyRegistred) {
              jmxBeanRegistrationHelper.unregisterMBeanOnJMX(reportableKey, "InApplicationMonitor");
            }
            jmxBeanRegistrationHelper.registerMBeanOnJMX(bean, reportableKey, "InApplicationMonitor");
          } catch (Exception e) {
            LOG.error("could not register MBean for " + reportableKey, e);
          }
        }
  
        if (LOG.isDebugEnabled()) {
          LOG.debug("registered new reportable " + reportableKey + " for JMX");
        }
      }
    }
docs: This method is called for each reportable that is registered on the InApplicationMonitor.
  Basically, it checks if the JMX implementation is interested in the reportable and adds
  it to the "reportables" map which is the base for both getAttribute(s) and getMBeanInfo().