//# publish module 0x1.M { import 0x1.signer; struct Foo has key, store { x: T } foo(account: &signer) acquires Foo { let sender: address; let x: &mut Self.Foo; let y: Self.Foo; label b0: sender = signer.address_of(copy(account)); x = borrow_global_mut>(copy(sender)); _ = move(x); _ = exists>(copy(sender)); y = move_from>(copy(sender)); move_to>(copy(account), move(y)); return; } foo2(account: &signer) acquires Foo { let sender: address; let x: &mut Self.Foo; let y: Self.Foo; label b0: sender = signer.address_of(copy(account)); x = borrow_global_mut>(copy(sender)); _ = move(x); _ = exists>(copy(sender)); y = move_from>(copy(sender)); move_to>(copy(account), move(y)); return; } foo3(account: &signer) acquires Foo { let sender: address; let x: &mut Self.Foo>; let y: Self.Foo>; label b0: sender = signer.address_of(copy(account)); x = borrow_global_mut>>(copy(sender)); _ = move(x); _ = exists>>(copy(sender)); y = move_from>>(copy(sender)); move_to>>(copy(account), move(y)); return; } }