private boolean applyWildcard( Properties properties, String key, String value ) {
		if( !key.startsWith( "*." ) )
			return false;

		String tail = key.substring( 1 );

		// because we can not iterate over the properties keys while
		// modifying properties in the same loop, we have to copy the keys
		String[] keys = properties.keySet().toArray( new String[properties.size()] );

		// replace all values in properties that match the wildcard key
		for( String k : keys ) {
			if( k.startsWith( "*" ) ||
				k.startsWith( "@" ) ||
				k.startsWith( "HelpButton." ) ||
				k.startsWith( "JX" ) ||
				k.startsWith( "Jide" ) ||
				k.startsWith( "ProgressBar.selection" ) ||
				k.startsWith( "TitlePane." ) ||
				k.startsWith( "ToggleButton.tab." ) ||
				k.equals( "Desktop.background" ) ||
				k.equals( "DesktopIcon.background" ) ||
				k.equals( "TabbedPane.focusColor" ) ||
				k.endsWith( ".hoverBackground" ) ||
				k.endsWith( ".pressedBackground" ) )
			  continue;

			// support replacing of mapped keys
			// (e.g. set ComboBox.buttonEditableBackground to *.background
			// because it is mapped from ComboBox.ArrowButton.background)
			String km = uiKeyInverseMapping.getOrDefault( k, k );
			if( km.endsWith( tail ) && !k.startsWith( "CheckBox.icon." ) )
				put( properties, k, value );
		}

		// Note: also add wildcards to properties and let UIDefaultsLoader
		//       process it on BasicLookAndFeel UI defaults
		put( properties, key, value );

		return true;
	}
http://www.jetbrains.org/intellij/sdk/docs/reference_guide/ui_themes/themes_customize.html#custom-ui-control-colors
flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java