sig   type t = string   exception Invalid of string * string   exception Out_of_bounds   type check_result = Correct of int | Message of string   val check : Zed_utf8.t -> Zed_utf8.check_result   val validate : Zed_utf8.t -> int   val next_error : Zed_utf8.t -> int -> int * int * string   val singleton : CamomileLibrary.UChar.t -> Zed_utf8.t   val make : int -> CamomileLibrary.UChar.t -> Zed_utf8.t   val init : int -> (int -> CamomileLibrary.UChar.t) -> Zed_utf8.t   val rev_init : int -> (int -> CamomileLibrary.UChar.t) -> Zed_utf8.t   val length : Zed_utf8.t -> int   val compare : Zed_utf8.t -> Zed_utf8.t -> int   val get : Zed_utf8.t -> int -> CamomileLibrary.UChar.t   val sub : Zed_utf8.t -> int -> int -> Zed_utf8.t   val break : Zed_utf8.t -> int -> Zed_utf8.t * Zed_utf8.t   val before : Zed_utf8.t -> int -> Zed_utf8.t   val after : Zed_utf8.t -> int -> Zed_utf8.t   val insert : Zed_utf8.t -> int -> Zed_utf8.t -> Zed_utf8.t   val remove : Zed_utf8.t -> int -> int -> Zed_utf8.t   val replace : Zed_utf8.t -> int -> int -> Zed_utf8.t -> Zed_utf8.t   val rev : Zed_utf8.t -> Zed_utf8.t   val concat : Zed_utf8.t -> Zed_utf8.t list -> Zed_utf8.t   val rev_concat : Zed_utf8.t -> Zed_utf8.t list -> Zed_utf8.t   val explode : Zed_utf8.t -> CamomileLibrary.UChar.t list   val rev_explode : Zed_utf8.t -> CamomileLibrary.UChar.t list   val implode : CamomileLibrary.UChar.t list -> Zed_utf8.t   val rev_implode : CamomileLibrary.UChar.t list -> Zed_utf8.t   val iter : (CamomileLibrary.UChar.t -> unit) -> Zed_utf8.t -> unit   val rev_iter : (CamomileLibrary.UChar.t -> unit) -> Zed_utf8.t -> unit   val fold : (CamomileLibrary.UChar.t -> '-> 'a) -> Zed_utf8.t -> '-> 'a   val rev_fold :     (CamomileLibrary.UChar.t -> '-> 'a) -> Zed_utf8.t -> '-> 'a   val map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->     Zed_utf8.t -> Zed_utf8.t   val rev_map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->     Zed_utf8.t -> Zed_utf8.t   val map_concat :     (CamomileLibrary.UChar.t -> Zed_utf8.t) -> Zed_utf8.t -> Zed_utf8.t   val rev_map_concat :     (CamomileLibrary.UChar.t -> Zed_utf8.t) -> Zed_utf8.t -> Zed_utf8.t   val filter : (CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> Zed_utf8.t   val rev_filter :     (CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> Zed_utf8.t   val filter_map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t option) ->     Zed_utf8.t -> Zed_utf8.t   val rev_filter_map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t option) ->     Zed_utf8.t -> Zed_utf8.t   val filter_map_concat :     (CamomileLibrary.UChar.t -> Zed_utf8.t option) ->     Zed_utf8.t -> Zed_utf8.t   val rev_filter_map_concat :     (CamomileLibrary.UChar.t -> Zed_utf8.t option) ->     Zed_utf8.t -> Zed_utf8.t   val for_all : (CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> bool   val exists : (CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> bool   val count : (CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> int   val contains : Zed_utf8.t -> Zed_utf8.t -> bool   val starts_with : Zed_utf8.t -> Zed_utf8.t -> bool   val ends_with : Zed_utf8.t -> Zed_utf8.t -> bool   val strip :     ?predicate:(CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> Zed_utf8.t   val lstrip :     ?predicate:(CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> Zed_utf8.t   val rstrip :     ?predicate:(CamomileLibrary.UChar.t -> bool) -> Zed_utf8.t -> Zed_utf8.t   val lchop : Zed_utf8.t -> Zed_utf8.t   val rchop : Zed_utf8.t -> Zed_utf8.t   val add : Buffer.t -> CamomileLibrary.UChar.t -> unit   val escaped_char : CamomileLibrary.UChar.t -> Zed_utf8.t   val add_escaped_char : Buffer.t -> CamomileLibrary.UChar.t -> unit   val escaped : Zed_utf8.t -> Zed_utf8.t   val add_escaped : Buffer.t -> Zed_utf8.t -> unit   val escaped_string :     CamomileLibraryDyn.Camomile.CharEncoding.t -> string -> Zed_utf8.t   val add_escaped_string :     Buffer.t -> CamomileLibraryDyn.Camomile.CharEncoding.t -> string -> unit   val next : Zed_utf8.t -> int -> int   val prev : Zed_utf8.t -> int -> int   val extract : Zed_utf8.t -> int -> CamomileLibrary.UChar.t   val extract_next : Zed_utf8.t -> int -> CamomileLibrary.UChar.t * int   val extract_prev : Zed_utf8.t -> int -> CamomileLibrary.UChar.t * int   val unsafe_next : Zed_utf8.t -> int -> int   val unsafe_prev : Zed_utf8.t -> int -> int   val unsafe_extract : Zed_utf8.t -> int -> CamomileLibrary.UChar.t   val unsafe_extract_next :     Zed_utf8.t -> int -> CamomileLibrary.UChar.t * int   val unsafe_extract_prev :     Zed_utf8.t -> int -> CamomileLibrary.UChar.t * int end