Model Checking, Tla Plus, TLC, Java, Concurrency.
Buffer class below: The buffer is implemented as a circular list. Method get uses wait to suspend the calling thread until the buffer is nonempty. The thread then removes one object from the buffer, and does a single call to notify to (potentially) unlock a producing thread. Method put is