if (fut0 != null || !FINISH_FUT_UPD.compareAndSet(this, null, fut = finishFuture(fastFinish = fastFinish(), true))) return chainFinishFuture(finishFut, true, true, false);
return chainFinishFuture(finishFut, false, clearThreadMap, onTimeout); if (!FINISH_FUT_UPD.compareAndSet(this, null, fut = finishFuture(fastFinish = clearThreadMap && fastFinish(), false))) return chainFinishFuture(finishFut, false, clearThreadMap, onTimeout);
if (fut0 != null || !FINISH_FUT_UPD.compareAndSet(this, null, fut = finishFuture(fastFinish = fastFinish(), true))) return chainFinishFuture(finishFut, true, true, false);
return chainFinishFuture(finishFut, false, clearThreadMap, onTimeout); if (!FINISH_FUT_UPD.compareAndSet(this, null, fut = finishFuture(fastFinish = clearThreadMap && fastFinish(), false))) return chainFinishFuture(finishFut, false, clearThreadMap, onTimeout);