functor (M : Map.S) ->
  functor (P : sig type t = M.key val to_string : t -> string end) ->
    sig
      val make_equal :
        ('a -> 'a -> bool) ->
        ('a -> string) -> ?msg:string -> 'a M.t -> 'a M.t -> unit
      val make_not_equal :
        ('a -> 'a -> bool) ->
        ('a -> string) -> ?msg:string -> 'a M.t -> 'a M.t -> unit
    end