namespace S { interface I { enum R {r}; in void e(); in R f(); behaviour { on e: {} on f: reply (R.r); } } component Component { provides I p; requires I r; behaviour { on p.e(): r.e(); on p.f(): reply (I.R.r); } } component Foreign { provides I p; } } component foreign { provides S.I p; system { S.Component c; S.Foreign f; p <=> c.p; c.r <=> f.p; } }