anchor.diff:  
           if wait then
               //trigger.Signal()
  -            lock lockObj (fun _ -> Monitor.PulseAll lockObj)
               threads |> List.iter (fun t -> t.Join())
   
       member x.Enqueue(commands : seq<CopyCommand>) =
  
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:             lock lockObj (fun () ->
                  if running then
                      running <- false
                      Monitor.PulseAll lockObj
                      true
                  else
                      false
  