“…A program implicitly deals with protocols, and low-level concurrency code for synchronization is all over the place. Similar to ADTs is the idea of abstract behavior types [1,8]; programs can be written against an abstract interface that describes all possible behaviors a program could expect. Abstract behavior types are explicitly specified by the protocol description language that is based on Reo.…”