related article on nil punning: https://lispcast.com/nil-punning/
The same is true of Objective-C's object semantics, which means that language has two flavors of null pointer, one of which will scream SIGSEGV if you do anything significant with it, the other having more subtle failure modes...
Object>>isNil ^false
UndefinedObject>>isNil ^true
It drops into the debugger if you pass it a message it doesn't understand.