docs: public synchronized I_CmsResourceCollector addContentCollector(String className, String order)
      throws CmsConfigurationException {
  
          Class<?> classClazz;
          // init class for content collector
          try {
              classClazz = Class.forName(className);
          } catch (ClassNotFoundException e) {
              LOG.error(Messages.get().getBundle().key(Messages.LOG_CONTENT_COLLECTOR_CLASS_NOT_FOUND_1, className), e);
              return null;
          }
  
          I_CmsResourceCollector collector;
          try {
              collector = (I_CmsResourceCollector)classClazz.newInstance();
          } catch (InstantiationException e) {
              throw new CmsConfigurationException(
                  Messages.get().container(Messages.ERR_INVALID_COLLECTOR_NAME_1, className));
          } catch (IllegalAccessException e) {
              throw new CmsConfigurationException(
                  Messages.get().container(Messages.ERR_INVALID_COLLECTOR_NAME_1, className));
          } catch (ClassCastException e) {
              throw new CmsConfigurationException(
                  Messages.get().container(Messages.ERR_INVALID_COLLECTOR_NAME_1, className));
          }
  
          // set the configured order for the collector
          int ord = 0;
          try {
              ord = Integer.valueOf(order).intValue();
          } catch (NumberFormatException e) {
              LOG.error(Messages.get().getBundle().key(Messages.LOG_COLLECTOR_BAD_ORDER_NUMBER_1, className), e);
          }
          collector.setOrder(ord);
  
          if (CmsLog.INIT.isInfoEnabled()) {
              CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ADD_COLLECTOR_CLASS_2, className, order));
          }
  
          // extend or init the current list of configured collectors
          if (m_collectors != null) {
              m_collectors = new ArrayList<I_CmsResourceCollector>(m_collectors);
              m_collectorNameMappings = new HashMap<String, I_CmsResourceCollector>(m_collectorNameMappings);
          } else {
              m_collectors = new ArrayList<I_CmsResourceCollector>();
              m_collectorNameMappings = new HashMap<String, I_CmsResourceCollector>();
          }
  
          if (!m_collectors.contains(collector)) {
              // this is a collector not currently configured
              m_collectors.add(collector);
  
              Iterator<String> i = collector.getCollectorNames().iterator();
              while (i.hasNext()) {
                  String name = i.next();
                  if (m_collectorNameMappings.containsKey(name)) {
                      // this name is already configured, check the order of the collector
                      I_CmsResourceCollector otherCollector = m_collectorNameMappings.get(name);
                      if (collector.getOrder() > otherCollector.getOrder()) {
                          // new collector has a greater order than the old collector in the Map
                          m_collectorNameMappings.put(name, collector);
                          if (CmsLog.INIT.isInfoEnabled()) {
                              CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_COLLECTOR_REPLACED_1, name));
                          }
                      } else {
                          if (CmsLog.INIT.isInfoEnabled()) {
                              CmsLog.INIT.info(
                                  Messages.get().getBundle().key(Messages.INIT_DUPLICATE_COLLECTOR_SKIPPED_1, name));
                          }
                      }
                  } else {
                      m_collectorNameMappings.put(name, collector);
                      if (CmsLog.INIT.isInfoEnabled()) {
                          CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ADD_COLLECTOR_1, name));
                      }
                  }
              }
          }
  
          // ensure list is unmodifiable to avoid potential misuse or accidental changes
          Collections.sort(m_collectors);
          m_collectors = Collections.unmodifiableList(m_collectors);
          m_collectorNameMappings = Collections.unmodifiableMap(m_collectorNameMappings);
  
          // return the created collector instance
          return collector;
      }