public static <T>long addAndGet(AtomicLongFieldUpdater<T> updater,T instance,long n){
  for (; ; ) {
    long r=updater.get(instance);
    if (r == Long.MAX_VALUE) {
      return Long.MAX_VALUE;
    }
    long u=addCap(r,n);
    if (updater.compareAndSet(instance,r,u)) {
      return r;
    }
  }
}

public static < T > long addAndGet ( AtomicLongFieldUpdater < T > updater , T instance , long n ) { for ( ; ; ) { long r = updater . get ( instance ) ; if ( r == Long . MAX_VALUE ) { return Long . MAX_VALUE ; } long u = addCap ( r , n ) ; if ( updater . compareAndSet ( instance , r , u ) ) { return r ; } } }
concurrent addition bound to long . max_value . any concurrent write will " happen " before this operation .
