anchor.diff:  
           let myEvents = (streams, streamValues) |> Seq.unfold generateStream
   
  +        let processValue (value:int) (docObj:obj) =
  +            let doc = docObj :?> MyCountingDoc
  +            let isEven = doc.Count % 2 = 0
  +            doc.Count <- doc.Count + 1
  +            if isEven then
  +                doc.Value <- doc.Value + value
  +            else
  +                doc.Value <- doc.Value - value
  +
           seq {
               yield async {
                   for (key,value) in myEvents do
  -                    do! projector.Enqueue key value
  +                    do! projector.Enqueue key (processValue value)
                   do! projector.WaitAll()
               }
   
  
positive.code:                 getDocument docKey documentStore cache
                  |> Async.map (Option.getOrElseF buildNewDoc)
  
              let (complete, wait) = getPromise()
                  
              doc.Writes <- doc.Writes + 1
              for (_, value) in values do
                  let isEven = doc.Count % 2 = 0
                  doc.Count <- doc.Count + 1
                  if isEven then
                      doc.Value <- doc.Value + value
                  else
                      doc.Value <- doc.Value - value
  
              let writeRequests =
                  {
                      DocumentKey = docKey
  
negative.code:         do! loop ()
      }
  
      let queue = new WorktrackingQueue<Guid, Guid * (obj -> unit)>(fst >> Set.singleton, processEvent, 10000, 10);
  
      member x.Enqueue key value =
         queue.Add (key,value)
  