Right now to get the 'NSSet *` pointer value we first derefence it and then take the address of the result.
Beside being inefficient this potentially can cause an infinite recursion if the pointer value we get is a pointer
of a type that the TypeSystem can't derefence. If the pointer is for example some form of void * that the
dynamic type resolution can't resolve to an actual type, then the Derefence call goes back to asking
the formatters how to reference it. If the NSSet formatter then checks if it's an NSSet variation under the
hood then we just end infinitely often recursion.
In practice this seems to happen with some form of Builtin.RawPointer we get from a NSDictionary in Swift.
FWIW, no other formatter is doing the same deref->addressOf as here and there doesn't seem to be any
specific reason to do so in the git history (it's just part of the initial formatter commit)
why GetValueAsUnsigned(0) here and GetPointerValue() above?