Put all cached values into a central struct instead of just the stable hash cc `@nnethercote` this allows re-use of the type for Predicate without duplicating all the logic for the non-hash cached fields
rustc_data_structures
RefCell
TransitiveRelation
lazy::Sync{OnceCell,Lazy}
sync::{Once,Lazy}Lock
rustc_data_structures::thin_vec::ThinVec
thin_vec::ThinVec
Encodable
Encoder