module 0x8675309::M { struct R1 has key, drop {} struct R2 has key {} struct R3 has key { f: T } fun foo1(a: address) acquires R1 { borrow_global(a); } fun foo2(a: address) acquires R2 { borrow_global(a); } fun t0(a: address) acquires R1, R2 { borrow_global(a); borrow_global(a); } fun t1(a: address) acquires R1, R2 { borrow_global_mut(a); borrow_global_mut(a); } fun t2(a: address) acquires R1, R2 { R1{} = move_from(a); R2{} = borrow_global_mut(a); } fun t3(a: address) acquires R1, R2 { foo1(a); foo2(a); } fun t4(account: &signer, a: address) { exists(a); exists(a); move_to(account, R1{}); move_to(account, R2{}); } fun t5(a: address) acquires R3 { R3{ f: _ } = move_from>(a); R3{ f: _ } = move_from>(a); borrow_global_mut>(a); borrow_global_mut>(a); } fun t6(account: &signer, a: address) { exists>(a); exists>(a); move_to>(account, R3{ f: true }); move_to>(account, R3{ f: R2{} }); } }