sig   module type Repo =     sig       type repo       type branch       val init :         ?root:string -> ?bare:bool -> unit -> Ezirmin.Repo.repo Lwt.t       val master : Ezirmin.Repo.repo -> Ezirmin.Repo.branch Lwt.t       val get_branch :         Ezirmin.Repo.repo -> branch_name:string -> Ezirmin.Repo.branch Lwt.t       val get_branch_name : Ezirmin.Repo.branch -> string option Lwt.t       val clone_force :         Ezirmin.Repo.branch -> string -> Ezirmin.Repo.branch Lwt.t       val merge :         Ezirmin.Repo.branch -> into:Ezirmin.Repo.branch -> unit Lwt.t       val predecessors :         Ezirmin.Repo.repo ->         Ezirmin.Repo.branch -> Ezirmin.Repo.branch list Lwt.t       val update_branch :         Ezirmin.Repo.branch -> set:Ezirmin.Repo.branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch :             Ezirmin.Repo.branch -> Ezirmin.Repo.Commit.t option Lwt.t           val branch_of_commit :             Ezirmin.Repo.repo ->             Ezirmin.Repo.Commit.t -> Ezirmin.Repo.branch Lwt.t           val predecessors :             Ezirmin.Repo.Commit.t -> Ezirmin.Repo.Commit.t list           val compare_and_update_branch :             Ezirmin.Repo.branch ->             expect:Ezirmin.Repo.Commit.t option ->             update:Ezirmin.Repo.Commit.t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> Ezirmin.Repo.Sync.remote           val pull :             Ezirmin.Repo.Sync.remote ->             Ezirmin.Repo.branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push :             Ezirmin.Repo.Sync.remote ->             Ezirmin.Repo.branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S     end   module type Blob_log =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type elt       val append :         ?message:string ->         branch -> path:string list -> Ezirmin.Blob_log.elt -> unit Lwt.t       val read_all :         branch -> path:string list -> Ezirmin.Blob_log.elt list Lwt.t       val watch :         branch ->         path:string list ->         (Ezirmin.Blob_log.elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t     end   module type Counter =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       val inc :         ?message:string ->         ?by:int -> branch -> path:string list -> unit Lwt.t       val dec :         ?message:string ->         ?by:int -> branch -> path:string list -> unit Lwt.t       val read : branch -> path:string list -> int Lwt.t       val watch :         branch ->         path:string list -> (int -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t     end   module type Log =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type elt       type cursor       val append :         ?message:string ->         branch -> path:string list -> Ezirmin.Log.elt -> unit Lwt.t       val get_cursor :         branch -> path:string list -> Ezirmin.Log.cursor option Lwt.t       val read :         Ezirmin.Log.cursor ->         num_items:int ->         (Ezirmin.Log.elt list * Ezirmin.Log.cursor option) Lwt.t       val read_all : branch -> path:string list -> Ezirmin.Log.elt list Lwt.t       val at_time : Ezirmin.Log.cursor -> Ptime.t option       val is_earlier :         Ezirmin.Log.cursor -> than:Ezirmin.Log.cursor -> bool option       val is_later :         Ezirmin.Log.cursor -> than:Ezirmin.Log.cursor -> bool option       val watch :         branch ->         path:string list ->         (Ezirmin.Log.elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t     end   module type Lww_register =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type value       val read :         branch -> path:string list -> Ezirmin.Lww_register.value option Lwt.t       val write :         ?message:string ->         branch ->         path:string list -> Ezirmin.Lww_register.value -> unit Lwt.t       val watch :         branch ->         path:string list ->         ([ `Added of Ezirmin.Lww_register.value          | `Removed of Ezirmin.Lww_register.value          | `Updated of              Ezirmin.Lww_register.value * Ezirmin.Lww_register.value ] ->          unit Lwt.t) ->         (unit -> unit Lwt.t) Lwt.t     end   module type Queue =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type elt       val create :         ?message:string -> branch -> path:string list -> unit Lwt.t       val length : branch -> path:string list -> int Lwt.t       val is_empty : branch -> path:string list -> bool Lwt.t       val push :         ?message:string ->         branch -> path:string list -> Ezirmin.Queue.elt -> unit Lwt.t       val pop_exn :         ?message:string ->         branch -> path:string list -> Ezirmin.Queue.elt Lwt.t       val pop :         ?message:string ->         branch -> path:string list -> Ezirmin.Queue.elt option Lwt.t       val to_list :         branch -> path:string list -> Ezirmin.Queue.elt list Lwt.t       type cursor       val get_cursor :         branch -> path:string list -> Ezirmin.Queue.cursor option Lwt.t       val next_exn :         Ezirmin.Queue.cursor ->         (Ezirmin.Queue.elt * Ezirmin.Queue.cursor) Lwt.t       val next :         Ezirmin.Queue.cursor ->         (Ezirmin.Queue.elt * Ezirmin.Queue.cursor) option Lwt.t       val iter :         branch ->         path:string list -> f:(Ezirmin.Queue.elt -> unit) -> unit Lwt.t       val watch :         branch ->         path:string list ->         (unit -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t     end   module type Rope_content =     sig       type atom       type t       val equal : t Tc.equal       val compare : t Tc.compare       val hash : t Tc.hash       val to_json : t Tc.to_json       val of_json : t Tc.of_json       val size_of : t Tc.size_of       val write : t Tc.writer       val read : t Tc.reader       module Path :         sig           type t = string list           val equal : t Tc.equal           val compare : t Tc.compare           val hash : t Tc.hash           val to_json : t Tc.to_json           val of_json : t Tc.of_json           val size_of : t Tc.size_of           val write : t Tc.writer           val read : t Tc.reader           val to_hum : t -> string           val of_hum : string -> t           type step = string           val empty : t           val create : step list -> t           val is_empty : t -> bool           val cons : step -> t -> t           val rcons : t -> step -> t           val decons : t -> (step * t) option           val rdecons : t -> (t * step) option           val map : t -> (step -> 'a) -> 'a list           module Step :             sig               type t = step               val equal : t Tc.equal               val compare : t Tc.compare               val hash : t Tc.hash               val to_json : t Tc.to_json               val of_json : t Tc.of_json               val size_of : t Tc.size_of               val write : t Tc.writer               val read : t Tc.reader               val to_hum : t -> string               val of_hum : string -> t             end         end       val merge : Path.t -> t option Irmin.Merge.t       val empty : t       val length : t -> int       val set : t -> int -> Ezirmin.Rope_content.atom -> t       val get : t -> int -> Ezirmin.Rope_content.atom       val insert : t -> int -> t -> t       val delete : t -> int -> int -> t       val append : t -> t -> t       val concat : t -> t list -> t       val split : t -> int -> t * t     end   module type Rope =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type t       type atom       type content       val create : unit -> Ezirmin.Rope.t Lwt.t       val make : Ezirmin.Rope.content -> Ezirmin.Rope.t Lwt.t       val flush : Ezirmin.Rope.t -> Ezirmin.Rope.content Lwt.t       val is_empty : Ezirmin.Rope.t -> bool Lwt.t       val length : Ezirmin.Rope.t -> int Lwt.t       val set :         Ezirmin.Rope.t ->         pos:int -> Ezirmin.Rope.atom -> Ezirmin.Rope.t Lwt.t       val get : Ezirmin.Rope.t -> pos:int -> Ezirmin.Rope.atom Lwt.t       val insert :         Ezirmin.Rope.t ->         pos:int -> Ezirmin.Rope.content -> Ezirmin.Rope.t Lwt.t       val delete :         Ezirmin.Rope.t -> pos:int -> len:int -> Ezirmin.Rope.t Lwt.t       val append : Ezirmin.Rope.t -> Ezirmin.Rope.t -> Ezirmin.Rope.t Lwt.t       val concat :         sep:Ezirmin.Rope.t -> Ezirmin.Rope.t list -> Ezirmin.Rope.t Lwt.t       val split :         Ezirmin.Rope.t -> pos:int -> (Ezirmin.Rope.t * Ezirmin.Rope.t) Lwt.t       val write :         ?message:string ->         branch -> path:string list -> Ezirmin.Rope.t -> unit Lwt.t       val read : branch -> path:string list -> Ezirmin.Rope.t option Lwt.t     end   module type Rope_string =     sig       type repo       type branch       val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t       val master : repo -> branch Lwt.t       val get_branch : repo -> branch_name:string -> branch Lwt.t       val get_branch_name : branch -> string option Lwt.t       val clone_force : branch -> string -> branch Lwt.t       val merge : branch -> into:branch -> unit Lwt.t       val predecessors : repo -> branch -> branch list Lwt.t       val update_branch : branch -> set:branch -> unit Lwt.t       module Commit :         sig           type t           val commit_of_branch : branch -> t option Lwt.t           val branch_of_commit : repo -> t -> branch Lwt.t           val predecessors : t -> t list           val compare_and_update_branch :             branch -> expect:t option -> update:t option -> bool Lwt.t         end       val install_listener : unit -> unit       module Sync :         sig           type remote           val remote_uri : string -> remote           val pull :             remote ->             branch ->             [ `Merge | `Update ] ->             [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t           val push : remote -> branch -> [ `Error | `Ok ] Lwt.t         end       module Store : Irmin.S       type t       type atom = char       type content = string       val create : unit -> t Lwt.t       val make : content -> t Lwt.t       val flush : t -> content Lwt.t       val is_empty : t -> bool Lwt.t       val length : t -> int Lwt.t       val set : t -> pos:int -> atom -> t Lwt.t       val get : t -> pos:int -> atom Lwt.t       val insert : t -> pos:int -> content -> t Lwt.t       val delete : t -> pos:int -> len:int -> t Lwt.t       val append : t -> t -> t Lwt.t       val concat : sep:t -> t list -> t Lwt.t       val split : t -> pos:int -> (t * t) Lwt.t       val write :         ?message:string -> branch -> path:string list -> t -> unit Lwt.t       val read : branch -> path:string list -> t option Lwt.t     end   module FS_blob_log :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         val append :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val read_all : branch -> path:string list -> elt list Lwt.t         val watch :           branch ->           path:string list ->           (elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module FS_counter : Counter   module FS_log :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         type cursor         val append :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val get_cursor : branch -> path:string list -> cursor option Lwt.t         val read :           cursor -> num_items:int -> (elt list * cursor option) Lwt.t         val read_all : branch -> path:string list -> elt list Lwt.t         val at_time : cursor -> Ptime.t option         val is_earlier : cursor -> than:cursor -> bool option         val is_later : cursor -> than:cursor -> bool option         val watch :           branch ->           path:string list ->           (elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module FS_lww_register :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type value = V.t         val read : branch -> path:string list -> value option Lwt.t         val write :           ?message:string ->           branch -> path:string list -> value -> unit Lwt.t         val watch :           branch ->           path:string list ->           ([ `Added of value | `Removed of value | `Updated of value * value ] ->            unit Lwt.t) ->           (unit -> unit Lwt.t) Lwt.t       end   module FS_queue :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         val create :           ?message:string -> branch -> path:string list -> unit Lwt.t         val length : branch -> path:string list -> int Lwt.t         val is_empty : branch -> path:string list -> bool Lwt.t         val push :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val pop_exn :           ?message:string -> branch -> path:string list -> elt Lwt.t         val pop :           ?message:string -> branch -> path:string list -> elt option Lwt.t         val to_list : branch -> path:string list -> elt list Lwt.t         type cursor         val get_cursor : branch -> path:string list -> cursor option Lwt.t         val next_exn : cursor -> (elt * cursor) Lwt.t         val next : cursor -> (elt * cursor) option Lwt.t         val iter :           branch -> path:string list -> f:(elt -> unit) -> unit Lwt.t         val watch :           branch ->           path:string list ->           (unit -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module FS_rope :     functor (C : Rope_content->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type t         type atom = C.atom         type content = C.t         val create : unit -> t Lwt.t         val make : content -> t Lwt.t         val flush : t -> content Lwt.t         val is_empty : t -> bool Lwt.t         val length : t -> int Lwt.t         val set : t -> pos:int -> atom -> t Lwt.t         val get : t -> pos:int -> atom Lwt.t         val insert : t -> pos:int -> content -> t Lwt.t         val delete : t -> pos:int -> len:int -> t Lwt.t         val append : t -> t -> t Lwt.t         val concat : sep:t -> t list -> t Lwt.t         val split : t -> pos:int -> (t * t) Lwt.t         val write :           ?message:string -> branch -> path:string list -> t -> unit Lwt.t         val read : branch -> path:string list -> t option Lwt.t       end   module FS_rope_string : Rope_string   module Memory_blob_log :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         val append :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val read_all : branch -> path:string list -> elt list Lwt.t         val watch :           branch ->           path:string list ->           (elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module Memory_counter : Counter   module Memory_log :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         type cursor         val append :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val get_cursor : branch -> path:string list -> cursor option Lwt.t         val read :           cursor -> num_items:int -> (elt list * cursor option) Lwt.t         val read_all : branch -> path:string list -> elt list Lwt.t         val at_time : cursor -> Ptime.t option         val is_earlier : cursor -> than:cursor -> bool option         val is_later : cursor -> than:cursor -> bool option         val watch :           branch ->           path:string list ->           (elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module Memory_lww_register :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type value = V.t         val read : branch -> path:string list -> value option Lwt.t         val write :           ?message:string ->           branch -> path:string list -> value -> unit Lwt.t         val watch :           branch ->           path:string list ->           ([ `Added of value | `Removed of value | `Updated of value * value ] ->            unit Lwt.t) ->           (unit -> unit Lwt.t) Lwt.t       end   module Memory_queue :     functor (V : Tc.S0->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type elt = V.t         val create :           ?message:string -> branch -> path:string list -> unit Lwt.t         val length : branch -> path:string list -> int Lwt.t         val is_empty : branch -> path:string list -> bool Lwt.t         val push :           ?message:string -> branch -> path:string list -> elt -> unit Lwt.t         val pop_exn :           ?message:string -> branch -> path:string list -> elt Lwt.t         val pop :           ?message:string -> branch -> path:string list -> elt option Lwt.t         val to_list : branch -> path:string list -> elt list Lwt.t         type cursor         val get_cursor : branch -> path:string list -> cursor option Lwt.t         val next_exn : cursor -> (elt * cursor) Lwt.t         val next : cursor -> (elt * cursor) option Lwt.t         val iter :           branch -> path:string list -> f:(elt -> unit) -> unit Lwt.t         val watch :           branch ->           path:string list ->           (unit -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t       end   module Memory_rope :     functor (C : Rope_content->       sig         type repo         type branch         val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t         val master : repo -> branch Lwt.t         val get_branch : repo -> branch_name:string -> branch Lwt.t         val get_branch_name : branch -> string option Lwt.t         val clone_force : branch -> string -> branch Lwt.t         val merge : branch -> into:branch -> unit Lwt.t         val predecessors : repo -> branch -> branch list Lwt.t         val update_branch : branch -> set:branch -> unit Lwt.t         module Commit :           sig             type t             val commit_of_branch : branch -> t option Lwt.t             val branch_of_commit : repo -> t -> branch Lwt.t             val predecessors : t -> t list             val compare_and_update_branch :               branch -> expect:t option -> update:t option -> bool Lwt.t           end         val install_listener : unit -> unit         module Sync :           sig             type remote             val remote_uri : string -> remote             val pull :               remote ->               branch ->               [ `Merge | `Update ] ->               [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t             val push : remote -> branch -> [ `Error | `Ok ] Lwt.t           end         module Store : Irmin.S         type t         type atom = C.atom         type content = C.t         val create : unit -> t Lwt.t         val make : content -> t Lwt.t         val flush : t -> content Lwt.t         val is_empty : t -> bool Lwt.t         val length : t -> int Lwt.t         val set : t -> pos:int -> atom -> t Lwt.t         val get : t -> pos:int -> atom Lwt.t         val insert : t -> pos:int -> content -> t Lwt.t         val delete : t -> pos:int -> len:int -> t Lwt.t         val append : t -> t -> t Lwt.t         val concat : sep:t -> t list -> t Lwt.t         val split : t -> pos:int -> (t * t) Lwt.t         val write :           ?message:string -> branch -> path:string list -> t -> unit Lwt.t         val read : branch -> path:string list -> t option Lwt.t       end   module Memory_rope_string : Rope_string end