code: @Override
      public boolean offer(final E e) {
          if (null == e) {
              throw new NullPointerException();
          }
          // use a cached view on consumer index (potentially updated in loop)
          final int mask = this.mask;
          // LoadLoad
          long producerLimit = lvProducerLimit();
          long pIndex;
          do {
              // LoadLoad
              pIndex = lvProducerIndex();
              if (pIndex >= producerLimit) {
                  // LoadLoad
                  final long cIndex = lvConsumerIndex();
                  producerLimit = cIndex + mask + 1;
                  if (pIndex >= producerLimit) {
                      // FULL :(
                      return false;
                  } else {
                      // update producer limit to the next index that we must recheck the consumer index
                      // this is racy, but the race is benign
                      soProducerLimit(producerLimit);
                  }
              }
          } while (!casProducerIndex(pIndex, pIndex + 1));
          /*
           * NOTE: the new producer index value is made visible BEFORE the element in the array. If we relied on
           * the index visibility to poll() we would need to handle the case where the element is not visible.
           */
          // Won CAS, move on to storing
          final int offset = calcElementOffset(pIndex, mask);
          // StoreStore
          soElement(buffer, offset, e);
          // AWESOME :)
          return true;
      }
docs: {@inheritDoc} <br>
  <p>
  IMPLEMENTATION NOTES:<br>
  Lock free offer using a single CAS. As class name suggests access is permitted to many threads
  concurrently.
  
  @see java.util.Queue#offer
  @see org.jctools.queues.MessagePassingQueue#offer