anchor.diff:                  | Message(x) ->
                       let! isAcceptable = condition x
                       if isAcceptable then
  -                        nextAgent.Post msg
  -                    return! messageLoop()
  -                | End(replyChannel) ->
  -                    replyChannel.Reply()
  -                | Done(replyChannel) ->
  -                    nextAgent.PostAndReply(Done)
  +                        nextAgent.Tell x
  +                    return! messageLoop()
  +                | End(replyChannel) ->
  +                    replyChannel.Reply()
  +                | Done(replyChannel) ->
  +                    nextAgent.Done()
                       replyChannel.Reply()
                       return! messageLoop()
                   | Collect(replyChannel) ->
  
positive.code:                 | Message(x) ->
                      let isAcceptable = condition x
                      if isAcceptable then
                          nextAgent.Post msg
                      return! messageLoop()
                  | End(replyChannel) ->
                      replyChannel.Reply()
                  | Done(replyChannel) ->
                      nextAgent.PostAndReply(Done)
                      replyChannel.Reply()
                      return! messageLoop()                
                  | Collect(replyChannel) ->
  
negative.code:                 match msg with
                  | Message(x) ->
                      let mappedItem = map x
                      nextAgent.Tell mappedItem
                      return! messageLoop()
                  | End(replyChannel) ->
                      replyChannel.Reply()
                  | Done(replyChannel) ->
                      nextAgent.Done()
                      replyChannel.Reply()
                      return! messageLoop()
                  | Collect(replyChannel) ->
  