this assumes that choices are castable to string, which would be a BC break (currently, you can use the constraint to make the user choose between a list of objects)