“…Projecting it on its roles we get R1 = c1 [1,2] !, R2 = c1 [1,2] ?, R3 = c2 [3,4] !, and R4 = c2 [3,4] ?. Implementing the specification using these four peers as-is, i.e., I = R1 R2 R3 R4, the developer cannot prevent that R3 and R4 interact on c2 before R1 has sent c1 to R2: trace c2 [3,4] , c1 [1,2] [1,2] , c2 [3,4] }. Therefore, the developer may decide to add a synchronizing message between R2 and R3, csync, to enforce the choreography, i.e., replacing R2 and R3 above respectively by c1 [1,2] ?…”