docs: protected void encodeStrictList(FacesContext context, DataList list) throws IOException {
          ResponseWriter writer = context.getResponseWriter();
          String clientId = list.getClientId(context);
          boolean isDefinition = list.isDefinition();
          UIComponent definitionFacet = list.getFacet("description");
          boolean renderDefinition = isDefinition && definitionFacet != null;
          String itemType = list.getItemType();
          String listClass = DataList.LIST_CLASS;
          if (itemType != null && itemType.equals("none")) {
              listClass = listClass + " " + DataList.NO_BULLETS_CLASS;
          }
  
          String listTag = list.getListTag();
          String listItemTag = isDefinition ? "dt" : "li";
          String varStatus = list.getVarStatus();
  
          int first = list.getFirst();
          int rows = list.getRows() == 0 ? list.getRowCount() : list.getRows();
          int pageSize = first + rows;
          int rowCount = list.getRowCount();
  
          String rowIndexVar = list.getRowIndexVar();
          Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
  
          writer.startElement(listTag, null);
          writer.writeAttribute("id", clientId + "_list", null);
          writer.writeAttribute("class", listClass, null);
          if (list.getItemType() != null) {
              writer.writeAttribute("type", list.getItemType(), null);
          }
  
          for (int i = first; i < pageSize; i++) {
              if (varStatus != null) {
                  requestMap.put(varStatus, new VarStatus(first, (pageSize - 1), (i == 0), (i == (rowCount - 1)), i, (i % 2 == 0), (i % 2 == 1), 1));
              }
  
              list.setRowIndex(i);
  
              if (rowIndexVar != null) {
                  requestMap.put(rowIndexVar, i);
              }
  
              if (list.isRowAvailable()) {
                  String itemStyleClass = list.getItemStyleClass();
                  itemStyleClass = (itemStyleClass == null) ? DataList.LIST_ITEM_CLASS : DataList.LIST_ITEM_CLASS + " " + itemStyleClass;
  
                  writer.startElement(listItemTag, null);
                  writer.writeAttribute("class", itemStyleClass, null);
                  renderChildren(context, list);
                  writer.endElement(listItemTag);
  
                  if (renderDefinition) {
                      writer.startElement("dd", null);
                      definitionFacet.encodeAll(context);
                      writer.endElement("dd");
                  }
              }
          }
  
          //cleanup
          list.setRowIndex(-1);
  
          if (rowIndexVar != null) {
              requestMap.remove(rowIndexVar);
          }
  
          if (varStatus != null) {
              requestMap.remove(varStatus);
          }
  
          writer.endElement(listTag);
      }