functor (X : ORD->   sig     type key = X.t     type t     val empty : t     val get : inj:'a injection -> key -> t -> 'a option     val add : inj:'a injection -> key -> '-> t -> t     val find : inj:'a injection -> key -> t -> 'a     val cardinal : t -> int     val remove : key -> t -> t     val mem : inj:'a injection -> key -> t -> bool     val iter_keys : f:(key -> unit) -> t -> unit     val fold_keys : f:('-> key -> 'a) -> x:'-> t -> 'a     type 'a sequence = ('-> unit) -> unit     val keys_seq : t -> key sequence     val bindings_of : inj:'a injection -> t -> (key * 'a) sequence     type value = Value : ('a injection -> 'a option) -> value     val bindings : t -> (key * value) sequence   end