anchor.diff:                      if(itemIndex = 0L) then
                           reply.Reply()
                       else 
  -                        lastCompleteTracker.NotifyWhenComplete(itemIndex - 1L, Some "NotifyWhenComplete empty", async { reply.Reply() } )
  +                        lastCompleteTracker.NotifyWhenComplete(state.LastIndex(), Some "NotifyWhenComplete empty", async { reply.Reply() } )
                       Some(empty itemIndex)
                   | GroupComplete group -> Some(groupComplete group itemIndex)
                   | _ -> None)
  
positive.code: 
                  reply.Reply work
  
                  let newValues = { values with Items = List.empty; Processing = values.Items }
                  groupItems.Remove(nextKey) |> ignore
                  groupItems.Add(nextKey, newValues)
                  return! nextMessage itemIndex }
              and nextMessage itemIndex = async {
                  let currentQueueSize = workQueue.Count
                  if(currentQueueSize = 0) then
                      return! empty itemIndex
                  elif currentQueueSize >= maxItems then
  
negative.code: 
                  return! (nextMessage nextIndex) }
              and groupComplete group itemIndex = async {
                  state.GroupComplete group
                  
  
                  return! nextMessage itemIndex }
              and consume (workCallback, reply) itemIndex = async {
  
                  let (nextKey, values) = state.ConsumeNext()
                  let work =
                      async {
                          try
  