anchor.diff:      constructor(aDelegate: Object; aState: Object); empty;
     public
       constructor(aIn: TaskBlockGen<T>; aState: Object := nil);
  +    method ContinueWith(aAction: block(aTask: __ElementsTask1<T>); aState: Object := nil): __ElementsTask;
  +    method ContinueWith<TR>(aAction: block(aTask: __ElementsTask1<T>): TR; aState: Object := nil): __ElementsTask1<TR>;
       method run; override;
       property &Result: T read getResult;
     end;
  
positive.code:       end);
      end);
    end else
      ContinueWith(a -> aCompletion.moveNext(a), nil);
    exit true;
  end;
  
  
negative.code:   fTask.Done(ex);
  end;
  
  method __ElementsTask1<T>.ContinueWith(aAction: block(aTask: __ElementsTask1<T>); aState: Object := nil): __ElementsTask;
  begin
    result := new __ElementsTask(-> aAction(self), aState);
    result.fState := TaskState.Queued;
  
    AddOrRunContinueWith(result);
  end;
  
  method __ElementsTask1<T>.ContinueWith<TR>(aAction: block(aTask: __ElementsTask1<T>): TR; aState: Object := nil): __ElementsTask1<TR>;
  begin
    var r: TaskBlockGen<TR> := -> aAction(self);
    result := new __ElementsTask1(r, aState);
    result.fState := TaskState.Queued;
  
    AddOrRunContinueWith(result);
  end;
     
  method __ElementsTaskCompletionSource<T>.SetResult(val: T);
  begin
    fTask.fLock.lock;
  