code: private List<CmsTabInfo> collectTabInfos(CmsXmlContentDefinition definition) {
  
          List<CmsTabInfo> result = new ArrayList<CmsTabInfo>();
          CmsMacroResolver resolver = new CmsMacroResolver();
          resolver.setMessages(m_messages);
          if (definition.getContentHandler().getTabs() != null) {
              for (CmsXmlContentTab xmlTab : definition.getContentHandler().getTabs()) {
                  String tabName;
                  // in case the tab name attribute contains a localization macro
                  if (xmlTab.getTabName().contains(MESSAGE_MACRO_START)
                      || xmlTab.getTabName().contains(MESSAGE_MACRO_START_OLD)) {
                      tabName = resolver.resolveMacros(xmlTab.getTabName());
                  } else {
                      tabName = m_messages.keyDefault(
                          A_CmsWidget.LABEL_PREFIX + definition.getInnerName() + "." + xmlTab.getTabName(),
                          xmlTab.getTabName());
                  }
  
                  result.add(
                      new CmsTabInfo(
                          tabName,
                          xmlTab.getIdName(),
                          xmlTab.getStartName(),
                          xmlTab.isCollapsed(),
                          resolver.resolveMacros(xmlTab.getDescription())));
              }
          }
          return result;
      }
docs: Returns the tab informations for the given content definition.<p>
  
  @param definition the content definition
  
  @return the tab informations