static PropertyChangeListener createPropertyChangeListener( JComponent c,
		Runnable installStyle, PropertyChangeListener superListener )
	{
		return e -> {
			if( superListener != null )
				superListener.propertyChange( e );

			switch( e.getPropertyName() ) {
				case FlatClientProperties.STYLE:
				case FlatClientProperties.STYLE_CLASS:
					installStyle.run();
					c.revalidate();
					HiDPIUtils.repaint( c );
					break;
			}
		};
	}
Applies the given value to an annotated field of the given object
or to a property of the given component.
The field must be annotated with {@link Styleable}.
The component property must have public getter and setter methods.

@param obj the object
@param comp the component, or {@code null}
@param key the name of the field
@param value the new value
@return the old value of the field
@throws UnknownStyleException if object does not have an annotated field with given name
@throws IllegalArgumentException if value type does not fit to expected type
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatStylingSupport.java