code: protected void saveGroupContainer(CmsObject cms, Element parent, CmsGroupContainerBean groupContainer)
      throws CmsException {
  
          parent.clearContent();
          Element groupContainerElem = parent.addElement(XmlNode.GroupContainers.name());
  
          groupContainerElem.addElement(XmlNode.Title.name()).addCDATA(groupContainer.getTitle());
          groupContainerElem.addElement(XmlNode.Description.name()).addCDATA(groupContainer.getDescription());
  
          for (String type : groupContainer.getTypes()) {
              groupContainerElem.addElement(XmlNode.Type.name()).addCDATA(type);
          }
  
          // the elements
          for (CmsContainerElementBean element : groupContainer.getElements()) {
              CmsResource res = cms.readResource(element.getId(), CmsResourceFilter.IGNORE_EXPIRATION);
              if (OpenCms.getResourceManager().getResourceType(res.getTypeId()).getTypeName().equals(
                  CmsResourceTypeXmlContainerPage.GROUP_CONTAINER_TYPE_NAME)) {
                  LOG.warn(Messages.get().container(Messages.LOG_WARN_ELEMENT_GROUP_INSIDE_ELEMENT_GROUP_0));
                  continue;
              }
              Element elemElement = groupContainerElem.addElement(XmlNode.Element.name());
  
              // the element
              Element uriElem = elemElement.addElement(XmlNode.Uri.name());
              fillResource(cms, uriElem, res);
  
              // the properties
              Map<String, String> properties = element.getIndividualSettings();
              Map<String, CmsXmlContentProperty> propertiesConf = OpenCms.getADEManager().getElementSettings(cms, res);
  
              CmsXmlContentPropertyHelper.saveProperties(cms, elemElement, properties, propertiesConf);
          }
      }
docs: Adds the given container page to the given element.<p>
  
  @param cms the current CMS object
  @param parent the element to add it
  @param groupContainer the container page to add
  
  @throws CmsException if something goes wrong