protected void paintCellSelection( Graphics g, int row, int column, int x, int y, int width, int height ) {
		boolean rowSelAllowed = table.getRowSelectionAllowed();
		boolean colSelAllowed = table.getColumnSelectionAllowed();
		boolean rowSelOnly = rowSelAllowed && !colSelAllowed;
		boolean colSelOnly = colSelAllowed && !rowSelAllowed;
		boolean cellOnlySel = rowSelAllowed && colSelAllowed;

		// get selection state of surrounding cells
		boolean leftSelected    = (column > 0 && (rowSelOnly || table.isCellSelected( row, column - 1 )));
		boolean topSelected     = (row    > 0 && (colSelOnly || table.isCellSelected( row - 1, column )));
		boolean rightSelected   = (column < table.getColumnCount() - 1 && (rowSelOnly || table.isCellSelected( row, column + 1 )));
		boolean bottomSelected  = (row    < table.getRowCount() - 1    && (colSelOnly || table.isCellSelected( row + 1, column )));
		if( !table.getComponentOrientation().isLeftToRight() ) {
			boolean temp = leftSelected;
			leftSelected = rightSelected;
			rightSelected = temp;
		}

		// selection insets
		// (insets are applied to whole row if row-only selection is used,
		//  or to whole column if column-only selection is used,
		//  or to cell if cell selection is used)
		Insets insets = (selectionInsets != null) ? (Insets) selectionInsets.clone() : null;
		if( insets != null ) {
			if( rowSelOnly && leftSelected )
				insets.left = 0;
			if( rowSelOnly && rightSelected )
				insets.right = 0;
			if( colSelOnly && topSelected )
				insets.top = 0;
			if( colSelOnly && bottomSelected )
				insets.bottom = 0;
		}

		// selection arc
		float arcTopLeft, arcTopRight, arcBottomLeft, arcBottomRight;
		arcTopLeft = arcTopRight = arcBottomLeft = arcBottomRight = UIScale.scale( selectionArc / 2f );
		if( selectionArc > 0 ) {
			// note that intercellSpacing is not considered as a gap because
			// grid lines are usually painted to intercell space
			boolean hasRowGap = (rowSelOnly || cellOnlySel) && insets != null && (insets.top != 0 || insets.bottom != 0);
			boolean hasColGap = (colSelOnly || cellOnlySel) && insets != null && (insets.left != 0 || insets.right != 0);

			if( leftSelected && !hasColGap )
				arcTopLeft = arcBottomLeft = 0;
			if( rightSelected && !hasColGap )
				arcTopRight = arcBottomRight = 0;
			if( topSelected && !hasRowGap )
				arcTopLeft = arcTopRight = 0;
			if( bottomSelected && !hasRowGap )
				arcBottomLeft = arcBottomRight = 0;
		}

		FlatUIUtils.paintSelection( (Graphics2D) g, x, y, width, height,
			UIScale.scale( insets ), arcTopLeft, arcTopRight, arcBottomLeft, arcBottomRight, 0 );
	}
Paints (rounded) cell selection.
Supports {@link #selectionArc} and {@link #selectionInsets}.
<p>
<b>Note:</b> This method is only invoked if either selection arc
             is greater than zero or if selection insets are not empty.

@since 3.5
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableUI.java