For anyone interested, the bug is triggered by the incorrect use of object.Equals( object ) within the TypedValue's overload of the == operator. It should be using object.Equals( object, object ), rather than the instance Equals( object) method, which of course, requires a non-null instance. You might note that while the managed runtime catches most exceptions thrown by calls to a LispFunction, NullReferenceException is not one of them.
You can avoid this problem by pre-processing TypedValues that come from LISP like so: