This doesn't seem right: A collection is not a boolean.

A collection can be coerced to a boolean, but so could a string, a number, etc. Indeed - almost every type could have a true/false value, and it seems unusual to give only Collection this magic power, by manipulating the type hierarchy.