// Place global declarations here.
clock time;
urgent chan ML;
urgent chan LM;
urgent chan LR;
urgent chan RL;
Sender
clock sc;
clock fc;
receivedACK
waitACK
canSend
waitPacket
Receiver
clock rc;
canACK
donePacket
receivedPacket
waitPacket
Link
clock lc;
lostPacket
canSend
receivedPacket
canACK
receivedACK
sender = Sender();
receiver = Receiver();
link = Link();
system sender, receiver, link;
A[] (not deadlock)
A<> sender.receivedACK
sender.waitACK --> (sender.receivedACK)
E<> receiver.receivedPacket