anchor.diff:              return destination
             }
             |> Async.StartChild
  +          
           cache <- cache |> Map.add url task
           replyChannel.Reply(task)
     })
  
positive.code:     return target
    }
  
    let hashCache = MailboxProcessor.Start(fun inbox -> async {
      let mutable cache = Map.empty
  
      while true do
  
negative.code:   })
  
    let copy source destination = async {
      let! task = hashCache.PostAndAsyncReply (fun ch -> Copy (source, destination, ch))
      
      return! task
    }
  
    let downloadCache = MailboxProcessor.Start (fun inbox -> async {
      let mutable cache = Map.empty
  
      while true do
        let! (Download (url, replyChannel)) = inbox.Receive ()
        
        match cache |> Map.tryFind url with
        | Some task -> replyChannel.Reply(task)
        | None -> 
  