interface I { in void e(); behaviour { on e: {} } } component C1 { provides I p; requires external I r1; requires external I r2; behaviour { on p.e(): {} } } component C2 { provides I p; behaviour { on p.e(): {} } } component S1 { provides I p; requires I r; system { C1 c1; C2 c2; p <=> c1.p; c1.r1 <=> r; c1.r2 <=> c2.p; } } component S2 { provides I p1; provides I p2; requires external I r1; requires external I r2; system { S1 s1; p1 <=> s1.p; p2 <=> r2; r1 <=> s1.r; } }