code: @Override
      public E poll()
      {
          final long consumerIndex = this.lpConsumerIndex();
          final long offset = calcElementOffset(consumerIndex);
          // local load of field to avoid repeated loads after volatile reads
          final E[] buffer = this.buffer;
          final E e = lvElement(buffer, offset);// LoadLoad
          if (null == e)
          {
              return null;
          }
          soElement(buffer, offset, null);// StoreStore
          soConsumerIndex(consumerIndex + 1); // ordered store -> atomic and ordered for size()
          return e;
      }
docs: {@inheritDoc}
  <p>
  This implementation is correct for single consumer thread use only.