anchor.diff:                      return! messageLoop()
                   | End(replyChannel) ->
                       replyChannel.Reply()
  +                | Done(replyChannel) ->
  +                    replyChannel.Reply()
  +                    return! messageLoop()
                   | Collect(replyChannel) ->
                       replyChannel.Reply []
                       return! messageLoop()
  
positive.code:                     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->
              let rec messageLoop() = async{
                  let! msg = inbox.Receive()
                  match msg with
  
negative.code:         )
                  
      let private iterAgent action =
          new Agent<_>(fun inbox->
              let rec messageLoop() = async{
                  let! msg = inbox.Receive()
                  match msg with
  