A type L meets the BasicLockable requirements if the following expressions are well-formed and have the specified semantics (m denotes a value of type L).
m.lock()
Effects: Blocks until a lock can be acquired for the current execution agent. If an exception is thrown then a lock shall not have been acquired for the current execution agent.
m.unlock()
Requires: The current execution agent shall hold a lock on m.
Effects: Releases a lock on m held by the current execution agent.
Throws: Nothing.