sig
  type t
  val get : t -> int -> UChar.t
  val init : int -> (int -> UChar.t) -> t
  val length : t -> int
  type index
  val look : t -> index -> UChar.t
  val nth : t -> int -> index
  val first : t -> index
  val last : t -> index
  val next : t -> index -> index
  val prev : t -> index -> index
  val move : t -> index -> int -> index
  val out_of_range : t -> index -> bool
  val compare_index : t -> index -> index -> int
  val iter : (UChar.t -> unit) -> t -> unit
  val compare : t -> t -> int
  module Buf :
    sig
      type buf
      val create : int -> buf
      val contents : buf -> t
      val clear : buf -> unit
      val reset : buf -> unit
      val add_char : buf -> UChar.t -> unit
      val add_string : buf -> t -> unit
      val add_buffer : buf -> buf -> unit
    end
  type ur_text = text
  type ur_index = index
  val refer : ur_text -> ur_index -> ur_index -> t
  val excerpt : t -> ur_text
  val context : t -> ur_text * ur_index * ur_index
  val ur_index_of : t -> index -> ur_index
end