interface Top { in void unguarded(); in void e(); out void f(); behaviour { on unguarded: {} on e: {} on optional: f; } } interface Bottom { in void e(); out void f(); behaviour { bool c = false; [!c] { on e: {c = true;} } [c] { on e: illegal; on inevitable: {c = false; f;} } } } component GuardedRequiredIllegal { provides Top t; requires Bottom b; behaviour { bool c = false; on t.unguarded(): {} [!c] { on t.e(): {c = true; b.e();} on b.f(): illegal; } [c] { on t.e(): {} on b.f(): {c = false;} } } }