we could be mutating instances here

i reckon type hierarchy changes like this are rare. could we get away with stern instructions to manually call invalidate if you edit types?