address 0x42 { module M { struct S has copy, drop, store {} struct R has drop {} struct Box has key, store { f: T } struct Pair has key, store { f1: T1, f2: T2 } struct K has key {} fun ignore(_x: T) { abort 0 } // types that can have key/store but the specific instantiation does not fun ex(s: &signer, a1: address) acquires Box, Pair { move_to(s, Box { f: R {} }); borrow_global>(a1); borrow_global_mut>>(a1); Pair { f1: _, f2: _ } = move_from>(a1); exists, S>>(a1); borrow_global>(a1); borrow_global_mut>(a1); } } }