functor (Event : Map.OrderedType) ->   sig     type event = Event.t     type +'a t     val empty : 'a t     val add : event list -> 'a -> 'a t -> 'a t     val remove : event list -> 'a t -> 'a t     val fold : (event list -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b     val bindings : 'a t -> (event list * 'a) list     type 'a resolver     type 'a pack     val pack : ('a -> 'b) -> 'a t -> 'b pack     val resolver : 'a pack list -> 'a resolver     type 'a result = Accepted of 'a | Continue of 'a resolver | Rejected     val resolve : event -> 'a resolver -> 'a result   end