@ApiStatus.Internal
  static void setHoveredRow(@NotNull JTable table, int rowNew) {
    int rowOld = getHoveredRow(table);
    if (rowNew == rowOld) return;
    table.putClientProperty(HOVERED_ROW_KEY, rowNew < 0 ? null : rowNew);
    // tables without scroll pane do not repaint rows correctly (BasicTableUI.paint:1868-1872)
    if (table.getParent() instanceof JViewport) {
      repaintRow(table, rowOld);
      repaintRow(table, rowNew);
    }
    else {
      table.repaint();
    }
  }
@ApiStatus.Internal
  static void setHoveredRow(@NotNull JTable table, int rowNew)