code: private <C> void fireEventToCell(Event event, String eventType, Element parentElem,
                                       final T rowValue, Context context, HasCell<T, C> column) {
          // Check if the cell consumes the event.
          Cell<C> cell = column.getCell();
          if (!cellConsumesEventType(cell, eventType)) {
              return;
          }
  
          C cellValue = column.getValue(rowValue);
          boolean cellWasEditing = cell.isEditing(context, parentElem, cellValue);
          if (column instanceof Column) {
            /*
             * If the HasCell is a Column, let it handle the event itself. This is
             * here for legacy support.
             */
              Column<T, C> col = (Column<T, C>) column;
              col.onBrowserEvent(context, parentElem, rowValue, event);
          } else {
              // Create a FieldUpdater.
              final FieldUpdater<T, C> fieldUpdater = column.getFieldUpdater();
              final int index = context.getIndex();
              ValueUpdater<C> valueUpdater = (fieldUpdater == null) ? null : (value) -> {
                  fieldUpdater.update(index, rowValue, value);
              };
  
              // Fire the event to the cell.
              cell.onBrowserEvent(context, parentElem, cellValue, event, valueUpdater);
          }
docs: Fire an event to the Cell within the specified {@link TableCellElement}.