public static void runWithUIDefaultsGetter( Function<Object, Object> uiDefaultsGetter, Runnable runnable ) {
		LookAndFeel laf = UIManager.getLookAndFeel();
		if( laf instanceof FlatLaf ) {
			((FlatLaf)laf).registerUIDefaultsGetter( uiDefaultsGetter );
			try {
				runnable.run();
			} finally {
				((FlatLaf)laf).unregisterUIDefaultsGetter( uiDefaultsGetter );
			}
		} else
			runnable.run();
	}
Registers a UI defaults getter function that is invoked before the standard getter,
runs the given runnable and unregisters the UI defaults getter function again.
This allows using different UI defaults for special purposes
(e.g. using multiple themes at the same time).
If the current look and feel is not FlatLaf, then the getter is ignored and
the given runnable invoked.
<p>
The key is passed as parameter to the function.
If the function returns {@code null}, then the next registered function is invoked.
If all registered functions return {@code null}, then the current look and feel is asked.
If the function returns {@link #NULL_VALUE}, then the UI value becomes {@code null}.
<p>
Example:
<pre>{@code
// create secondary theme
UIDefaults darkDefaults = new FlatDarkLaf().getDefaults();

// create panel using secondary theme
FlatLaf.runWithUIDefaultsGetter( key -> {
    Object value = darkDefaults.get( key );
    return (value != null) ? value : FlatLaf.NULL_VALUE;
}, () -> {
    // TODO create components that should use secondary theme here
} );
}</pre>

@see #registerUIDefaultsGetter(Function)
@see #unregisterUIDefaultsGetter(Function)
@since 1.6
flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java