anchor.diff:              else
                   groupedItems.Items |> Map.add group (List.singleton item)
           //Console.WriteLine(sprintf "Added Group: %A" newItems)
  -        { Items = newItems; ItemCount = groupedItems.ItemCount + 1 }
  +        { Items = newItems }
        static member AddList (group: 'TGroup) (items:List<'TItem>) (groupedItems:GroupedItems<'TGroup, 'TItem>) =
           //Console.WriteLine("AddList Group: {0}", group)
           let newItems = 
  
positive.code:             callback completeCount
              return! chooseState(newState) }
  
          and setWorking (worker, reply, state : RunningState<'TGroup, 'TItem>) =
              let (group, newQueue) = state.AvailableWorkQueue |> Queue.uncons
              let items = state.CurrentItems.Items.[group]
              async {
  
negative.code:             chooseState(newState)
  
          and chooseState(runningState) = 
              if(runningState.AvailableWorkQueue.IsEmpty) then
                  noWorkAvailable(runningState)
              else
                  workAvailable(runningState)
  
          noWorkAvailable(empty)
      )
  
      let rec boundedWorkQueue = new BoundedWorkQueue<('TGroup * 'TItem)>(maxItems, postWorkToAgent)
  