docs: protected String htmlTitle() {
  
          boolean showTitle = isShowTitle();
          Iterator<I_CmsListAction> itIndepActions = getMetadata().getIndependentActions().iterator();
          while (!showTitle && itIndepActions.hasNext()) {
              I_CmsListAction indepAction = itIndepActions.next();
              showTitle = showTitle || indepAction.isVisible();
          }
          Iterator<CmsListItemDetails> itItemDetails = getMetadata().getItemDetailDefinitions().iterator();
          while (!showTitle && itItemDetails.hasNext()) {
              CmsListItemDetails itemDetail = itItemDetails.next();
              showTitle = showTitle || itemDetail.getAction().isVisible();
          }
          if (!showTitle) {
              // prevent empty table if there is nothing to display
              return "";
          }
          StringBuffer html = new StringBuffer(512);
          CmsMessages messages = Messages.get().getBundle(getWp().getLocale());
          html.append("<table width='100%' cellspacing='0'>");
          html.append("\t<tr>\n");
          if (isShowTitle()) {
              html.append("\t\t<td align='left'>\n");
              html.append("\t\t\t");
              boolean isNotSearching = true;
              if (getMetadata().isSearchable()) {
                  isNotSearching = CmsStringUtil.isEmptyOrWhitespaceOnly(m_searchFilter);
              }
              if (getTotalNumberOfPages() > 1) {
                  if (isNotSearching) {
                      html.append(messages.key(
                          Messages.GUI_LIST_TITLE_TEXT_4,
                          new Object[] {
                              m_name.key(getWp().getLocale()),
                              new Integer(displayedFrom()),
                              new Integer(displayedTo()),
                              new Integer(getTotalSize())}));
                  } else {
                      html.append(messages.key(
                          Messages.GUI_LIST_TITLE_FILTERED_TEXT_5,
                          new Object[] {
                              m_name.key(getWp().getLocale()),
                              new Integer(displayedFrom()),
                              new Integer(displayedTo()),
                              new Integer(getSize()),
                              new Integer(getTotalSize())}));
                  }
              } else {
                  if (isNotSearching) {
                      html.append(messages.key(
                          Messages.GUI_LIST_SINGLE_TITLE_TEXT_2,
                          new Object[] {m_name.key(getWp().getLocale()), new Integer(getTotalSize())}));
                  } else {
                      html.append(messages.key(
                          Messages.GUI_LIST_SINGLE_TITLE_FILTERED_TEXT_3,
                          new Object[] {
                              m_name.key(getWp().getLocale()),
                              new Integer(getSize()),
                              new Integer(getTotalSize())}));
                  }
              }
              html.append("\n");
              html.append("\t\t</td>\n\t\t");
          }
          html.append(getMetadata().htmlActionBar());
          html.append("\n\t</tr>\n");
          html.append("</table>\n");
          return html.toString();
      }