code: @SuppressWarnings("unchecked")
      @Override
      public E poll()
      {
          final E[] buffer = consumerBuffer;
          final long mask = consumerMask;
  
          final long index = lpConsumerIndex();
          final long offset = modifiedCalcElementOffset(index, mask);
          Object e = lvElement(buffer, offset);// LoadLoad
          if (e == null)
          {
              // consumer can't see the odd producer index
              if (index != lvProducerIndex())
              {
                  // poll() == null iff queue is empty, null element is not strong enough indicator, so we must
                  // check the producer index. If the queue is indeed not empty we spin until element is
                  // visible.
                  e = spinWaitForElement(buffer, offset);
              }
              else
              {
                  return null;
              }
          }
  
          soElement(buffer, offset, null); // release element null
          soConsumerIndex(index + 2); // release cIndex
          return (E) e;
      }
docs: {@inheritDoc}
  <p>
  This implementation is correct for single consumer thread use only.