docs: protected void initTabs(Element root, CmsXmlContentDefinition contentDefinition) {
  
          if (Boolean.valueOf(root.attributeValue(APPINFO_ATTR_USEALL, CmsStringUtil.FALSE)).booleanValue()) {
              // all first level elements should be treated as tabs
              Iterator<I_CmsXmlSchemaType> i = contentDefinition.getTypeSequence().iterator();
              while (i.hasNext()) {
                  // get the type
                  I_CmsXmlSchemaType type = i.next();
                  m_tabs.add(new CmsXmlContentTab(type.getName()));
              }
          } else {
              // manual definition of tabs
              Iterator<Element> i = CmsXmlGenericWrapper.elementIterator(root, APPINFO_TAB);
              while (i.hasNext()) {
                  // iterate all "tab" elements in the "tabs" node
                  Element element = i.next();
                  // this is a tab node
                  String elementName = element.attributeValue(APPINFO_ATTR_ELEMENT);
                  String collapseValue = element.attributeValue(APPINFO_ATTR_COLLAPSE, CmsStringUtil.TRUE);
                  Node descriptionNode = element.selectSingleNode(APPINFO_ATTR_DESCRIPTION + "/text()");
                  String description = null;
                  if (descriptionNode != null) {
                      description = descriptionNode.getText();
                  } else {
                      description = element.attributeValue(APPINFO_ATTR_DESCRIPTION);
                  }
  
                  String tabName = element.attributeValue(APPINFO_ATTR_NAME, elementName);
                  if (elementName != null) {
                      // add the element tab
                      m_tabs.add(
                          new CmsXmlContentTab(
                              elementName,
                              Boolean.valueOf(collapseValue).booleanValue(),
                              tabName,
                              description));
                  }
              }
              // check if first element has been defined as tab
              I_CmsXmlSchemaType type = contentDefinition.getTypeSequence().get(0);
              CmsXmlContentTab tab = new CmsXmlContentTab(type.getName());
              if (!m_tabs.contains(tab)) {
                  m_tabs.add(0, tab);
              }
          }
      }