sig
  module type Basic =
    sig
      type elt
      type t
      val length : t -> int
      val unsafe_get : t -> int -> elt
      val of_array : elt array -> t
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : elt Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : elt Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : elt Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> elt) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : elt Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : elt Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : elt Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : elt Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : elt Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> elt
      val sexp_of_elt : elt -> Sexplib.Sexp.t
    end
  module type S =
    sig
      type elt
      type t
      val length : t -> int
      val unsafe_get : t -> int -> elt
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : elt Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : elt Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : elt Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> elt) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : elt Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : elt Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : elt Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : elt Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : elt Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> elt
      val sexp_of_elt : elt -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> elt
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(elt -> unit) -> unit
      val fold : t -> init:'-> f:('-> elt -> 'a) -> 'a
      val of_array : elt array -> t
      val to_array : t -> elt array
      val of_list : elt list -> t
      val to_list : t -> elt list
      val empty : t
    end
  module Make :
    functor (B : Basic->
      sig
        val length : B.t -> int
        val unsafe_get : B.t -> int -> B.elt
        val unsafe_slice : B.t -> pos:int -> len:int -> B.t
        val bin_elt : B.elt Core.Std.Bin_prot.Type_class.t
        val bin_read_elt : B.elt Core.Std.Bin_prot.Read_ml.reader
        val bin_read_elt_ : B.elt Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_read_elt__ :
          (int -> B.elt) Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_reader_elt : B.elt Core.Std.Bin_prot.Type_class.reader
        val bin_size_elt : B.elt Core.Std.Bin_prot.Size.sizer
        val bin_write_elt : B.elt Core.Std.Bin_prot.Write_ml.writer
        val bin_write_elt_ : B.elt Core.Std.Bin_prot.Unsafe_write_c.writer
        val bin_writer_elt : B.elt Core.Std.Bin_prot.Type_class.writer
        val elt_of_sexp : Sexplib.Sexp.t -> B.elt
        val sexp_of_elt : B.elt -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> B.t
        val sexp_of_t : B.t -> Sexplib.Sexp.t
        val bin_size_t : B.t Bin_prot.Size.sizer
        val bin_write_t : B.t Bin_prot.Map_to_safe.writer
        val bin_write_t_ : B.t Bin_prot.Unsafe_write_c.writer
        val bin_read_t : B.t Bin_prot.Read_ml.reader
        val bin_read_t_ : B.t Bin_prot.Unsafe_read_c.reader
        val bin_read_t__ : (int -> B.t) Bin_prot.Unsafe_read_c.reader
        val bin_writer_t : B.t Bin_prot.Type_class.writer
        val bin_reader_t : B.t Bin_prot.Type_class.reader
        val bin_t : B.t Bin_prot.Type_class.t
        val get : B.t -> int -> B.elt
        val slice : B.t -> pos:int -> len:int -> B.t
        val iter : B.t -> f:(B.elt -> unit) -> unit
        val fold : B.t -> init:'-> f:('-> B.elt -> 'a) -> 'a
        val of_array : B.elt array -> B.t
        val to_array : B.t -> B.elt array
        val of_list : B.elt list -> B.t
        val to_list : B.t -> B.elt list
        val empty : B.t
      end
  module Of_binable :
    functor
      (B : sig
             type t
             val bin_size_t : t Bin_prot.Size.sizer
             val bin_write_t : t Bin_prot.Map_to_safe.writer
             val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
             val bin_read_t : t Bin_prot.Read_ml.reader
             val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
             val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
             val bin_writer_t : t Bin_prot.Type_class.writer
             val bin_reader_t : t Bin_prot.Type_class.reader
             val bin_t : t Bin_prot.Type_class.t
             val t_of_sexp : Sexplib.Sexp.t -> t
             val sexp_of_t : t -> Sexplib.Sexp.t
           end->
      sig
        type t = Packed_array.Of_binable(B).t
        val length : t -> int
        val unsafe_get : t -> int -> B.t
        val unsafe_slice : t -> pos:int -> len:int -> t
        val bin_elt : B.t Core.Std.Bin_prot.Type_class.t
        val bin_read_elt : B.t Core.Std.Bin_prot.Read_ml.reader
        val bin_read_elt_ : B.t Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_read_elt__ :
          (int -> B.t) Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_reader_elt : B.t Core.Std.Bin_prot.Type_class.reader
        val bin_size_elt : B.t Core.Std.Bin_prot.Size.sizer
        val bin_write_elt : B.t Core.Std.Bin_prot.Write_ml.writer
        val bin_write_elt_ : B.t Core.Std.Bin_prot.Unsafe_write_c.writer
        val bin_writer_elt : B.t Core.Std.Bin_prot.Type_class.writer
        val elt_of_sexp : Sexplib.Sexp.t -> B.t
        val sexp_of_elt : B.t -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> t
        val sexp_of_t : t -> Sexplib.Sexp.t
        val bin_size_t : t Bin_prot.Size.sizer
        val bin_write_t : t Bin_prot.Map_to_safe.writer
        val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
        val bin_read_t : t Bin_prot.Read_ml.reader
        val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
        val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
        val bin_writer_t : t Bin_prot.Type_class.writer
        val bin_reader_t : t Bin_prot.Type_class.reader
        val bin_t : t Bin_prot.Type_class.t
        val get : t -> int -> B.t
        val slice : t -> pos:int -> len:int -> t
        val iter : t -> f:(B.t -> unit) -> unit
        val fold : t -> init:'-> f:('-> B.t -> 'a) -> 'a
        val of_array : B.t array -> t
        val to_array : t -> B.t array
        val of_list : B.t list -> t
        val to_list : t -> B.t list
        val empty : t
      end
  module Tuple2 :
    functor (A : Basic->
      functor (B : Basic->
        sig
          type elt = A.elt * B.elt
          type t = Packed_array.Tuple2(A)(B).t
          val length : t -> int
          val unsafe_get : t -> int -> elt
          val unsafe_slice : t -> pos:int -> len:int -> t
          val bin_elt : elt Core.Std.Bin_prot.Type_class.t
          val bin_read_elt : elt Core.Std.Bin_prot.Read_ml.reader
          val bin_read_elt_ : elt Core.Std.Bin_prot.Unsafe_read_c.reader
          val bin_read_elt__ :
            (int -> elt) Core.Std.Bin_prot.Unsafe_read_c.reader
          val bin_reader_elt : elt Core.Std.Bin_prot.Type_class.reader
          val bin_size_elt : elt Core.Std.Bin_prot.Size.sizer
          val bin_write_elt : elt Core.Std.Bin_prot.Write_ml.writer
          val bin_write_elt_ : elt Core.Std.Bin_prot.Unsafe_write_c.writer
          val bin_writer_elt : elt Core.Std.Bin_prot.Type_class.writer
          val elt_of_sexp : Sexplib.Sexp.t -> elt
          val sexp_of_elt : elt -> Sexplib.Sexp.t
          val t_of_sexp : Sexplib.Sexp.t -> t
          val sexp_of_t : t -> Sexplib.Sexp.t
          val bin_size_t : t Bin_prot.Size.sizer
          val bin_write_t : t Bin_prot.Map_to_safe.writer
          val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
          val bin_read_t : t Bin_prot.Read_ml.reader
          val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
          val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
          val bin_writer_t : t Bin_prot.Type_class.writer
          val bin_reader_t : t Bin_prot.Type_class.reader
          val bin_t : t Bin_prot.Type_class.t
          val get : t -> int -> elt
          val slice : t -> pos:int -> len:int -> t
          val iter : t -> f:(elt -> unit) -> unit
          val fold : t -> init:'-> f:('-> elt -> 'a) -> 'a
          val of_array : elt array -> t
          val to_array : t -> elt array
          val of_list : elt list -> t
          val to_list : t -> elt list
          val empty : t
          val zip_exn : A.t -> B.t -> t
          val unzip : t -> A.t * B.t
        end
  module Of_packed_array :
    functor (P : S->
      sig
        type t = Packed_array.Of_packed_array(P).t
        val length : t -> int
        val unsafe_get : t -> int -> P.t
        val unsafe_slice : t -> pos:int -> len:int -> t
        val bin_elt : P.t Core.Std.Bin_prot.Type_class.t
        val bin_read_elt : P.t Core.Std.Bin_prot.Read_ml.reader
        val bin_read_elt_ : P.t Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_read_elt__ :
          (int -> P.t) Core.Std.Bin_prot.Unsafe_read_c.reader
        val bin_reader_elt : P.t Core.Std.Bin_prot.Type_class.reader
        val bin_size_elt : P.t Core.Std.Bin_prot.Size.sizer
        val bin_write_elt : P.t Core.Std.Bin_prot.Write_ml.writer
        val bin_write_elt_ : P.t Core.Std.Bin_prot.Unsafe_write_c.writer
        val bin_writer_elt : P.t Core.Std.Bin_prot.Type_class.writer
        val elt_of_sexp : Sexplib.Sexp.t -> P.t
        val sexp_of_elt : P.t -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> t
        val sexp_of_t : t -> Sexplib.Sexp.t
        val bin_size_t : t Bin_prot.Size.sizer
        val bin_write_t : t Bin_prot.Map_to_safe.writer
        val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
        val bin_read_t : t Bin_prot.Read_ml.reader
        val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
        val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
        val bin_writer_t : t Bin_prot.Type_class.writer
        val bin_reader_t : t Bin_prot.Type_class.reader
        val bin_t : t Bin_prot.Type_class.t
        val get : t -> int -> P.t
        val slice : t -> pos:int -> len:int -> t
        val iter : t -> f:(P.t -> unit) -> unit
        val fold : t -> init:'-> f:('-> P.t -> 'a) -> 'a
        val of_array : P.t array -> t
        val to_array : t -> P.t array
        val of_list : P.t list -> t
        val to_list : t -> P.t list
        val empty : t
        val concat : t -> P.t
      end
  module Bool :
    sig
      type t = Packed_array.Bool.t
      val length : t -> int
      val unsafe_get : t -> int -> bool
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : bool Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : bool Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : bool Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> bool) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : bool Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : bool Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : bool Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : bool Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : bool Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> bool
      val sexp_of_elt : bool -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> bool
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(bool -> unit) -> unit
      val fold : t -> init:'-> f:('-> bool -> 'a) -> 'a
      val of_array : bool array -> t
      val to_array : t -> bool array
      val of_list : bool list -> t
      val to_list : t -> bool list
      val empty : t
    end
  module Char :
    sig
      type t = Packed_array.Char.t
      val length : t -> int
      val unsafe_get : t -> int -> char
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : char Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : char Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : char Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> char) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : char Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : char Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : char Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : char Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : char Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> char
      val sexp_of_elt : char -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> char
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(char -> unit) -> unit
      val fold : t -> init:'-> f:('-> char -> 'a) -> 'a
      val of_array : char array -> t
      val to_array : t -> char array
      val of_list : char list -> t
      val to_list : t -> char list
      val empty : t
    end
  module Int :
    sig
      type t = Packed_array.Int.t
      val length : t -> int
      val unsafe_get : t -> int -> int
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int
      val sexp_of_elt : int -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int -> unit) -> unit
      val fold : t -> init:'-> f:('-> int -> 'a) -> 'a
      val of_array : int array -> t
      val to_array : t -> int array
      val of_list : int list -> t
      val to_list : t -> int list
      val empty : t
    end
  module Int8_unsigned :
    sig
      type t = Packed_array.Int8_unsigned.t
      val length : t -> int
      val unsafe_get : t -> int -> int
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int
      val sexp_of_elt : int -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int -> unit) -> unit
      val fold : t -> init:'-> f:('-> int -> 'a) -> 'a
      val of_array : int array -> t
      val to_array : t -> int array
      val of_list : int list -> t
      val to_list : t -> int list
      val empty : t
    end
  module Int8 :
    sig
      type t = Packed_array.Int8.t
      val length : t -> int
      val unsafe_get : t -> int -> int
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int
      val sexp_of_elt : int -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int -> unit) -> unit
      val fold : t -> init:'-> f:('-> int -> 'a) -> 'a
      val of_array : int array -> t
      val to_array : t -> int array
      val of_list : int list -> t
      val to_list : t -> int list
      val empty : t
    end
  module Int16_unsigned :
    sig
      type t = Packed_array.Int16_unsigned.t
      val length : t -> int
      val unsafe_get : t -> int -> int
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int
      val sexp_of_elt : int -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int -> unit) -> unit
      val fold : t -> init:'-> f:('-> int -> 'a) -> 'a
      val of_array : int array -> t
      val to_array : t -> int array
      val of_list : int list -> t
      val to_list : t -> int list
      val empty : t
    end
  module Int16 :
    sig
      type t = Packed_array.Int16.t
      val length : t -> int
      val unsafe_get : t -> int -> int
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int
      val sexp_of_elt : int -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int -> unit) -> unit
      val fold : t -> init:'-> f:('-> int -> 'a) -> 'a
      val of_array : int array -> t
      val to_array : t -> int array
      val of_list : int list -> t
      val to_list : t -> int list
      val empty : t
    end
  module Int32 :
    sig
      type t = Packed_array.Int32.t
      val length : t -> int
      val unsafe_get : t -> int -> int32
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int32 Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int32 Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int32 Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int32) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int32 Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int32 Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int32 Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int32 Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int32 Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int32
      val sexp_of_elt : int32 -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int32
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int32 -> unit) -> unit
      val fold : t -> init:'-> f:('-> int32 -> 'a) -> 'a
      val of_array : int32 array -> t
      val to_array : t -> int32 array
      val of_list : int32 list -> t
      val to_list : t -> int32 list
      val empty : t
    end
  module Int64 :
    sig
      type t = Packed_array.Int64.t
      val length : t -> int
      val unsafe_get : t -> int -> int64
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : int64 Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : int64 Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : int64 Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> int64) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : int64 Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : int64 Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : int64 Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : int64 Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : int64 Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> int64
      val sexp_of_elt : int64 -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> int64
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(int64 -> unit) -> unit
      val fold : t -> init:'-> f:('-> int64 -> 'a) -> 'a
      val of_array : int64 array -> t
      val to_array : t -> int64 array
      val of_list : int64 list -> t
      val to_list : t -> int64 list
      val empty : t
    end
  module Float32 :
    sig
      type t = Packed_array.Float32.t
      val length : t -> int
      val unsafe_get : t -> int -> float
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : float Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : float Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : float Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> float) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : float Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : float Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : float Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : float Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : float Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> float
      val sexp_of_elt : float -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> float
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(float -> unit) -> unit
      val fold : t -> init:'-> f:('-> float -> 'a) -> 'a
      val of_array : float array -> t
      val to_array : t -> float array
      val of_list : float list -> t
      val to_list : t -> float list
      val empty : t
    end
  module Float :
    sig
      type t = Packed_array.Float.t
      val length : t -> int
      val unsafe_get : t -> int -> float
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : float Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : float Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : float Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> float) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : float Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : float Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : float Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : float Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : float Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> float
      val sexp_of_elt : float -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> float
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(float -> unit) -> unit
      val fold : t -> init:'-> f:('-> float -> 'a) -> 'a
      val of_array : float array -> t
      val to_array : t -> float array
      val of_list : float list -> t
      val to_list : t -> float list
      val empty : t
    end
  module String :
    sig
      type t = Packed_array.String.t
      val length : t -> int
      val unsafe_get : t -> int -> string
      val unsafe_slice : t -> pos:int -> len:int -> t
      val bin_elt : string Core.Std.Bin_prot.Type_class.t
      val bin_read_elt : string Core.Std.Bin_prot.Read_ml.reader
      val bin_read_elt_ : string Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_read_elt__ :
        (int -> string) Core.Std.Bin_prot.Unsafe_read_c.reader
      val bin_reader_elt : string Core.Std.Bin_prot.Type_class.reader
      val bin_size_elt : string Core.Std.Bin_prot.Size.sizer
      val bin_write_elt : string Core.Std.Bin_prot.Write_ml.writer
      val bin_write_elt_ : string Core.Std.Bin_prot.Unsafe_write_c.writer
      val bin_writer_elt : string Core.Std.Bin_prot.Type_class.writer
      val elt_of_sexp : Sexplib.Sexp.t -> string
      val sexp_of_elt : string -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Map_to_safe.writer
      val bin_write_t_ : t Bin_prot.Unsafe_write_c.writer
      val bin_read_t : t Bin_prot.Read_ml.reader
      val bin_read_t_ : t Bin_prot.Unsafe_read_c.reader
      val bin_read_t__ : (int -> t) Bin_prot.Unsafe_read_c.reader
      val bin_writer_t : t Bin_prot.Type_class.writer
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_t : t Bin_prot.Type_class.t
      val get : t -> int -> string
      val slice : t -> pos:int -> len:int -> t
      val iter : t -> f:(string -> unit) -> unit
      val fold : t -> init:'-> f:('-> string -> 'a) -> 'a
      val of_array : string array -> t
      val to_array : t -> string array
      val of_list : string list -> t
      val to_list : t -> string list
      val empty : t
    end
end