docs: public void awaitCount(long totalCount, long timeout, TimeUnit unit) throws InterruptedException, TimeoutException
    {
      checkTotalCount(totalCount);
      long nanos = unit.toNanos(timeout);
      long currentCount = sync.getCount();
      while (compareCounts(totalCount, currentCount) > 0) {
        if (!sync.tryAcquireSharedNanos(currentCount, nanos)) {
          throw new TimeoutException();
        }
        currentCount = sync.getCount();
      }
    }