private void validateSlowProducerOverClaim(final int activeCycleIndex, final long producerCycleClaim)
    {
        //the cycle claim is now ok?
        final long producerPosition = producerPositionFromClaim(
            producerCycleClaim,
            positionWithinCycleMask,
            cycleIdBitShift,
            cycleLengthLog2);
        if (isFull(producerPosition))
        {
            //a definitive fail could be declared only if the claim is trying to overwrite something not consumed yet:
            //isFull is not considering the real occupation of the slot
            final long consumerPosition = lvConsumerPosition();
            final long effectiveProducerLimit = consumerPosition + (this.cycleLength * 2l);
            if (producerPosition >= effectiveProducerLimit)
            {
                throw new IllegalStateException(
                    "The producer has fallen behind: please enlarge the capacity or reduce the number of producers! \n" +
                        " producerPosition=" + producerPosition + "\n" +
                        " consumerPosition=" + consumerPosition + "\n" +
                        " activeCycleIndex=" + activeCycleIndex + "\n" +
                        " cycleId=" + producerClaimCycleId(producerCycleClaim, cycleIdBitShift) + "\n" +
                        " positionOnCycle=" + positionWithinCycle(producerCycleClaim, positionWithinCycleMask));
            }
            //the slot is not occupied: we can write into it
        }
        //the claim now is ok: consumers have gone forward enough
    }
Validates a slow producer over-claim throwing {@link IllegalStateException} if the offer on it can't continue.
jctools-experimental/src/main/java/org/jctools/queues/MpscRelaxedArrayQueue.java