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