code: public final int failFastOffer(final E e) {
          if (null == e) {
              throw new NullPointerException();
          }
          final int mask = this.mask;
          final long capacity = mask + 1;
          // LoadLoad
          final long pIndex = lvProducerIndex();
          // LoadLoad
          long producerLimit = lvProducerLimit();
          if (pIndex >= producerLimit) {
              // LoadLoad
              final long cIndex = lvConsumerIndex();
              producerLimit = cIndex + capacity;
              if (pIndex >= producerLimit) {
                  // FULL :(
                  return 1;
              } else {
                  // update producer limit to the next index that we must recheck the consumer index
                  // StoreLoad
                  soProducerLimit(producerLimit);
              }
          }
          // look Ma, no loop!
          if (!casProducerIndex(pIndex, pIndex + 1)) {
              // CAS FAIL :(
              return -1;
          }
          // Won CAS, move on to storing
          final int offset = calcElementOffset(pIndex, mask);
          soElement(buffer, offset, e);
          // AWESOME :)
          return 0;
      }
docs: A wait free alternative to offer which fails on CAS failure.
  
  @param e new element, not null
  @return 1 if next element cannot be filled, -1 if CAS failed, 0 if successful