docs: private CmsSitemapChange applyChange(String entryPoint, CmsSitemapChange change) throws CmsException {
  
          CmsObject cms = getCmsObject();
          CmsResource configFile = null;
          // lock the config file first, to avoid half done changes
          if (change.hasDetailPageInfos()) {
              CmsADEConfigData configData = OpenCms.getADEManager().lookupConfiguration(
                  cms,
                  cms.getRequestContext().addSiteRoot(entryPoint));
              if (!configData.isModuleConfiguration() && (configData.getResource() != null)) {
                  configFile = configData.getResource();
              }
              if (configFile != null) {
                  ensureLock(configFile);
              }
          }
          if (change.isNew()) {
              CmsClientSitemapEntry newEntry = createNewEntry(entryPoint, change);
              change.setUpdatedEntry(newEntry);
              change.setEntryId(newEntry.getId());
          } else if (change.getChangeType() == ChangeType.delete) {
              delete(change);
          } else if (change.getEntryId() != null) {
              modifyEntry(change);
          }
          if (change.hasDetailPageInfos() && (configFile != null)) {
              saveDetailPages(change.getDetailPageInfos(), configFile, change.getEntryId(), change.getUpdatedEntry());
              tryUnlock(configFile);
          }
  
          return change;
      }