code: static <T> boolean set(AtomicReferenceFieldUpdater<T, Disposable> updater, T holder, @Nullable Disposable newValue) {
  		for (;;) {
  			Disposable current = updater.get(holder);
  			if (current == DISPOSED) {
  				if (newValue != null) {
  					newValue.dispose();
  				}
  				return false;
  			}
  			if (updater.compareAndSet(holder, current, newValue)) {
  				if (current != null) {
  					current.dispose();
  				}
  				return true;
  			}
  		}
  	}
docs: Atomically set the field to a {@link Disposable} and dispose the old content.
  
  @param updater the target field updater
  @param holder the target instance holding the field
  @param newValue the new Disposable to set
  @return true if successful, false if the field contains the {@link #DISPOSED} instance.