@Override
			public synchronized Object put( Object k, Object value ) {
				// process key prefixes (while loading properties files)
				String key = (String) k;
				while( key.startsWith( "[" ) ) {
					int closeIndex = key.indexOf( ']' );
					if( closeIndex < 0 )
						return null; // ignore property with invalid prefix

					String prefix = key.substring( 0, closeIndex + 1 );

					if( specialPrefixes.contains( prefix ) )
						break; // keep special prefix

					if( !lightOrDarkPrefix.equals( prefix ) && !platformPrefixes.contains( prefix ) )
						return null; // ignore property

					// prefix is known and enabled --> remove prefix
					key = key.substring( closeIndex + 1 );
				}

				return super.put( key, value );
			}
Load UI defaults from properties files associated to Flat LaF classes and add to UI defaults.

Each class that extend the LaF class may have its own .properties file
in the same package as the class. Properties from superclasses are loaded
first to give subclasses a chance to override defaults.
E.g. if running FlatDarkLaf, then the FlatLaf.properties is loaded first
and FlatDarkLaf.properties loaded second.

@author Karl Tauber
flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java