anchor.diff:                              | None -> None
                               | Some (bgUserOpName, bgOpName, bgOpArg, bgOp) -> 
                                   let oldBgOpCts = bgOpCts
  -                                bgOpCts <- new CancellationTokenSource()
  +                                lock gate (fun () -> bgOpCts <- new CancellationTokenSource())
                                   oldBgOpCts.Dispose()
                                   Some (bgUserOpName, bgOpName, bgOpArg, bgOp ctok)
   
  
positive.code:                         | Some (bgUserOpName, bgOpName, bgOpArg, bgOp) -> 
                              Trace.TraceInformation("Reactor: {0:n3} --> wait for background {1}.{2} ({3}), remaining {4}", DateTime.Now.TimeOfDay.TotalSeconds, bgUserOpName, bgOpName, bgOpArg, inbox.CurrentQueueLength)
                              let oldBgOpCts = bgOpCts
                              bgOpCts <- new CancellationTokenSource()
                              oldBgOpCts.Dispose()
                              
                              try 
  
negative.code:     // [Foreground Mailbox Accessors] -----------------------------------------------------------                
      member _.SetBackgroundOp(bgOpOpt) = 
          Trace.TraceInformation("Reactor: {0:n3} enqueue start background, length {1}", DateTime.Now.TimeOfDay.TotalSeconds, builder.CurrentQueueLength)
          lock gate (fun () -> bgOpCts.Cancel())
          builder.Post(SetBackgroundOp bgOpOpt)
  
      member _.CancelBackgroundOp() = 
          Trace.TraceInformation("FCS: trying to cancel any active background work")
          lock gate (fun () -> bgOpCts.Cancel())
  
      member _.EnqueueOp(userOpName, opName, opArg, op) =
          Trace.TraceInformation("Reactor: {0:n3} enqueue {1}.{2} ({3}), length {4}", DateTime.Now.TimeOfDay.TotalSeconds, userOpName, opName, opArg, builder.CurrentQueueLength)
  