code: static long getAndSub(RingBuffer.Sequence sequence, long toSub) {
  		long r, u;
  		do {
  			r = sequence.getAsLong();
  			if (r == 0 || r == Long.MAX_VALUE) {
  				return r;
  			}
  			u = Operators.subOrZero(r, toSub);
  		}
  		while (!sequence.compareAndSet(r, u));
  
  		return r;
  	}
docs: Concurrent subtraction bound to 0 and Long.MAX_VALUE. Any concurrent write will
  "happen" before this operation.
  
  @param sequence current sequence to update
  @param toSub delta to sub
  
  @return value before subscription, 0 or Long.MAX_VALUE