mutex.unlock();
    final void Notify(boolean all) {        String exMsg = null;                mutex.lock();        if (owner != VmMagic.currentProcessor().currentThread) {            exMsg = "Current thread is not the owner of this monitor";        } else if (lockCount == 0) {            exMsg = "Monitor is not locked";        } else {            // Move thread(s) to enter queue            VmMagic.currentProcessor().disableReschedule(false, null);            VmThread t = notifyQueue.dequeue();            while (t != null) {                t.wakeupFromNotifyQueue(this);                enterQueue.enqueue(t, false);                if (!all) {                    break;                }                t = notifyQueue.dequeue();            }            VmMagic.currentProcessor().enableReschedule(false, null);        }        mutex.unlock();                if (exMsg != null) {            Unsafe.debug(exMsg);            throw new IllegalMonitorStateException(exMsg);        }    }