Program: 60020
Project: 60020
Buggy source:
/** 
 * {@inheritDoc}<p>If a cancellation attempt succeeds on a   {@code Future} that had previously been {@linkplain #setFuture set asynchronously}, then the cancellation will also be propagated to the delegate  {@code Future} that was supplied in the {@code setFuture} call.<p>Rather than override this method to perform additional cancellation work or cleanup, subclasses should override  {@link #afterDone}, consulting   {@link #isCancelled} and {@link #wasInterrupted} as necessary. This ensures that the work is done even if the future iscancelled without a call to  {@code cancel}, such as by calling   {@code setFuture(cancelledFuture)}.
 */
@CanIgnoreReturnValue @Override public boolean cancel(boolean mayInterruptIfRunning){
  Object localValue=value;
  boolean rValue=false;
  if (localValue == null | localValue instanceof SetFuture) {
    Throwable cause=GENERATE_CANCELLATION_CAUSES ? new CancellationException("String_Node_Str") : null;
    Object valueToSet=new Cancellation(mayInterruptIfRunning,cause);
    AbstractFuture<?> abstractFuture=this;
    while (true) {
      if (ATOMIC_HELPER.casValue(abstractFuture,localValue,valueToSet)) {
        rValue=true;
        if (mayInterruptIfRunning) {
          abstractFuture.interruptTask();
        }
        complete(abstractFuture);
        if (localValue instanceof SetFuture) {
          ListenableFuture<?> futureToPropagateTo=((SetFuture)localValue).future;
          if (futureToPropagateTo instanceof TrustedFuture) {
            AbstractFuture<?> trusted=(AbstractFuture<?>)futureToPropagateTo;
            localValue=trusted.value;
            if (localValue == null | localValue instanceof SetFuture) {
              abstractFuture=trusted;
              continue;
            }
          }
 else {
            futureToPropagateTo.cancel(mayInterruptIfRunning);
          }
        }
        break;
      }
      localValue=abstractFuture.value;
      if (!(localValue instanceof SetFuture)) {
        break;
      }
    }
  }
  return rValue;
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}<p>If a cancellation attempt succeeds on a   {@code Future} that had previously been {@linkplain #setFuture set asynchronously}, then the cancellation will also be propagated to the delegate  {@code Future} that was supplied in the {@code setFuture} call.<p>Rather than override this method to perform additional cancellation work or cleanup, subclasses should override  {@link #afterDone}, consulting   {@link #isCancelled} and {@link #wasInterrupted} as necessary. This ensures that the work is done even if the future iscancelled without a call to  {@code cancel}, such as by calling   {@code setFuture(cancelledFuture)}.
 */
@CanIgnoreReturnValue @Override public boolean cancel(boolean mayInterruptIfRunning){
  Object localValue=value;
  boolean rValue=false;
  if (localValue == null | localValue instanceof SetFuture) {
    Object valueToSet=GENERATE_CANCELLATION_CAUSES ? new Cancellation(mayInterruptIfRunning,new CancellationException("String_Node_Str")) : (mayInterruptIfRunning ? Cancellation.CAUSELESS_INTERRUPTED : Cancellation.CAUSELESS_CANCELLED);
    AbstractFuture<?> abstractFuture=this;
    while (true) {
      if (ATOMIC_HELPER.casValue(abstractFuture,localValue,valueToSet)) {
        rValue=true;
        if (mayInterruptIfRunning) {
          abstractFuture.interruptTask();
        }
        complete(abstractFuture);
        if (localValue instanceof SetFuture) {
          ListenableFuture<?> futureToPropagateTo=((SetFuture)localValue).future;
          if (futureToPropagateTo instanceof TrustedFuture) {
            AbstractFuture<?> trusted=(AbstractFuture<?>)futureToPropagateTo;
            localValue=trusted.value;
            if (localValue == null | localValue instanceof SetFuture) {
              abstractFuture=trusted;
              continue;
            }
          }
 else {
            futureToPropagateTo.cancel(mayInterruptIfRunning);
          }
        }
        break;
      }
      localValue=abstractFuture.value;
      if (!(localValue instanceof SetFuture)) {
        break;
      }
    }
  }
  return rValue;
}