interface iflush2cb { in void doit(); out void cb(); behaviour { bool idle = false; [idle] { on doit: {} } [!idle] { on doit: illegal; on inevitable: {cb; cb;} } } } component flush2cb { provides iflush2cb p; requires iflush2cb r; behaviour { bool idle = false; [idle] { on p.doit(): r.doit(); on r.cb: illegal; } [!idle] { on p.doit: illegal; on r.cb(): { p.cb(); } } } }