if (lock == null) {
if (runnable != null) runnable.run ();
return;
}
synchronized (lock) {
boolean interrupted = false;
while (!lock.done ()) {
try {
lock.wait ();
} catch (InterruptedException e) {