sig
  type t
  val empty : unit -> BatSubstring.t
  val to_string : BatSubstring.t -> string
  val of_string : string -> BatSubstring.t
  val make : int -> char -> BatSubstring.t
  val create : int -> BatSubstring.t
  val of_input : BatIO.input -> BatSubstring.t
  val substring : string -> int -> int -> BatSubstring.t
  val extract : string -> int -> int option -> BatSubstring.t
  val all : string -> BatSubstring.t
  val base : BatSubstring.t -> string * int * int
  val is_empty : BatSubstring.t -> bool
  val getc : BatSubstring.t -> (char * BatSubstring.t) option
  val first : BatSubstring.t -> char option
  val triml : int -> BatSubstring.t -> BatSubstring.t
  val trimr : int -> BatSubstring.t -> BatSubstring.t
  val get : int -> BatSubstring.t -> char
  val size : BatSubstring.t -> int
  val slice : BatSubstring.t -> int -> int option -> BatSubstring.t
  val concat : BatSubstring.t list -> string
  val explode : BatSubstring.t -> char list
  val is_prefix : string -> BatSubstring.t -> bool
  val compare : BatSubstring.t -> BatSubstring.t -> int
  val dropl : (char -> bool) -> BatSubstring.t -> BatSubstring.t
  val dropr : (char -> bool) -> BatSubstring.t -> BatSubstring.t
  val takel : (char -> bool) -> BatSubstring.t -> BatSubstring.t
  val taker : (char -> bool) -> BatSubstring.t -> BatSubstring.t
  val splitl :
    (char -> bool) -> BatSubstring.t -> BatSubstring.t * BatSubstring.t
  val splitr :
    (char -> bool) -> BatSubstring.t -> BatSubstring.t * BatSubstring.t
  val split_at : int -> BatSubstring.t -> BatSubstring.t * BatSubstring.t
  val span : BatSubstring.t -> BatSubstring.t -> BatSubstring.t
  val translate : (char -> char) -> BatSubstring.t -> string
  val tokens : (char -> bool) -> BatSubstring.t -> BatSubstring.t list
  val fields : (char -> bool) -> BatSubstring.t -> BatSubstring.t list
  val fold_left : ('-> char -> 'a) -> '-> BatSubstring.t -> 'a
  val fold_right : (char -> '-> 'a) -> BatSubstring.t -> '-> 'a
  val iter : (char -> unit) -> BatSubstring.t -> unit
  val trim : BatSubstring.t -> BatSubstring.t
  val split_on_char : char -> BatSubstring.t -> BatSubstring.t list
  val split_on_pipe : BatSubstring.t -> BatSubstring.t list
  val split_on_dot : BatSubstring.t -> BatSubstring.t list
  val split_on_comma : BatSubstring.t -> BatSubstring.t list
  val split_on_slash : BatSubstring.t -> BatSubstring.t list
end