docs: public synchronized void initialize() {
  
          // no need to try initialization in case the 'org.opencms.base' is not present and the contained resource types missing
          if ((m_initStatus == Status.notInitialized) && OpenCms.getModuleManager().hasModule(MODULE_NAME_ADE_CONFIG)) {
              try {
                  CmsLog.INIT.info(". Initializing the ADE configuration, this may take a while...");
                  m_initStatus = Status.initializing;
                  m_configType = OpenCms.getResourceManager().getResourceType(CONFIG_TYPE);
                  m_moduleConfigType = OpenCms.getResourceManager().getResourceType(MODULE_CONFIG_TYPE);
                  m_elementViewType = OpenCms.getResourceManager().getResourceType(ELEMENT_VIEW_TYPE);
                  CmsProject temp = getTempfileProject(m_onlineCms);
                  m_offlineCms = OpenCms.initCmsObject(m_onlineCms);
                  m_offlineCms.getRequestContext().setCurrentProject(temp);
                  m_onlineCache = new CmsConfigurationCache(
                      m_onlineCms,
                      m_configType,
                      m_moduleConfigType,
                      m_elementViewType);
                  m_offlineCache = new CmsConfigurationCache(
                      m_offlineCms,
                      m_configType,
                      m_moduleConfigType,
                      m_elementViewType);
                  CmsLog.INIT.info(". Reading online configuration...");
                  m_onlineCache.initialize();
                  CmsLog.INIT.info(". Reading offline configuration...");
                  m_offlineCache.initialize();
                  m_onlineContainerConfigurationCache = new CmsContainerConfigurationCache(
                      m_onlineCms,
                      "online inheritance groups");
                  m_offlineContainerConfigurationCache = new CmsContainerConfigurationCache(
                      m_offlineCms,
                      "offline inheritance groups");
                  CmsLog.INIT.info(". Reading online inherited container configurations...");
                  m_onlineContainerConfigurationCache.initialize();
                  CmsLog.INIT.info(". Reading offline inherited container configurations...");
                  m_offlineContainerConfigurationCache.initialize();
                  m_offlineFormatterCache = new CmsFormatterConfigurationCache(m_offlineCms, "offline formatters");
                  m_onlineFormatterCache = new CmsFormatterConfigurationCache(m_onlineCms, "online formatters");
                  CmsLog.INIT.info(". Reading online formatter configurations...");
                  m_onlineFormatterCache.initialize();
                  CmsLog.INIT.info(". Reading offline formatter configurations...");
                  m_offlineFormatterCache.initialize();
  
                  m_offlineDetailIdCache = new CmsDetailNameCache(m_offlineCms);
                  m_onlineDetailIdCache = new CmsDetailNameCache(m_onlineCms);
                  CmsLog.INIT.info(". Initializing online detail name cache...");
                  m_onlineDetailIdCache.initialize();
                  CmsLog.INIT.info(". Initializing offline detail name cache...");
                  m_offlineDetailIdCache.initialize();
  
                  CmsGlobalConfigurationCacheEventHandler handler = new CmsGlobalConfigurationCacheEventHandler(
                      m_onlineCms);
                  handler.addCache(m_offlineCache, m_onlineCache, "ADE configuration cache");
                  handler.addCache(
                      m_offlineContainerConfigurationCache,
                      m_onlineContainerConfigurationCache,
                      "Inherited container cache");
                  handler.addCache(m_offlineFormatterCache, m_onlineFormatterCache, "formatter configuration cache");
                  handler.addCache(m_offlineDetailIdCache, m_onlineDetailIdCache, "Detail ID cache");
                  OpenCms.getEventManager().addCmsEventListener(handler);
                  CmsLog.INIT.info(". Done initializing the ADE configuration.");
                  m_initStatus = Status.initialized;
              } catch (CmsException e) {
                  m_initStatus = Status.notInitialized;
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
      }