anchor.diff:  }
     
   type MutableOrderedGroupingBoundedQueueMessages<'TGroup, 'TItem when 'TGroup : comparison> = 
  -  | AddItem of (seq<'TItem * 'TGroup> * Async<unit> * AsyncReplyChannel<unit>)
  +  | AddItem of (seq<'TItem * 'TGroup> * Async<unit> option * AsyncReplyChannel<unit>)
     | ConsumeWork of (('TGroup * seq<'TItem> -> Async<unit>) * AsyncReplyChannel<unit>)
     | GroupComplete of 'TGroup
     | NotifyWhenAllComplete of AsyncReplyChannel<unit>
  
positive.code:             log.Error("Exception thrown by MutableOrderedGroupingBoundedQueueMessages", exn))
          theAgent
      
      member this.Add (input:'TInput, group: ('TInput -> (seq<'TItem * 'TGroup>)), ?onComplete : Async<unit>) =
          async {
              let items = group input
              let onCompleteCallback = async {
                  match onComplete with
                  | Some callback -> return! callback
                  | None -> return ()
              }
              do! dispatcherAgent.PostAndAsyncReply(fun ch ->  AddItem (items, onCompleteCallback, ch))
              ()
          }
  
      member this.Consume (work:(('TGroup * seq<'TItem>) -> Async<unit>)) =
          dispatcherAgent.PostAndAsyncReply(fun ch -> ConsumeWork(work, ch))
  
negative.code: ﻿namespace Eventful
  
  open System
  
  open FSharpx
  
  type GroupEntry<'TItem> = {
      Items : List<Int64 * 'TItem>
  