sig   module type S =     sig       type event       type +'a t       val empty : 'Zed_input.S.t       val add :         Zed_input.S.event list -> '-> 'Zed_input.S.t -> 'Zed_input.S.t       val remove :         Zed_input.S.event list -> 'Zed_input.S.t -> 'Zed_input.S.t       val fold :         (Zed_input.S.event list -> '-> '-> 'b) ->         'Zed_input.S.t -> '-> 'b       val bindings : 'Zed_input.S.t -> (Zed_input.S.event list * 'a) list       type 'a resolver       type 'a pack       val pack : ('-> 'b) -> 'Zed_input.S.t -> 'Zed_input.S.pack       val resolver : 'Zed_input.S.pack list -> 'Zed_input.S.resolver       type 'a result =           Accepted of 'a         | Continue of 'Zed_input.S.resolver         | Rejected       val resolve :         Zed_input.S.event -> 'Zed_input.S.resolver -> 'Zed_input.S.result     end   module Make :     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 end