A model-based semantics for synchronization contracts in object-oriented languages