docs: protected OpenCmsCore upgradeRunlevel(CmsParameterConfiguration configuration) throws CmsInitException {
  
          synchronized (LOCK) {
              if ((m_instance != null) && (getRunLevel() >= OpenCms.RUNLEVEL_2_INITIALIZING)) {
                  // instance already in runlevel 3 or 4
                  return m_instance;
              }
              if (getRunLevel() != OpenCms.RUNLEVEL_1_CORE_OBJECT) {
                  CmsLog.INIT.error(
                      Messages.get().getBundle().key(
                          Messages.LOG_WRONG_INIT_SEQUENCE_2,
                          new Integer(3),
                          new Integer(getRunLevel())));
                  return m_instance;
              }
  
              // set the runlevel to "initializing OpenCms"
              setRunLevel(OpenCms.RUNLEVEL_2_INITIALIZING);
              // initialize the configuration
              m_instance.initConfiguration(configuration);
              // upgrade the runlevel - OpenCms shell is available
              setRunLevel(OpenCms.RUNLEVEL_3_SHELL_ACCESS);
  
              afterUpgradeRunlevel();
  
              return m_instance;
          }
      }