private Popup getHeavyWeightPopup( Component owner, Component contents, int x, int y )
		throws IllegalArgumentException
	{
		try {
			if( SystemInfo.isJava_9_orLater ) {
				// Java 9: protected Popup getPopup( Component owner, Component contents, int x, int y, boolean isHeavyWeightPopup )
				if( java9getPopupMethod == null ) {
					MethodType mt = MethodType.methodType( Popup.class, Component.class, Component.class, int.class, int.class, boolean.class );
					java9getPopupMethod = MethodHandles.lookup().findVirtual( PopupFactory.class, "getPopup", mt );
				}
				return (Popup) java9getPopupMethod.invoke( this, owner, contents, x, y, true );
			} else {
				// Java 8: private Popup getPopup( Component owner, Component contents, int ownerX, int ownerY, int popupType )
				if( java8getPopupMethod == null ) {
					Method m = PopupFactory.class.getDeclaredMethod(
						"getPopup", Component.class, Component.class, int.class, int.class, int.class );
					m.setAccessible( true );
					java8getPopupMethod = MethodHandles.lookup().unreflect( m );
				}
				return (Popup) java8getPopupMethod.invoke( this, owner, contents, x, y, /*HEAVY_WEIGHT_POPUP*/ 2 );
			}
		} catch( Throwable ex ) {
			// fallback
			return super.getPopup( owner, contents, x, y );
		}
	}
There is no API in Java 8 to force creation of heavy weight popups,
but it is possible with reflection. Java 9 provides a new method.

When changing FlatLaf system requirements to Java 9+,
then this method can be replaced with:
   return getPopup( owner, contents, x, y, true );
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java