code: public E poll() {
          if (mSize.get() == 0)
              return null;
          mPollLock.lock();
          try {
              return removeHead();
          }
          finally {
              mPollLock.unlock();
          }
      }
docs: Removes and returns the item at the head of the queue.  Concurrent calls to
  this method and offerAndGetNode() do not mutually block, however, concurrent
  calls to this method are serialized.