@Override
  public @Nullable Pair<Component, Rectangle> getCellRendererAndBounds(TableCell key) {
    if (key.row < 0 || key.row >= myComponent.getRowCount() ||
        key.column < 0 || key.column >= myComponent.getColumnCount() ||
        key.row == myComponent.getEditingRow() && key.column == myComponent.getEditingColumn() ||
        hasDraggingOrResizingColumn()) {
      return null;
    }

    Rectangle cellRect = getCellRect(key);
    Component renderer = myComponent.prepareRenderer(myComponent.getCellRenderer(key.row, key.column), key.row, key.column);
    Component unwrapped = ExpandedItemRendererComponentWrapper.unwrap(renderer);
    if (unwrapped instanceof JCheckBox && StringUtil.isEmptyOrSpaces(((JCheckBox)unwrapped).getText())) return null;
    AppUIUtil.targetToDevice(renderer, myComponent);
    cellRect.width = renderer.getPreferredSize().width;

    return Pair.create(renderer, cellRect);
  }
@Override
  public @Nullable Pair<Component, Rectangle> getCellRendererAndBounds(TableCell key)