Mmm, I didn't notice this was shallow. The issue remains, but it's less clear you should use TypeMap. OTOH if it wasn't TypeMap it should be some not-yet-existing parent of TypeMap, since it will still overlap heavily with TypeMap.