interface RGuardthreetopon { in void e(); out void a(); behaviour { on e: illegal; } } interface IGuardthreetopon { in void e(); in void t(); in void s(); out void a(); behaviour { bool b = false; [true ] { on e: [b] { a; } on e: [!b] { a; } } on t: [!b] { a; } on t: [b] { a; } on t: [!b] { a; } on s: { a; } } } component Guardthreetopon { provides IGuardthreetopon i; requires RGuardthreetopon r; behaviour { bool b = false; [true] { on i.e(): [b] { i.a(); } on i.e(): [!b] { bool c = true; if (c) i.a(); } } on i.t(): [b] i.a(); on r.a(): {} on i.t(): [!b] i.a(); on i.s(): i.a(); } }