functor
  (Elt : sig
           type 'a t
           val of_int : int -> int Container_unit_tests.t
           val to_int : int Container_unit_tests.t -> int
         end) (Container : sig
                             type 'a t
                             val mem :
                               ?equal:('a Elt.t -> 'a Elt.t -> bool) ->
                               'a t -> 'a Elt.t -> bool
                             val length : 'a t -> int
                             val is_empty : 'a t -> bool
                             val iter : 'a t -> f:('a Elt.t -> unit) -> unit
                             val fold :
                               'a t ->
                               init:'accum ->
                               f:('accum -> 'a Elt.t -> 'accum) -> 'accum
                             val exists :
                               'a t -> f:('a Elt.t -> bool) -> bool
                             val for_all :
                               'a t -> f:('a Elt.t -> bool) -> bool
                             val count : 'a t -> f:('a Elt.t -> bool) -> int
                             val sum :
                               (module Commutative_group.S with type t = 'sum) ->
                               'a t -> f:('a Elt.t -> 'sum) -> 'sum
                             val find :
                               'a t ->
                               f:('a Elt.t -> bool) -> 'a Elt.t option
                             val find_map :
                               'a t -> f:('a Elt.t -> 'b option) -> 'b option
                             val to_list : 'a t -> 'a Elt.t list
                             val to_array : 'a t -> 'a Elt.t array
                             val min_elt :
                               'a t ->
                               cmp:('a Elt.t -> 'a Elt.t -> int) ->
                               'a Elt.t option
                             val max_elt :
                               'a t ->
                               cmp:('a Elt.t -> 'a Elt.t -> int) ->
                               'a Elt.t option
                             val of_list :
                               'a Elt.t list -> 'a Container_unit_tests.t
                             val t_of_sexp :
                               (Sexplib.Sexp.t -> 'a) ->
                               Sexplib.Sexp.t -> 'a Container_unit_tests.t
                             val sexp_of_t :
                               ('a -> Sexplib.Sexp.t) ->
                               'a Container_unit_tests.t -> Sexplib.Sexp.t
                           end) ->
  sig
    val mem :
      ?equal:('a Elt.t -> 'a Elt.t -> bool) ->
      'a Container.t -> 'a Elt.t -> bool
    val length : 'a Container.t -> int
    val is_empty : 'a Container.t -> bool
    val iter : 'a Container.t -> f:('a Elt.t -> unit) -> unit
    val fold :
      'a Container.t ->
      init:'accum -> f:('accum -> 'a Elt.t -> 'accum) -> 'accum
    val exists : 'a Container.t -> f:('a Elt.t -> bool) -> bool
    val for_all : 'a Container.t -> f:('a Elt.t -> bool) -> bool
    val count : 'a Container.t -> f:('a Elt.t -> bool) -> int
    val sum :
      (module Commutative_group.S with type t = 'sum) ->
      'a Container.t -> f:('a Elt.t -> 'sum) -> 'sum
    val find : 'a Container.t -> f:('a Elt.t -> bool) -> 'a Elt.t option
    val find_map : 'a Container.t -> f:('a Elt.t -> 'b option) -> 'b option
    val to_list : 'a Container.t -> 'a Elt.t list
    val to_array : 'a Container.t -> 'a Elt.t array
    val min_elt :
      'a Container.t -> cmp:('a Elt.t -> 'a Elt.t -> int) -> 'a Elt.t option
    val max_elt :
      'a Container.t -> cmp:('a Elt.t -> 'a Elt.t -> int) -> 'a Elt.t option
    val t_of_sexp :
      (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a Container.t
    val sexp_of_t :
      ('a -> Sexplib.Sexp.t) -> 'a Container.t -> Sexplib.Sexp.t
  end