docs: public void initResource(CmsObject cms) throws CmsException {
  
          if (m_resource == null) {
              m_resource = cms.readResource(getId(), CmsResourceFilter.IGNORE_EXPIRATION);
              m_releasedAndNotExpired = m_resource.isReleasedAndNotExpired(cms.getRequestContext().getRequestTime());
          } else if (!isInMemoryOnly()) {
              CmsUUID id = m_resource.getStructureId();
              if (id == null) {
                  id = getId();
              }
              // the resource object may have a wrong root path, e.g. if it was created before the resource was moved
              if (cms.getRequestContext().getCurrentProject().isOnlineProject()) {
                  m_resource = cms.readResource(id, CmsResourceFilter.IGNORE_EXPIRATION);
                  m_releasedAndNotExpired = m_resource.isReleasedAndNotExpired(cms.getRequestContext().getRequestTime());
              } else {
                  if (!isTemporaryContent()) {
                      m_resource = cms.readResource(getId(), CmsResourceFilter.IGNORE_EXPIRATION);
                  }
                  m_releasedAndNotExpired = m_resource.isReleasedAndNotExpired(cms.getRequestContext().getRequestTime());
              }
          }
          if (m_settings == null) {
              setSettings(new HashMap<String, String>(getIndividualSettings()));
          }
          // redo on every init call to ensure sitepath is calculated for current site
          m_sitePath = cms.getSitePath(m_resource);
      }