sig
  val __pa_ounit_275876e34cf609db118f3d84b799a790 : string
  module type T =
    sig type 'a t val fold : 'a t -> init:'-> f:('-> '-> 'b) -> 'end
  val fold_count :
    ('-> init:int -> f:(int -> '-> int) -> 'c) ->
    '-> f:('-> bool) -> 'c
  module Make :
    functor (T : T->
      sig
        val fold : 'T.t -> init:'-> f:('-> '-> 'b) -> 'b
        val count : 'T.t -> f:('-> bool) -> int
        val iter : 'T.t -> f:('-> unit) -> unit
        val length : 'T.t -> int
        val is_empty : 'T.t -> bool
        val exists : 'T.t -> f:('-> bool) -> bool
        val mem : ?equal:('-> '-> bool) -> 'T.t -> '-> bool
        val for_all : 'T.t -> f:('-> bool) -> bool
        val find_map : 'T.t -> f:('-> 'b option) -> 'b option
        val find : 'T.t -> f:('-> bool) -> 'a option
        val to_list : 'T.t -> 'a list
        val to_array : 'T.t -> 'a array
      end
  module type S0 =
    sig
      type t
      type elt
      val mem : ?equal:(elt -> elt -> bool) -> t -> elt -> bool
      val length : t -> int
      val is_empty : t -> bool
      val iter : t -> f:(elt -> unit) -> unit
      val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
      val exists : t -> f:(elt -> bool) -> bool
      val for_all : t -> f:(elt -> bool) -> bool
      val count : t -> f:(elt -> bool) -> int
      val find : t -> f:(elt -> bool) -> elt option
      val find_map : t -> f:(elt -> 'a option) -> 'a option
      val to_list : t -> elt list
      val to_array : t -> elt array
    end
  module type S0_phantom =
    sig
      type elt
      type 'a t
      val mem : ?equal:(elt -> elt -> bool) -> 'a t -> elt -> bool
      val length : 'a t -> int
      val is_empty : 'a t -> bool
      val iter : 'a t -> f:(elt -> unit) -> unit
      val fold : 'a t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
      val exists : 'a t -> f:(elt -> bool) -> bool
      val for_all : 'a t -> f:(elt -> bool) -> bool
      val count : 'a t -> f:(elt -> bool) -> int
      val find : 'a t -> f:(elt -> bool) -> elt option
      val find_map : 'b t -> f:(elt -> 'a option) -> 'a option
      val to_list : 'a t -> elt list
      val to_array : 'a t -> elt array
    end
  module type S1 =
    sig
      type 'a t
      val mem : ?equal:('-> '-> bool) -> 'a t -> '-> bool
      val length : 'a t -> int
      val is_empty : 'a t -> bool
      val iter : 'a t -> f:('-> unit) -> unit
      val fold : 'a t -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
      val exists : 'a t -> f:('-> bool) -> bool
      val for_all : 'a t -> f:('-> bool) -> bool
      val count : 'a t -> f:('-> bool) -> int
      val find : 'a t -> f:('-> bool) -> 'a option
      val find_map : 'a t -> f:('-> 'b option) -> 'b option
      val to_list : 'a t -> 'a list
      val to_array : 'a t -> 'a array
    end
  module type S1_phantom =
    sig
      type ('a, +'phantom) t
      val mem : ?equal:('-> '-> bool) -> ('a, 'b) t -> '-> bool
      val length : ('a, 'b) t -> int
      val is_empty : ('a, 'b) t -> bool
      val iter : ('a, 'b) t -> f:('-> unit) -> unit
      val fold :
        ('a, 'b) t -> init:'accum -> f:('accum -> '-> 'accum) -> 'accum
      val exists : ('a, 'b) t -> f:('-> bool) -> bool
      val for_all : ('a, 'b) t -> f:('-> bool) -> bool
      val count : ('a, 'b) t -> f:('-> bool) -> int
      val find : ('a, 'b) t -> f:('-> bool) -> 'a option
      val find_map : ('a, 'c) t -> f:('-> 'b option) -> 'b option
      val to_list : ('a, 'b) t -> 'a list
      val to_array : ('a, 'b) t -> 'a array
    end
  module type Generic =
    sig
      type 'a t
      type 'a elt
      val mem : ?equal:('a elt -> 'a elt -> bool) -> 'a t -> 'a elt -> bool
      val length : 'a t -> int
      val is_empty : 'a t -> bool
      val iter : 'a t -> f:('a elt -> unit) -> unit
      val fold :
        'a t -> init:'accum -> f:('accum -> 'a elt -> 'accum) -> 'accum
      val exists : 'a t -> f:('a elt -> bool) -> bool
      val for_all : 'a t -> f:('a elt -> bool) -> bool
      val count : 'a t -> f:('a elt -> bool) -> int
      val find : 'a t -> f:('a elt -> bool) -> 'a elt option
      val find_map : 'a t -> f:('a elt -> 'b option) -> 'b option
      val to_list : 'a t -> 'a elt list
      val to_array : 'a t -> 'a elt array
    end
  module type Generic_phantom =
    sig
      type ('a, 'phantom) t
      type 'a elt
      val mem :
        ?equal:('a elt -> 'a elt -> bool) -> ('a, 'b) t -> 'a elt -> bool
      val length : ('a, 'b) t -> int
      val is_empty : ('a, 'b) t -> bool
      val iter : ('a, 'b) t -> f:('a elt -> unit) -> unit
      val fold :
        ('a, 'b) t -> init:'accum -> f:('accum -> 'a elt -> 'accum) -> 'accum
      val exists : ('a, 'b) t -> f:('a elt -> bool) -> bool
      val for_all : ('a, 'b) t -> f:('a elt -> bool) -> bool
      val count : ('a, 'b) t -> f:('a elt -> bool) -> int
      val find : ('a, 'b) t -> f:('a elt -> bool) -> 'a elt option
      val find_map : ('a, 'c) t -> f:('a elt -> 'b option) -> 'b option
      val to_list : ('a, 'b) t -> 'a elt list
      val to_array : ('a, 'b) t -> 'a elt array
    end
  module Check :
    functor (T : T.T1->
      functor (Elt : T.T1->
        functor
          (M : sig
                 val mem :
                   ?equal:('Elt.t -> 'Elt.t -> bool) ->
                   'T.t -> 'Elt.t -> bool
                 val length : 'T.t -> int
                 val is_empty : 'T.t -> bool
                 val iter : 'T.t -> f:('Elt.t -> unit) -> unit
                 val fold :
                   'T.t ->
                   init:'accum -> f:('accum -> 'Elt.t -> 'accum) -> 'accum
                 val exists : 'T.t -> f:('Elt.t -> bool) -> bool
                 val for_all : 'T.t -> f:('Elt.t -> bool) -> bool
                 val count : 'T.t -> f:('Elt.t -> bool) -> int
                 val find : 'T.t -> f:('Elt.t -> bool) -> 'Elt.t option
                 val find_map :
                   'T.t -> f:('Elt.t -> 'b option) -> 'b option
                 val to_list : 'T.t -> 'Elt.t list
                 val to_array : 'T.t -> 'Elt.t array
               end->
          sig  end
  module Check_S0 : functor (M : S0-> sig  end
  module Check_S0_phantom : functor (M : S0_phantom-> sig  end
  module Check_S1 : functor (M : S1-> sig  end
  type phantom = Container.phantom
  module Check_S1_phantom : functor (M : S1_phantom-> sig  end
end