interface IForward { in void doit(); out void done(); behaviour { bool doing = false; on doit: doing = true; [doing] on optional: {doing = false; done;} } } component Forward { provides IForward pp; requires IForward rp; behaviour { bool doin = false; [!doin] on pp.doit(): {doin = true; rp.doit();} [doin] on pp.doit(): {} on rp.done(): {doin = false; pp.done();} } }