@SuppressWarnings("deprecation")
    @Override
    protected void replaceChildren(List<T> values, int start, SafeHtml html) {
        refreshHeadersAndColumnsImpl();

        /*
         * If html is not null and legacyRenderRowValues is true, then the user
         * override renderRowValues() and rendered directly into a SafeHtmlBuilder.
         * The legacy method is deprecated but still supported.
         */
        if (html == null || legacyRenderRowValues == false) {
            html = buildRowValues(values, getPageStart() + start, false);
        }

        TABLE_IMPL.replaceChildren(this, getTableBodyElement(), CellBasedWidgetImpl.get().processHtml(
                html), start, values.size());
    }
Render all row values into the specified {@link SafeHtmlBuilder}.

<p>
This method is here for legacy reasons, to support subclasses that call
{@link #renderRowValues(SafeHtmlBuilder, List, int, SelectionModel)}.
</p>

@param sb             the {@link SafeHtmlBuilder} to render into
@param values         the row values
@param start          the absolute start index of the values
@param selectionModel the {@link SelectionModel}
@deprecated as of GWT 2.5, use a {@link CellTableBuilder} to customize the
table structure instead
stroom-core-client-widget/src/main/java/com/google/gwt/user/cellview/client/AbstractCellTable.java