address 0x42 { module M { struct S has copy, drop, store {} struct R {} struct Box has drop { f: T } struct Pair has drop { f1: T1, f2: T2 } // types that can have drop but the specific instantiation does not fun ex(t: T) { Box { f: R{} }; Box> { f: Box { f: R{} } }; Box { f: t }; Box> { f: Box { f: t } }; Pair { f1: S{}, f2: R{} }; (Pair { f1: S{}, f2: R{} }, 0, @0x1); Box { f: R {} } == Box { f: R {} }; Box> { f: Box { f: R {} } } == Box> { f: Box { f: R {} }}; Box { f: t } == Box { f: t }; Box> { f: Box { f: t } } == Box> { f: Box { f: t} }; Pair { f1: R{}, f2: S{} } == Pair { f1: R{}, f2: S{} }; } } }