I don't really like the fact to use `null` in addition to `true` and `false` to represent the result of something that can have three states. The semantics behind is not well defined. Moreover, doesn't it conflict with that in this case? Here `null` means it's not valid, not that there's no constraint towards macros. Anyway in this case I would still leave the responsibility to the user for that check. Or otherwise throw an exception.