/// It can be assumed to be implemented in a generic context, even without a corresponding bound.
/// For trait objects, the metadata must come from a pointer to the same underlying erased type.
/// pointers to vtables of the same type for the same trait can compare inequal (because vtables are
/// duplicated in multiple codegen units), and pointers to vtables of *different* types/traits can
/// computation does magic and the resulting layout is *not* a `FieldsShape::Aggregate`, instead