interface ISynchronousOut { enum Val {One, Two}; in void void_event(); in Val valued_event(); out void out_event(); behaviour { on void_event: out_event; on valued_event: {out_event; reply(Val.One);} on valued_event: {out_event; reply(Val.Two);} } } component SynchronousOut { provides ISynchronousOut pp; requires ISynchronousOut rp; behaviour { on pp.void_event(): rp.void_event(); on pp.valued_event(): { ISynchronousOut.Val v = rp.valued_event(); reply(v); } on rp.out_event(): pp.out_event(); } }