Instead of expecting the value key of a constraint to hold a string, and the values key to hold a list of strings, failing if this is not the case, we can be lenient and accept either of them and simply select the behaviour based on whether it's a collection or not.