`nilValue` doesn't really seem worthwhile here. If it's illegal to set `text` to nil, maybe we could default to an empty string instead?