sig
  type xstring
  type t = XString.xstring
  val get : XString.xstring -> int -> UChar.t
  val set : XString.xstring -> int -> UChar.t -> unit
  val length : XString.xstring -> int
  val init : int -> (int -> UChar.t) -> XString.xstring
  type index
  val look : XString.xstring -> XString.index -> UChar.t
  val nth : XString.xstring -> int -> XString.index
  val first : XString.xstring -> XString.index
  val last : XString.xstring -> XString.index
  val out_of_range : XString.xstring -> XString.index -> bool
  val next : XString.xstring -> XString.index -> XString.index
  val prev : XString.xstring -> XString.index -> XString.index
  val move : XString.xstring -> XString.index -> int -> XString.index
  val compare_index :
    XString.xstring -> XString.index -> XString.index -> int
  val make : ?bufsize:int -> int -> UChar.t -> XString.xstring
  val clear : XString.xstring -> unit
  val reset : XString.xstring -> unit
  val copy : XString.xstring -> XString.xstring
  val sub : XString.xstring -> int -> int -> XString.xstring
  val add_char : XString.xstring -> UChar.t -> unit
  val add_text : XString.xstring -> 'UText.text -> unit
  val add_xstring : XString.xstring -> XString.xstring -> unit
  val shrink : XString.xstring -> int -> unit
  val append : XString.xstring -> XString.xstring -> XString.xstring
  val utext_of : XString.xstring -> UText.t
  val ustring_of : XString.xstring -> UText.ustring
  val iter : (UChar.t -> unit) -> XString.xstring -> unit
  val compare : XString.t -> XString.t -> int
  module Buf :
    sig
      type buf
      val create : int -> XString.Buf.buf
      val contents : XString.Buf.buf -> XString.t
      val length : XString.Buf.buf -> int
      val clear : XString.Buf.buf -> unit
      val reset : XString.Buf.buf -> unit
      val add_char : XString.Buf.buf -> UChar.t -> unit
      val add_string : XString.Buf.buf -> XString.t -> unit
      val add_buffer : XString.Buf.buf -> XString.Buf.buf -> unit
    end
end