Program: 53706
Project: 53706
Buggy source:
@SuppressWarnings("String_Node_Str") @Override protected void onBrowserEvent2(Event event){
  EventTarget eventTarget=event.getEventTarget();
  if (!Element.is(eventTarget)) {
    return;
  }
  final Element target=event.getEventTarget().cast();
  TableSectionElement tbody=getTableBodyElement();
  TableSectionElement tfoot=getTableFootElement();
  TableSectionElement thead=getTableHeadElement();
  TableSectionElement targetTableSection=null;
  TableCellElement targetTableCell=null;
  Element cellParent=null;
  Element headerParent=null;
  Element headerColumnParent=null;
  Element footerParent=null;
  Element footerColumnParent=null;
{
    Element maybeTableCell=null;
    Element cur=target;
    while (cur != null && targetTableSection == null) {
      if (cur == tbody || cur == tfoot || cur == thead) {
        targetTableSection=cur.cast();
        if (maybeTableCell != null) {
          targetTableCell=maybeTableCell.cast();
          break;
        }
      }
      String tagName=cur.getTagName();
      if (TableCellElement.TAG_TD.equalsIgnoreCase(tagName) || TableCellElement.TAG_TH.equalsIgnoreCase(tagName)) {
        maybeTableCell=cur;
      }
      if (cellParent == null && tableBuilder.isColumn(cur)) {
        cellParent=cur;
      }
      if (headerParent == null && headerBuilder.isHeader(cur)) {
        headerParent=cur;
      }
      if (footerParent == null && footerBuilder.isHeader(cur)) {
        footerParent=cur;
      }
      if (headerColumnParent == null && headerBuilder.isColumn(cur)) {
        headerColumnParent=cur;
      }
      if (footerColumnParent == null && footerBuilder.isColumn(cur)) {
        footerColumnParent=cur;
      }
      cur=cur.getParentElement();
    }
  }
  if (targetTableCell == null) {
    return;
  }
  if (legacyRenderRowValues) {
    cellParent=targetTableCell.getFirstChildElement();
  }
  TableRowElement targetTableRow=targetTableCell.getParentElement().cast();
  String eventType=event.getType();
  boolean isClick="String_Node_Str".equals(eventType);
  int col=targetTableCell.getCellIndex();
  if (targetTableSection == thead || targetTableSection == tfoot) {
    boolean isHeader=(targetTableSection == thead);
    headerParent=isHeader ? headerParent : footerParent;
    Element columnParent=isHeader ? headerColumnParent : footerColumnParent;
    if (headerParent != null) {
      Header<?> header=isHeader ? headerBuilder.getHeader(headerParent) : footerBuilder.getHeader(footerParent);
      if (header != null && cellConsumesEventType(header.getCell(),eventType)) {
        Context context=new Context(0,col,header.getKey());
        header.onBrowserEvent(context,cellParent,event);
      }
    }
    if (isClick && columnParent != null) {
      Column<T,?> column=isHeader ? headerBuilder.getColumn(columnParent) : footerBuilder.getColumn(columnParent);
      if (column != null && column.isSortable()) {
        headersDirty=true;
        updatingSortList=true;
        sortList.push(column);
        updatingSortList=false;
        ColumnSortEvent.fire(this,sortList);
      }
    }
  }
 else   if (targetTableSection == tbody) {
    int absRow=tableBuilder.getRowValueIndex(targetTableRow);
    int relRow=absRow - getPageStart();
    int subrow=tableBuilder.getSubrowValueIndex(targetTableRow);
    if ("String_Node_Str".equals(eventType)) {
      if (hoveringRow != null && getTableBodyElement().isOrHasChild(hoveringRow)) {
        setRowHover(hoveringRow,false);
      }
      hoveringRow=targetTableRow;
      setRowHover(hoveringRow,true);
    }
 else     if ("String_Node_Str".equals(eventType) && hoveringRow != null) {
      setRowHover(hoveringRow,false);
      hoveringRow=null;
    }
    if (!isRowWithinBounds(relRow)) {
      return;
    }
    boolean isSelectionHandled=handlesSelection || KeyboardSelectionPolicy.BOUND_TO_SELECTION == getKeyboardSelectionPolicy();
    T value=getVisibleItem(relRow);
    Context context=new Context(absRow,col,getValueKey(value),subrow);
    CellPreviewEvent<T> previewEvent=CellPreviewEvent.fire(this,event,this,context,value,cellIsEditing,isSelectionHandled);
    if (cellParent != null && !previewEvent.isCanceled()) {
      HasCell<T,?> column;
      if (legacyRenderRowValues) {
        column=columns.get(col);
      }
 else {
        column=tableBuilder.getColumn(context,value,cellParent);
      }
      if (column != null) {
        fireEventToCell(event,eventType,cellParent,value,context,column);
      }
    }
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Override protected void onBrowserEvent2(Event event){
  EventTarget eventTarget=event.getEventTarget();
  if (!Element.is(eventTarget)) {
    return;
  }
  final Element target=event.getEventTarget().cast();
  TableSectionElement tbody=getTableBodyElement();
  TableSectionElement tfoot=getTableFootElement();
  TableSectionElement thead=getTableHeadElement();
  TableSectionElement targetTableSection=null;
  TableCellElement targetTableCell=null;
  Element cellParent=null;
  Element headerParent=null;
  Element headerColumnParent=null;
  Element footerParent=null;
  Element footerColumnParent=null;
{
    Element maybeTableCell=null;
    Element cur=target;
    while (cur != null && targetTableSection == null) {
      if (cur == tbody || cur == tfoot || cur == thead) {
        targetTableSection=cur.cast();
        if (maybeTableCell != null) {
          targetTableCell=maybeTableCell.cast();
          break;
        }
      }
      String tagName=cur.getTagName();
      if (TableCellElement.TAG_TD.equalsIgnoreCase(tagName) || TableCellElement.TAG_TH.equalsIgnoreCase(tagName)) {
        maybeTableCell=cur;
      }
      if (cellParent == null && tableBuilder.isColumn(cur)) {
        cellParent=cur;
      }
      if (headerParent == null && headerBuilder.isHeader(cur)) {
        headerParent=cur;
      }
      if (footerParent == null && footerBuilder.isHeader(cur)) {
        footerParent=cur;
      }
      if (headerColumnParent == null && headerBuilder.isColumn(cur)) {
        headerColumnParent=cur;
      }
      if (footerColumnParent == null && footerBuilder.isColumn(cur)) {
        footerColumnParent=cur;
      }
      cur=cur.getParentElement();
    }
  }
  if (targetTableCell == null) {
    return;
  }
  if (legacyRenderRowValues) {
    cellParent=targetTableCell.getFirstChildElement();
  }
  TableRowElement targetTableRow=targetTableCell.getParentElement().cast();
  String eventType=event.getType();
  boolean isClick="String_Node_Str".equals(eventType);
  int col=targetTableCell.getCellIndex();
  if (targetTableSection == thead || targetTableSection == tfoot) {
    boolean isHeader=(targetTableSection == thead);
    headerParent=isHeader ? headerParent : footerParent;
    Element columnParent=isHeader ? headerColumnParent : footerColumnParent;
    if (headerParent != null) {
      Header<?> header=isHeader ? headerBuilder.getHeader(headerParent) : footerBuilder.getHeader(footerParent);
      if (header != null && cellConsumesEventType(header.getCell(),eventType)) {
        Context context=new Context(0,col,header.getKey());
        header.onBrowserEvent(context,headerParent,event);
      }
    }
    if (isClick && columnParent != null) {
      Column<T,?> column=isHeader ? headerBuilder.getColumn(columnParent) : footerBuilder.getColumn(columnParent);
      if (column != null && column.isSortable()) {
        headersDirty=true;
        updatingSortList=true;
        sortList.push(column);
        updatingSortList=false;
        ColumnSortEvent.fire(this,sortList);
      }
    }
  }
 else   if (targetTableSection == tbody) {
    int absRow=tableBuilder.getRowValueIndex(targetTableRow);
    int relRow=absRow - getPageStart();
    int subrow=tableBuilder.getSubrowValueIndex(targetTableRow);
    if ("String_Node_Str".equals(eventType)) {
      if (hoveringRow != null && getTableBodyElement().isOrHasChild(hoveringRow)) {
        setRowHover(hoveringRow,false);
      }
      hoveringRow=targetTableRow;
      setRowHover(hoveringRow,true);
    }
 else     if ("String_Node_Str".equals(eventType) && hoveringRow != null) {
      setRowHover(hoveringRow,false);
      hoveringRow=null;
    }
    if (!isRowWithinBounds(relRow)) {
      return;
    }
    boolean isSelectionHandled=handlesSelection || KeyboardSelectionPolicy.BOUND_TO_SELECTION == getKeyboardSelectionPolicy();
    T value=getVisibleItem(relRow);
    Context context=new Context(absRow,col,getValueKey(value),subrow);
    CellPreviewEvent<T> previewEvent=CellPreviewEvent.fire(this,event,this,context,value,cellIsEditing,isSelectionHandled);
    if (cellParent != null && !previewEvent.isCanceled()) {
      HasCell<T,?> column;
      if (legacyRenderRowValues) {
        column=columns.get(col);
      }
 else {
        column=tableBuilder.getColumn(context,value,cellParent);
      }
      if (column != null) {
        fireEventToCell(event,eventType,cellParent,value,context,column);
      }
    }
  }
}