// params arrays can also be null static S htableRaw2(L data, L paramsTable, L paramsTR, L paramsTD) { new StringBuilder buf; for (L row : data) { buf.append(hopeningTag("tr", toObjectArray(paramsTR)); for (O cell : row) buf.append(htd(cell, toObjectArray(paramsTD))).append("\n"); buf.append("\n"); } ret htag("table", buf, toObjectArray(paramsTable)); }