anchor.diff:              chooseState(newState)
   
           and chooseState(runningState) = 
  -            //Console.WriteLine(sprintf "Running State %A" runningState)
  -            let queueMode = getStateSummary runningState
  -            //Console.WriteLine(sprintf "Next State %A" queueMode)
  -            match queueMode with
  -            | Empty -> emptyQueue(empty)
  -            | NotFullWorkAvailable -> notFullWorkAvailable(runningState)
  -            | NotFullNoWorkAvailable -> notFullNoWorkAvailable(runningState)
  -            | FullWorkAvailable -> fullWorkAvailable(runningState)
  -            | FullNoWorkAvailable -> fullNoWorkAvailable(runningState)
  -           
  +            if(runningState.AvailableWorkQueue.IsEmpty) then
  +                noWorkAvailable(runningState)
  +            else
  +                workAvailable(runningState)
   
  -        emptyQueue(empty)
  +        noWorkAvailable(empty)
       )
   
       let rec boundedWorkQueue = new BoundedWorkQueue<('TGroup * 'TItem)>(maxItems, postWorkToAgent)
  
positive.code:                 groupedItems.Items |> Map.add group (List.append items groupedItems.Items.[group])
              else
                  groupedItems.Items |> Map.add group items
          { Items = newItems; ItemCount = groupedItems.ItemCount + items.Length }
       static member Remove (group: 'TGroup) (groupedItems:GroupedItems<'TGroup, 'TItem>) =
          if(groupedItems.Items |> Map.containsKey group) then
              //Console.WriteLine("Removed group {0}",group)
              let itemsInGroup = groupedItems.Items.[group].Length
              { 
                  Items = groupedItems.Items |> Map.remove group
                  ItemCount = groupedItems.ItemCount - itemsInGroup
              }
          else
              // Console.WriteLine("Group missing {0}",group)
  
negative.code:             else
                  groupedItems.Items |> Map.add group (List.singleton item)
          //Console.WriteLine(sprintf "Added Group: %A" newItems)
          { Items = newItems }
       static member AddList (group: 'TGroup) (items:List<'TItem>) (groupedItems:GroupedItems<'TGroup, 'TItem>) =
          //Console.WriteLine("AddList Group: {0}", group)
          let newItems = 
  