private void repaintTab( int tabIndex ) {
		if( tabIndex < 0 || tabIndex >= tabPane.getTabCount() )
			return;

		Rectangle r = getTabBounds( tabPane, tabIndex );
		if( r == null )
			return;

		// increase size of repaint region to include part of content border
		if( contentSeparatorHeight > 0 &&
			clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_CONTENT_SEPARATOR, true ) )
		{
			int sh = scale( contentSeparatorHeight );
			switch( tabPane.getTabPlacement() ) {
				default:
				case TOP:    r.height += sh; break;
				case BOTTOM: r.height += sh; r.y -= sh; break;
				case LEFT:   r.width  += sh; break;
				case RIGHT:  r.width  += sh; r.x -= sh; break;
			}
		}

		HiDPIUtils.repaint( tabPane, r );
	}
Repaint rollover tab, but deferred and only once.
This is to avoid unnecessary repaints in case of temporary changes to rollover tab.

E.g. when moving mouse over a single tab, a re-layout may occur and
set rollover tab to -1, in BasicTabbedPaneUI.TabbedPaneLayout.layoutContainer() and
BasicTabbedPaneUI.TabbedPaneScrollLayout.layoutContainer(), and subsequently
change rollover tab back to previous value.
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java