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