sig
  type t =
      (int, Bigarray.int16_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t
  exception Malformed_code
  val validate : UTF16.t -> unit
  val get : UTF16.t -> int -> UChar.t
  exception Out_of_range
  val init : int -> (int -> UChar.t) -> UTF16.t
  val length : UTF16.t -> int
  type index = int
  val nth : UTF16.t -> int -> UTF16.index
  val first : UTF16.t -> UTF16.index
  val last : UTF16.t -> UTF16.index
  val look : UTF16.t -> UTF16.index -> UChar.t
  val out_of_range : UTF16.t -> UTF16.index -> bool
  val compare_index : UTF16.t -> UTF16.index -> UTF16.index -> int
  val next : UTF16.t -> UTF16.index -> UTF16.index
  val prev : UTF16.t -> UTF16.index -> UTF16.index
  val move : UTF16.t -> UTF16.index -> int -> UTF16.index
  val iter : (UChar.t -> unit) -> UTF16.t -> unit
  val compare : UTF16.t -> UTF16.t -> int
  module Buf :
    sig
      type buf
      val create : int -> UTF16.Buf.buf
      val contents : UTF16.Buf.buf -> UTF16.t
      val clear : UTF16.Buf.buf -> unit
      val reset : UTF16.Buf.buf -> unit
      val add_char : UTF16.Buf.buf -> UChar.t -> unit
      val add_string : UTF16.Buf.buf -> UTF16.t -> unit
      val add_buffer : UTF16.Buf.buf -> UTF16.Buf.buf -> unit
    end
end