interface I { in bool e(); behaviour { on e: reply(true); on e: reply(false); } } interface II { out void trigger(); behaviour { on inevitable: trigger; } } component missing_prefix { provides I i; requires II ii; behaviour { enum State {One, Two, Three}; State state = State.One; bool blocked = false; blocking on i.e(): { [state.One] { state = State.Two; reply(false); } [state.Two] { state = State.Three; reply(false); } [state.Three] blocked = true; } on ii.trigger(): { [blocked] { [state.Three] { state = State.One; blocked = false; reply(true); } [otherwise] {} } [otherwise]{} } } }