sig
  module type DIFF_ELEMENT =
    sig
      type t
      val pp_printer : Format.formatter -> OUnitDiff.DIFF_ELEMENT.t -> unit
      val compare :
        OUnitDiff.DIFF_ELEMENT.t -> OUnitDiff.DIFF_ELEMENT.t -> int
      val pp_print_sep : Format.formatter -> unit -> unit
    end
  module type S =
    sig
      type e
      type t
      val compare : OUnitDiff.S.t -> OUnitDiff.S.t -> int
      val pp_printer : Format.formatter -> OUnitDiff.S.t -> unit
      val pp_diff : Format.formatter -> OUnitDiff.S.t * OUnitDiff.S.t -> unit
      val assert_equal :
        ?msg:string -> OUnitDiff.S.t -> OUnitDiff.S.t -> unit
      val of_list : OUnitDiff.S.e list -> OUnitDiff.S.t
    end
  module SetMake :
    functor (D : DIFF_ELEMENT->
      sig
        type e = D.t
        type t
        val compare : t -> t -> int
        val pp_printer : Format.formatter -> t -> unit
        val pp_diff : Format.formatter -> t * t -> unit
        val assert_equal : ?msg:string -> t -> t -> unit
        val of_list : e list -> t
      end
  module ListSimpleMake :
    functor (D : DIFF_ELEMENT->
      sig
        type e = D.t
        type t = D.t list
        val compare : t -> t -> int
        val pp_printer : Format.formatter -> t -> unit
        val pp_diff : Format.formatter -> t * t -> unit
        val assert_equal : ?msg:string -> t -> t -> unit
        val of_list : e list -> t
      end
  val pp_comma_separator : Format.formatter -> unit -> unit
end