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