docs: public E getElementBlocking() throws InterruptedException {
  		lock.lock();
  		try {
  			while (open && elements.isEmpty()) {
  				nonEmpty.await();
  			}
  
  			if (open) {
  				return elements.removeFirst();
  			} else {
  				throw new IllegalStateException("queue is closed");
  			}
  		} finally {
  			lock.unlock();
  		}
  	}