static public void awaitOn(Condition c) {
	MultithreadedTestCase thisTestCase = currentTestCase.get();
	if (thisTestCase != null && thisTestCase.failed)
	    throw new RuntimeException("Test case has failed");

	if (skipNextWait.get()) {
	    skipNextWait.set(false);
	    return;
	}
	try {
	    c.await(3, TimeUnit.SECONDS);
	} catch (InterruptedException e) {
	    if (thisTestCase != null && thisTestCase.failed)
		throw new RuntimeException("Test case has failed");
	    throw new AssertionError(e);
	}
	if (thisTestCase != null && thisTestCase.failed)
	    throw new RuntimeException("Test case has failed");

    }