functor (Text : UnicodeString.Type->
  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.t
    type ur_index = Text.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