if (retainDefaultsEnabled() && propertyValue == null) { setDictionaryForKey(dictionary == null ? NSDictionary.EmptyDictionary : dictionary, propertyName);
if (retainDefaultsEnabled() && propertyValue == null && dictionary != null) { setDictionaryForKey(dictionary, propertyName);
    public static NSDictionary dictionaryForKeyWithDefault(final String s, final NSDictionary defaultValue) {        final String propertyName = getApplicationSpecificPropertyName(s);        Object value = _cache.get(propertyName);        if (value == UndefinedMarker) {            return defaultValue;        }        if (value instanceof NSDictionary) {            return (NSDictionary)value;        }                final String propertyValue = System.getProperty(propertyName);        final NSDictionary dictionary = ERXValueUtilities.dictionaryValueWithDefault(propertyValue, defaultValue);        if (retainDefaultsEnabled() && propertyValue == null) {            setDictionaryForKey(dictionary == null ? NSDictionary.EmptyDictionary : dictionary, propertyName);        }        _cache.put(propertyName, propertyValue == null ? (Object)UndefinedMarker : dictionary);        return dictionary;    }