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 v = fun(); reply (v); } [true] { Status v = fun_arg (Status.No); reply (v); } } } } 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 v = fun(); reply (v); } [true] { Status v = fun_arg(Status.Ok); reply (v); } } } } component Reply4 { provides I i; requires U u; behaviour { enum Status {Yes, No}; bool dummy = false; Status fun () { return Status.Yes; } Status fun_arg (Status s) { return s; } [true] { on i.done(): { U.Status s = u.what(); s = u.what(); if(s == U.Status.Ok) { Status v = fun(); if(v == Status.Yes) reply (I.Status.Yes); else reply (I.Status.No); } else { Status v = fun_arg(Status.No); if(v == Status.Yes) reply (I.Status.Yes); else reply (I.Status.No); } } } } }