code: private CmsSitemapChange undelete(CmsSitemapChange change) throws CmsException {
  
          CmsObject cms = getCmsObject();
          CmsResource deleted = cms.readResource(change.getEntryId(), CmsResourceFilter.ALL);
          if (deleted.getState().isDeleted()) {
              ensureLock(deleted);
              cms.undeleteResource(getCmsObject().getSitePath(deleted), true);
              tryUnlock(deleted);
          }
          String parentPath = CmsResource.getParentFolder(cms.getSitePath(deleted));
          CmsJspNavElement navElement = getNavBuilder().getNavigationForResource(
              parentPath,
              CmsResourceFilter.ONLY_VISIBLE_NO_DELETED);
          CmsClientSitemapEntry entry = toClientEntry(navElement, navElement.isInNavigation());
          entry.setSubEntries(getChildren(parentPath, 2, null), null);
          change.setUpdatedEntry(entry);
          change.setParentId(cms.readParentFolder(deleted.getStructureId()).getStructureId());
          return change;
      }
docs: Un-deletes a resource according to the change data.<p>
  
  @param change the change data
  
  @return the changed entry or <code>null</code>
  
  @throws CmsException if something goes wrong