sig
  module type S =
    sig
      type base
      type t
      val base : t -> base
      val pos : t -> int
      val length : t -> int
      val create : ?pos:int -> ?len:int -> base -> t
      val blit_to_string : t -> dst:string -> dst_pos:int -> unit
      val blit_to_bigstring : t -> dst:Bigstring.t -> dst_pos:int -> unit
      val blit_from_string :
        t -> src:string -> src_pos:int -> len:int -> unit
      val blit_from_bigstring :
        t -> src:Bigstring.t -> src_pos:int -> len:int -> unit
      val concat : t list -> t
      val concat_string : t list -> string
      val concat_bigstring : t list -> Bigstring.t
      val of_bigstring : Bigstring.t -> t
      val of_string : string -> t
      val to_bigstring : t -> Bigstring.t
      val to_string : t -> string
      val drop_prefix : t -> int -> t
      val drop_suffix : t -> int -> t
      val prefix : t -> int -> t
      val suffix : t -> int -> t
    end
  val ounit_tests : unit -> OUnit.test
end