private void putAATextInfo( UIDefaults defaults ) {
		if ( SystemInfo.isMacOS && SystemInfo.isJetBrainsJVM ) {
			// The awt.font.desktophints property suggests sub-pixel anti-aliasing
			// which renders text with too much weight on macOS in the JetBrains JRE.
			// Use greyscale anti-aliasing instead.
			defaults.put( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON );
		} else if( SystemInfo.isJava_9_orLater ) {
			Object desktopHints = Toolkit.getDefaultToolkit().getDesktopProperty( DESKTOPFONTHINTS );
			if( desktopHints == null )
				desktopHints = fallbackAATextInfo();
			if( desktopHints instanceof Map ) {
				@SuppressWarnings( "unchecked" )
				Map<Object, Object> hints = (Map<Object, Object>) desktopHints;
				Object aaHint = hints.get( RenderingHints.KEY_TEXT_ANTIALIASING );
				if( aaHint != null &&
					aaHint != RenderingHints.VALUE_TEXT_ANTIALIAS_OFF &&
					aaHint != RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT )
				{
					defaults.put( RenderingHints.KEY_TEXT_ANTIALIASING, aaHint );
					defaults.put( RenderingHints.KEY_TEXT_LCD_CONTRAST,
						hints.get( RenderingHints.KEY_TEXT_LCD_CONTRAST ) );
				}
			}
		} else {
			// Java 8
			try {
				Object key = Class.forName( "sun.swing.SwingUtilities2" )
					.getField( "AA_TEXT_PROPERTY_KEY" )
					.get( null );
				Object value = Class.forName( "sun.swing.SwingUtilities2$AATextInfo" )
					.getMethod( "getAATextInfo", boolean.class )
					.invoke( null, true );
				if( value == null )
					value = fallbackAATextInfo();
				defaults.put( key, value );
			} catch( Exception ex ) {
				LoggingFacade.INSTANCE.logSevere( null, ex );
				throw new RuntimeException( ex );
			}
		}
	}
Handle UI delegate classes if running in special application where multiple class loaders are involved.
E.g. in Eclipse plugin or in LibreOffice extension.
<p>
Problem: Swing runs in Java's system classloader and FlatLaf is loaded in plugin classloader.
When Swing tries to load UI delegate class in {@link UIDefaults#getUIClass(String, ClassLoader)},
invoked from {@link UIDefaults#getUI(JComponent)}, it uses the component's classloader,
which is Java's system classloader for core Swing components,
and can not find FlatLaf UI delegates.
<p>
Solution: Add lazy values for UI delegate class names.
Those lazy values use FlatLaf classloader to load UI delegate class.
This is similar to what {@link UIDefaults#getUIClass(String, ClassLoader)} does.
<p>
Not using {@code defaults.put( "ClassLoader", FlatLaf.class.getClassLoader() )},
which would work for FlatLaf UI delegates, but it would break custom
UI delegates used in other classloaders.
flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java