interface ifunction2 { in void a(); in void b(); out void c(); out void d(); behaviour { bool f = false; bool vtoggle () { if (f) c; return !f; } [true] { on a: { f = vtoggle(); } on b: { f = vtoggle(); bool bb = vtoggle(); f = bb; d; } } } } component function2 { provides ifunction2 i; behaviour { bool f = false; bool vtoggle () { if (f) i.c(); return !f; } [true] { on i.a(): { f = vtoggle(); } on i.b(): { f = vtoggle(); bool bb = vtoggle(); f = bb; i.d(); } } } }