interface IMultipleOutEventsOnSingleTau { in void ca(); out void oa(); out void ob(); behaviour { enum States {Closed, Emitting, Open}; States state = States.Closed; [state.Closed] { on ca: illegal; on ca: {} on inevitable: {oa; ob; state = States.Open;} on inevitable: {oa; state = States.Emitting;} } [state.Emitting] { on ca: illegal; on ca: {} on inevitable: {ob; state = States.Open;} } [state.Open] { on ca: state = States.Closed; } } }