sig   type t   type rope = Zed_rope.t   exception Out_of_bounds   val empty : Zed_rope.t   val make : int -> CamomileLibrary.UChar.t -> Zed_rope.t   val init : int -> (int -> CamomileLibrary.UChar.t) -> Zed_rope.t   val rev_init : int -> (int -> CamomileLibrary.UChar.t) -> Zed_rope.t   val singleton : CamomileLibrary.UChar.t -> Zed_rope.t   val length : Zed_rope.t -> int   val is_empty : Zed_rope.t -> bool   val compare : Zed_rope.t -> Zed_rope.t -> int   val equal : Zed_rope.t -> Zed_rope.t -> bool   val of_string : string -> Zed_rope.t   val to_string : Zed_rope.t -> string   val get : Zed_rope.t -> int -> CamomileLibrary.UChar.t   val append : Zed_rope.t -> Zed_rope.t -> Zed_rope.t   val concat : Zed_rope.t -> Zed_rope.t list -> Zed_rope.t   val sub : Zed_rope.t -> int -> int -> Zed_rope.t   val break : Zed_rope.t -> int -> Zed_rope.t * Zed_rope.t   val before : Zed_rope.t -> int -> Zed_rope.t   val after : Zed_rope.t -> int -> Zed_rope.t   val insert : Zed_rope.t -> int -> Zed_rope.t -> Zed_rope.t   val remove : Zed_rope.t -> int -> int -> Zed_rope.t   val replace : Zed_rope.t -> int -> int -> Zed_rope.t -> Zed_rope.t   val lchop : Zed_rope.t -> Zed_rope.t   val rchop : Zed_rope.t -> Zed_rope.t   val iter : (CamomileLibrary.UChar.t -> unit) -> Zed_rope.t -> unit   val rev_iter : (CamomileLibrary.UChar.t -> unit) -> Zed_rope.t -> unit   val fold : (CamomileLibrary.UChar.t -> '-> 'a) -> Zed_rope.t -> '-> 'a   val rev_fold :     (CamomileLibrary.UChar.t -> '-> 'a) -> Zed_rope.t -> '-> 'a   val map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->     Zed_rope.t -> Zed_rope.t   val rev_map :     (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->     Zed_rope.t -> Zed_rope.t   val iter_leaf : (Zed_utf8.t -> unit) -> Zed_rope.t -> unit   val rev_iter_leaf : (Zed_utf8.t -> unit) -> Zed_rope.t -> unit   val fold_leaf : (Zed_utf8.t -> '-> 'a) -> Zed_rope.t -> '-> 'a   val rev_fold_leaf : (Zed_utf8.t -> '-> 'a) -> Zed_rope.t -> '-> 'a   module Zip :     sig       type t       val make_f : Zed_rope.rope -> int -> Zed_rope.Zip.t       val make_b : Zed_rope.rope -> int -> Zed_rope.Zip.t       val offset : Zed_rope.Zip.t -> int       val next : Zed_rope.Zip.t -> CamomileLibrary.UChar.t * Zed_rope.Zip.t       val prev : Zed_rope.Zip.t -> CamomileLibrary.UChar.t * Zed_rope.Zip.t       val move : int -> Zed_rope.Zip.t -> Zed_rope.Zip.t       val at_bos : Zed_rope.Zip.t -> bool       val at_eos : Zed_rope.Zip.t -> bool       val find_f :         (CamomileLibrary.UChar.t -> bool) -> Zed_rope.Zip.t -> Zed_rope.Zip.t       val find_b :         (CamomileLibrary.UChar.t -> bool) -> Zed_rope.Zip.t -> Zed_rope.Zip.t       val sub : Zed_rope.Zip.t -> int -> Zed_rope.rope       val slice : Zed_rope.Zip.t -> Zed_rope.Zip.t -> Zed_rope.rope     end   module Buffer :     sig       type t       val create : unit -> Zed_rope.Buffer.t       val add : Zed_rope.Buffer.t -> CamomileLibrary.UChar.t -> unit       val contents : Zed_rope.Buffer.t -> Zed_rope.rope       val reset : Zed_rope.Buffer.t -> unit     end   module Text :     sig       type t = rope       val get : t -> int -> CamomileLibrary.UChar.t       val init : int -> (int -> CamomileLibrary.UChar.t) -> t       val length : t -> int       type index = Zip.t       val look : t -> index -> CamomileLibrary.UChar.t       val nth : t -> int -> index       val next : t -> index -> index       val prev : t -> index -> index       val out_of_range : t -> index -> bool       val iter : (CamomileLibrary.UChar.t -> unit) -> t -> unit       val compare : t -> t -> int       val first : t -> index       val last : t -> index       val move : t -> index -> int -> index       val compare_index : t -> index -> index -> 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 -> CamomileLibrary.UChar.t -> unit           val add_string : buf -> t -> unit           val add_buffer : buf -> buf -> unit         end     end end