code: public E take() throws InterruptedException {
          E e = transferer.transfer(null, false, 0);
          if (e != null)
              return e;
          Thread.interrupted();
          throw new InterruptedException();
      }
docs: Retrieves and removes the head of this queue, waiting if necessary
  for another thread to insert it.
  
  @return the head of this queue
  @throws InterruptedException {@inheritDoc}