functor (K : OrderedType) (V : OrderedType->   sig     type key = K.t     type value = V.t     type t     val empty : t     val is_empty : t -> bool     val add : t -> key -> value -> t     val remove : t -> key -> value -> t     val remove_all : t -> key -> t     val mem : t -> key -> bool     val find : t -> key -> value list     val find_iter : t -> key -> (value -> unit) -> unit     val count : t -> key -> int     val iter : t -> (key -> value -> unit) -> unit     val fold : t -> '-> ('-> key -> value -> 'a) -> 'a     val size : t -> int     val union : t -> t -> t     val inter : t -> t -> t     val diff : t -> t -> t     val equal : t -> t -> bool     val compare : t -> t -> int     val submap : t -> t -> bool     val to_seq : t -> (key * value) sequence     val of_seq : ?init:t -> (key * value) sequence -> t     val keys : t -> key sequence     val values : t -> value sequence   end