interface ihello { in void hello(); in void cancel(); out void world(); behaviour { bool triggered = false; [!triggered] on hello: triggered = true; [triggered] on hello: illegal; [triggered] on cancel: triggered = false; [!triggered] on cancel: illegal; [triggered] on inevitable: {triggered = false; world;} } } interface iworld { in void hello(); in void cancel(); out void world(); out void canceled(); behaviour { bool triggered = false; [!triggered] on hello: triggered = true; [triggered] on hello: illegal; on cancel: {triggered = false; canceled;} [triggered] on inevitable: {triggered = false; world;} } } component hello_blocked_external { provides ihello h; requires external iworld w; behaviour { bool triggered = false; [!triggered] on h.hello(): { w.hello(); triggered = true; } [triggered] on h.cancel(): blocking { triggered = false; w.cancel(); } on w.canceled(): { h.reply(); } [triggered] on w.world(): { triggered = false; h.world(); } [!triggered] on w.world(): { } } }