package concpar21final03.instrumentation class Dummy trait Monitor: implicit val dummy: Dummy = new Dummy def wait()(implicit i: Dummy) = waitDefault() def synchronized[T](e: => T)(implicit i: Dummy) = synchronizedDefault(e) def notify()(implicit i: Dummy) = notifyDefault() def notifyAll()(implicit i: Dummy) = notifyAllDefault() private val lock = new AnyRef // Can be overridden. def waitDefault(): Unit = lock.wait() def synchronizedDefault[T](toExecute: => T): T = lock.synchronized(toExecute) def notifyDefault(): Unit = lock.notify() def notifyAllDefault(): Unit = lock.notifyAll()