anchor.diff:                      nextAgent.Post (Message mappedItem)
                       return! messageLoop()
                   | End(replyChannel) ->
  -                    nextAgent.PostAndReply(End)
  -                    replyChannel.Reply()
  -                | Collect(replyChannel) ->
  -                    replyChannel.Reply []
  -                    return! messageLoop()
  -            }
  -            messageLoop() 
  -        )
  -
  -    let private mapAgentAsync (nextAgent: Agent<_,_>) map =
  -        MailboxProcessor.Start(fun inbox->
  +                    replyChannel.Reply()
  +                | Done(replyChannel) ->
  +                    nextAgent.PostAndReply(Done)
  +                    replyChannel.Reply()
  +                    return! messageLoop()
  +                | Collect(replyChannel) ->
  +                    replyChannel.Reply []
  +                    return! messageLoop()
  +            }
  +            messageLoop() 
  +        )
  +
  +    let private mapAgentAsync (nextAgent: Agent<_>) map =
  +        new Agent<_>(fun inbox->
               let rec messageLoop() = async{
                   let! msg = inbox.Receive()
                   match msg with
  
positive.code:         )
                  
      let private iterAgent action =
          MailboxProcessor.Start(fun inbox->
              let rec messageLoop() = async{
                  let! msg = inbox.Receive()
                  match msg with
  
negative.code:         )
                
      let private collectAgent() =
          new Agent<_>(fun inbox->
              let rec messageLoop(current, isCached) = async{
                  let! msg = inbox.Receive()
                  match msg with
  