if (p == null || p.tryCompensate(null, blocker)) { try { do {} while (!blocker.isReleasable() && !blocker.block()); } finally { if (p != null)
do {} while (!blocker.isReleasable() && !blocker.block());
/** * If necessary, compensates for blocker, and blocks */ private void awaitBlocker(ManagedBlocker blocker) throws InterruptedException { while (!blocker.isReleasable()) { if (tryPreBlock()) { try { do {} while (!blocker.isReleasable() && !blocker.block()); } finally { postBlock(); } break; } } }