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