We support both empty string and unset (in code, null) for property key values. This is confusing from a user perspective, especially because our configuration documentation renders empty string the same as unset. They may even have different meanings, since Configuration#containsKey is false when a key is unset/null but true for empty string. We should standardize on one of the two to mean "not set", probably "null". We can generate a warning if a user sets a property key to empty string, and have a test to verify that we don't use empty string as a default value for any of our property keys.