@Override
  public final Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    JComponent delegateRenderer = (JComponent)delegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

    if (cellValidator != null) {
      ValidationInfo result = cellValidator.validate(value, row, column);
      iconLabel.setIcon(result == null ? null : result.warning ? AllIcons.General.BalloonWarning : AllIcons.General.BalloonError);
      iconLabel.setBorder(result == null ? null: iconBorder());
      putClientProperty(CELL_VALIDATION_PROPERTY, result);
    }

    add(delegateRenderer, BorderLayout.CENTER);
    setToolTipText(delegateRenderer.getToolTipText());
    setBorder(delegateRenderer.getBorder());
    delegateRenderer.setBorder(null);

    setBackground(delegateRenderer.getBackground());
    return this;
  }
@Override
  public final Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)