struct St { mut: a int } fn (shared s St) r(x St) { } fn (s St) m(shared x St) { } fn f(w int, shared x St) { } fn g() { shared x := St{ a: 5 } lock x { x.r(x) x.m(x) f(0, x) } }