sig
  val version : string
  module Infix :
    sig
      val ( ++ ) : int -> int -> int
      val ( -- ) : int -> int -> int
      val ( +| ) : int array -> int array -> int array
      val ( -| ) : int array -> int array -> int array
    end
  val mkdirs : ?perm:Unix.file_perm -> string -> unit
  val split : ('-> bool) -> 'a list -> 'a list * 'a list
  val split_after : int -> 'a list -> 'a list * 'a list
  val open_both : string -> string -> Stdlib.in_channel * Stdlib.out_channel
  val output_strings :
    string list -> (string * string) list -> Stdlib.out_channel -> unit
  val output_bytes : int array -> string -> unit
  type counts = { mutable visited : int; mutable total : int; }
  val make : unit -> Report_utils.counts
  val update : Report_utils.counts -> bool -> unit
  val add : Report_utils.counts -> Report_utils.counts -> Report_utils.counts
  val sum : Report_utils.counts list -> Report_utils.counts
end