//# publish module 0x1.B { struct T has drop {g: u64} public new(v: u64): Self.T { label b0: return T{g: move(v)}; } public change(this: &mut Self.T) { let g: &mut u64; label b0: g = &mut move(this).T::g; *move(g) = 3; return; } public get(this: &mut Self.T): u64 { let x: &u64; label b0: x = &move(this).T::g; return *move(x); } } //# run import 0x1.B; main() { let x: B.T; let y: u64; label b0: x = B.new(1); B.change(&mut x); y = B.get(&mut x); assert(move(y) == 3, 42); return; }