Unlike other primitive `BOOL` should accept `undef` as well. There are tons of existing code returning `undef` as false. IMHO it's not good idea forcing users to change their existing codebase in order to use newer syntax to add some features.