anchor.diff:              lock lockObj (fun () ->
                   if running then
                       running <- false
  +                    Monitor.PulseAll lockObj
                       true
                   else
                       false
  
positive.code:                     if not running then 
                          empty, 0L
                      else
                          while pending.Count = 0 do Monitor.Wait lockObj |> ignore
                          if not running then
                              empty, 0L
                          elif totalSize >= 0L then
  
negative.code: 
          if wait then
              //trigger.Signal()
              threads |> List.iter (fun t -> t.Join())
  
      member x.Enqueue(commands : seq<CopyCommand>) =
  