functor
  (KVMap : sig
             val cardinal_zero_or_one : KVMap.t -> bool
             val diff_if_one : KVMap.t -> KVMap.t -> KVMap.t
             val fold_enum : (KVMap.t -> '-> 'a) -> KVMap.t -> '-> 'a
             val cardinal_less_than : KVMap.t -> int -> int
             val find_lonely_key : KVMap.t -> Key.t * Value.t
             val find_lonely_binding : KVMap.t -> Key.t * Value.t
           end)
  ->
  sig
    val cardinal_zero_or_one : t -> bool
    val diff_if_one : t -> t -> t
    val fold_enum : (t -> '-> 'a) -> t -> '-> 'a
    val cardinal_less_than : t -> int -> int
    val find_lonely_binding : t -> Key.t * Value.t
  end