interface I { enum Status { Yes, No }; in Status done(); behaviour { bool dummy = false; void reply_fun () { reply(Status.Yes); } void reply_fun_arg (Status s) { reply(s); } on done: { [true] { reply_fun(); } [true] { reply_fun_arg(Status.No); } } } } interface U { enum Status { Ok, Nok }; in Status what(); behaviour { bool dummy = false; void reply_fun () { reply(Status.Ok); } void reply_fun_arg (Status s) { reply(s); } on what: { [true] { reply_fun(); } [true] { reply_fun_arg(Status.Nok); } } } } component Reply3 { provides I i; requires U u; behaviour { bool dummy = false; void reply_fun () { reply(I.Status.Yes); } void reply_fun_arg (I.Status s) { reply(s); } [true] { on i.done(): { U.Status s = u.what(); s = u.what(); if(s == U.Status.Ok) { reply_fun(); } else { reply_fun_arg(I.Status.No); } } } } }