private void replaceTableSection(AbstractCellTable<?> table, TableSectionElement section,
                                         SafeHtml html) {
            String sectionName = section.getTagName().toLowerCase(Locale.ROOT);
            TableSectionElement newSection = convertToSectionElement(table, sectionName, html);
            TableElement tableElement = table.getElement().cast();
            tableElement.replaceChild(newSection, section);
            if ("tbody".equals(sectionName)) {
                ((TableSectionChangeHandler) table).onTableBodyChange(newSection);
            } else if ("thead".equals(sectionName)) {
                ((TableSectionChangeHandler) table).onTableHeadChange(newSection);
            } else if ("tfoot".equals(sectionName)) {
                ((TableSectionChangeHandler) table).onTableFootChange(newSection);
            }
        }
Render html into a table section. This is achieved by first setting the html in a DIV
element, and then swap the table section with the corresponding element in the DIV. This
method is used in IE since the normal optimizations are not feasible.

@param table   the {@link AbstractCellTable}
@param section the {@link TableSectionElement} to replace
@param html    the html of a table section element containing the rows
stroom-core-client-widget/src/main/java/com/google/gwt/user/cellview/client/AbstractCellTable.java