protected Color getBackground( JComponent c ) {
		boolean def = isDefaultButton( c );
		boolean toolBarButton = !def && (isToolBarButton( c ) || isBorderlessButton( c ));

		// selected state
		if( ((AbstractButton)c).isSelected() ) {
			// in toolbar, if toolbarDisabledSelectedBackground is null,
			// use same background colors for disabled and enabled because
			// we assume that toolbar icon is shown disabled
			return buttonStateColor( c,
				toolBarButton ? toolbarSelectedBackground : selectedBackground,
				toolBarButton
					? (toolbarDisabledSelectedBackground != null ? toolbarDisabledSelectedBackground : toolbarSelectedBackground)
					: disabledSelectedBackground,
				null,
				null,
				toolBarButton ? toolbarPressedBackground : pressedBackground );
		}

		// toolbar button
		if( toolBarButton ) {
			Color bg = c.getBackground();
			return buttonStateColor( c,
				isCustomBackground( bg ) ? bg : null,
				null,
				null,
				toolbarHoverBackground,
				toolbarPressedBackground );
		}

		return buttonStateColor( c,
			getBackgroundBase( c, def ),
			disabledBackground,
			isCustomBackground( c.getBackground() ) ? null : (def ? defaultFocusedBackground : focusedBackground),
			def ? defaultHoverBackground : hoverBackground,
			def ? defaultPressedBackground : pressedBackground );
	}
Similar to BasicButtonUI.paint(), but does not use zero insets for HTML text,
which is done in BasicButtonUI.layout() since Java 19.
See https://github.com/openjdk/jdk/pull/8407
and https://github.com/openjdk/jdk/pull/8407#issuecomment-1761583430
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java