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