sig
  type uchar = int
  val is_scalar_value : int -> bool
  type form = [ `NFC | `NFD | `NFKC | `NFKD ]
  type t
  val create : [< Uunf.form ] -> Uunf.t
  val form : Uunf.t -> Uunf.form
  val add :
    Uunf.t ->
    [ `Await | `End | `Uchar of Uunf.uchar ] ->
    [ `Await | `Uchar of Uunf.uchar ]
  val reset : Uunf.t -> unit
  val copy : Uunf.t -> Uunf.t
  val unicode_version : string
  val ccc : Uunf.uchar -> int
  val decomp : Uunf.uchar -> int array
  val d_uchar : int -> Uunf.uchar
  val d_compatibility : int -> bool
  val composite : Uunf.uchar -> Uunf.uchar -> Uunf.uchar option
end