global protocol Booking(role C, role A, role S) { rec Loop { choice at C { choice at C { Yes() from C to A; Yes() from A to S; Payment(int) from C to S; Ack() from S to C; } or { No() from C to A; No() from A to S; } Bye() from C to A; } or { Query(int) from C to A; Quote(int) from A to C; Dummy() from A to S; // Dummy continue Loop; } } }