sig   type 'a key   module Key :     sig       type 'a info       val create : 'Hmap.S.Key.info -> 'Hmap.S.key       val info : 'Hmap.S.key -> 'Hmap.S.Key.info       type t       val hide_type : 'Hmap.S.key -> Hmap.S.Key.t       val equal : Hmap.S.Key.t -> Hmap.S.Key.t -> bool       val compare : Hmap.S.Key.t -> Hmap.S.Key.t -> int     end   type t   val empty : Hmap.S.t   val is_empty : Hmap.S.t -> bool   val mem : 'Hmap.S.key -> Hmap.S.t -> bool   val add : 'Hmap.S.key -> '-> Hmap.S.t -> Hmap.S.t   val singleton : 'Hmap.S.key -> '-> Hmap.S.t   val rem : 'Hmap.S.key -> Hmap.S.t -> Hmap.S.t   val find : 'Hmap.S.key -> Hmap.S.t -> 'a option   val get : 'Hmap.S.key -> Hmap.S.t -> 'a   type binding = B : 'Hmap.S.key * '-> Hmap.S.binding   val iter : (Hmap.S.binding -> unit) -> Hmap.S.t -> unit   val fold : (Hmap.S.binding -> '-> 'a) -> Hmap.S.t -> '-> 'a   val for_all : (Hmap.S.binding -> bool) -> Hmap.S.t -> bool   val exists : (Hmap.S.binding -> bool) -> Hmap.S.t -> bool   val filter : (Hmap.S.binding -> bool) -> Hmap.S.t -> Hmap.S.t   val cardinal : Hmap.S.t -> int   val any_binding : Hmap.S.t -> Hmap.S.binding option   val get_any_binding : Hmap.S.t -> Hmap.S.binding end