sig
  val register :
    print:(Stdlib.Format.formatter -> 'a -> unit) ->
    name:string -> init:'a -> 'a Debug.stat
  val mod0 : 'a Debug.stat -> ('a -> 'a) -> unit
  val mod1 : 'a Debug.stat -> ('a -> 'b -> 'a) -> 'b -> unit
  val mod2 : 'a Debug.stat -> ('a -> 'b -> 'c -> 'a) -> 'b -> 'c -> unit
  val register_int : name:string -> init:int -> int Debug.stat
  val incr : int Debug.stat -> unit
  val decr : int Debug.stat -> unit
  val record_timing : string -> (unit -> 'a) -> 'a
  val add_timing : string -> float -> unit
  val get_timings : unit -> (string, float * int) Stdlib.Hashtbl.t
end