interface I { in void a(); in void b(); out void c(); out void d(); behaviour { bool f = false; void toggle () { if (f) { c; } f = !f; } [true] { on a: { toggle(); } on b: { toggle(); toggle(); d; } } } } component function { provides I i; behaviour { bool f = false; void toggle () { if (f) { i.c(); } f = !f; } [true] { on i.a(): { toggle(); } on i.b(): { toggle(); toggle(); i.d(); } } } }