sig
  module Comparable :
    sig
      module V1 :
        sig
          module type S =
            sig
              type key
              type comparator_witness
              module Map :
                sig
                  type 'a t =
                      (Stable_containers.Comparable.V1.S.key, 'a,
                       Stable_containers.Comparable.V1.S.comparator_witness)
                      Std_internal.Map.t
                  val map : 'a t -> f:('-> 'b) -> 'b t
                  val t_of_sexp :
                    (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
                  val sexp_of_t :
                    ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
                  val compare : ('-> '-> int) -> 'a t -> 'a t -> int
                  val bin_t :
                    'Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t
                  val bin_read_t :
                    'Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader
                  val __bin_read_t__ :
                    'Bin_prot.Read.reader ->
                    (int -> 'a t) Bin_prot.Read.reader
                  val bin_reader_t :
                    'Bin_prot.Type_class.reader ->
                    'a t Bin_prot.Type_class.reader
                  val bin_size_t :
                    'Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer
                  val bin_write_t :
                    'Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer
                  val bin_writer_t :
                    'Bin_prot.Type_class.writer ->
                    'a t Bin_prot.Type_class.writer
                end
              module Set :
                sig
                  type t =
                      (Stable_containers.Comparable.V1.S.key,
                       Stable_containers.Comparable.V1.S.comparator_witness)
                      Std_internal.Set.t
                  val t_of_sexp : Sexplib.Sexp.t -> t
                  val sexp_of_t : t -> Sexplib.Sexp.t
                  val compare : t -> t -> int
                  val bin_t : t Bin_prot.Type_class.t
                  val bin_read_t : t Bin_prot.Read.reader
                  val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
                  val bin_reader_t : t Bin_prot.Type_class.reader
                  val bin_size_t : t Bin_prot.Size.sizer
                  val bin_write_t : t Bin_prot.Write.writer
                  val bin_writer_t : t Bin_prot.Type_class.writer
                end
            end
          module Make :
            functor
              (Key : sig
                       type t
                       type comparator_witness
                       val comparator :
                         (t, comparator_witness) Comparator.comparator
                       val t_of_sexp :
                         Sexplib.Sexp.t ->
                         Stable_containers.Comparable.V1.Make.t
                       val sexp_of_t :
                         Stable_containers.Comparable.V1.Make.t ->
                         Sexplib.Sexp.t
                       val bin_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Type_class.t
                       val bin_read_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Read.reader
                       val __bin_read_t__ :
                         (int -> Stable_containers.Comparable.V1.Make.t)
                         Bin_prot.Read.reader
                       val bin_reader_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Type_class.reader
                       val bin_size_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Size.sizer
                       val bin_write_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Write.writer
                       val bin_writer_t :
                         Stable_containers.Comparable.V1.Make.t
                         Bin_prot.Type_class.writer
                     end->
              sig
                module Map :
                  sig
                    type 'a t =
                        (Key.t, 'a, Key.comparator_witness)
                        Std_internal.Map.t
                    val map : 'a t -> f:('-> 'b) -> 'b t
                    val t_of_sexp :
                      (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
                    val sexp_of_t :
                      ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
                    val compare : ('-> '-> int) -> 'a t -> 'a t -> int
                    val bin_t :
                      'Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t
                    val bin_read_t :
                      'Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader
                    val __bin_read_t__ :
                      'Bin_prot.Read.reader ->
                      (int -> 'a t) Bin_prot.Read.reader
                    val bin_reader_t :
                      'Bin_prot.Type_class.reader ->
                      'a t Bin_prot.Type_class.reader
                    val bin_size_t :
                      'Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer
                    val bin_write_t :
                      'Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer
                    val bin_writer_t :
                      'Bin_prot.Type_class.writer ->
                      'a t Bin_prot.Type_class.writer
                  end
                module Set :
                  sig
                    type t =
                        (Key.t, Key.comparator_witness) Std_internal.Set.t
                    val t_of_sexp : Sexplib.Sexp.t -> t
                    val sexp_of_t : t -> Sexplib.Sexp.t
                    val compare : t -> t -> int
                    val bin_t : t Bin_prot.Type_class.t
                    val bin_read_t : t Bin_prot.Read.reader
                    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
                    val bin_reader_t : t Bin_prot.Type_class.reader
                    val bin_size_t : t Bin_prot.Size.sizer
                    val bin_write_t : t Bin_prot.Write.writer
                    val bin_writer_t : t Bin_prot.Type_class.writer
                  end
              end
        end
    end
  module Hashable :
    sig
      module V1 :
        sig
          module type S =
            sig
              type key
              module Table :
                sig
                  type 'a t =
                      (Stable_containers.Hashable.V1.S.key, 'a)
                      Std_internal.Hashtbl.t
                  val bin_t :
                    'Bin_prot.Type_class.t ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Type_class.t
                  val bin_read_t :
                    'Bin_prot.Read.reader ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Read.reader
                  val __bin_read_t__ :
                    'Bin_prot.Read.reader ->
                    (int -> 'Stable_containers.Hashable.V1.S.Table.t)
                    Bin_prot.Read.reader
                  val bin_reader_t :
                    'Bin_prot.Type_class.reader ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Type_class.reader
                  val bin_size_t :
                    'Bin_prot.Size.sizer ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Size.sizer
                  val bin_write_t :
                    'Bin_prot.Write.writer ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Write.writer
                  val bin_writer_t :
                    'Bin_prot.Type_class.writer ->
                    'Stable_containers.Hashable.V1.S.Table.t
                    Bin_prot.Type_class.writer
                  val t_of_sexp :
                    (Sexplib.Sexp.t -> 'a) ->
                    Sexplib.Sexp.t ->
                    'Stable_containers.Hashable.V1.S.Table.t
                  val sexp_of_t :
                    ('-> Sexplib.Sexp.t) ->
                    'Stable_containers.Hashable.V1.S.Table.t ->
                    Sexplib.Sexp.t
                end
              module Hash_set :
                sig
                  type t = Stable_containers.Hashable.V1.S.key Hash_set.t
                  val bin_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Type_class.t
                  val bin_read_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Read.reader
                  val __bin_read_t__ :
                    (int -> Stable_containers.Hashable.V1.S.Hash_set.t)
                    Bin_prot.Read.reader
                  val bin_reader_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Type_class.reader
                  val bin_size_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Size.sizer
                  val bin_write_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Write.writer
                  val bin_writer_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t
                    Bin_prot.Type_class.writer
                  val t_of_sexp :
                    Sexplib.Sexp.t ->
                    Stable_containers.Hashable.V1.S.Hash_set.t
                  val sexp_of_t :
                    Stable_containers.Hashable.V1.S.Hash_set.t ->
                    Sexplib.Sexp.t
                end
            end
          module Make :
            functor (Key : Std_internal.Hashtbl.Key_binable->
              sig
                module Table :
                  sig
                    type 'a t = (Key.t, 'a) Std_internal.Hashtbl.t
                    val bin_t :
                      'Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t
                    val bin_read_t :
                      'Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader
                    val __bin_read_t__ :
                      'Bin_prot.Read.reader ->
                      (int -> 'a t) Bin_prot.Read.reader
                    val bin_reader_t :
                      'Bin_prot.Type_class.reader ->
                      'a t Bin_prot.Type_class.reader
                    val bin_size_t :
                      'Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer
                    val bin_write_t :
                      'Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer
                    val bin_writer_t :
                      'Bin_prot.Type_class.writer ->
                      'a t Bin_prot.Type_class.writer
                    val t_of_sexp :
                      (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t
                    val sexp_of_t :
                      ('-> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t
                  end
                module Hash_set :
                  sig
                    type t = Key.t Hash_set.t
                    val bin_t : t Bin_prot.Type_class.t
                    val bin_read_t : t Bin_prot.Read.reader
                    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
                    val bin_reader_t : t Bin_prot.Type_class.reader
                    val bin_size_t : t Bin_prot.Size.sizer
                    val bin_write_t : t Bin_prot.Write.writer
                    val bin_writer_t : t Bin_prot.Type_class.writer
                    val t_of_sexp : Sexplib.Sexp.t -> t
                    val sexp_of_t : t -> Sexplib.Sexp.t
                  end
              end
        end
    end
end