public static void merge(CSProperties base, CSProperties overlay) {
        for (String key : overlay.keySet()) {
            if (base.getInfo(key).containsKey("public")) {
                base.put(key, overlay.get(key));
            } else {
                throw new IllegalArgumentException("Not public: " + key);
            }
        }
    }
public static void merge ( CSProperties base , CSProperties overlay ) { for ( String key : overlay . keySet ( ) ) { if ( base . getInfo ( key ) . containsKey ( "public" ) ) { base . put ( key , overlay . get ( key ) ) ; } else { throw new IllegalArgumentException ( "Not public: " + key ) ; } } }
Merges two Properties, respects permissions

@param base
@param overlay