interface I { in void e(); out void f(); behaviour { bool b = false; bool g (bool gc) { f; return gc || b; } [true] on e: { b = ! b; bool c = g (b); b = g (c); if(c) { f; } } } } component argument { provides I i; behaviour { bool b = false; bool g (bool gc) { i.f(); return gc || b; } [true] on i.e(): { b = ! b; bool c = g (b); b = g (c); if(c) { i.f(); } } } }