You're absolutely right - didn't realize that all immutable objects don't use memory addresses for `__hash__`. 
I guess `_undigested_hash` can be taken out too, since that task could be left to the consumer; and then it seems like we might as well go back to just having a `namedtuple`