sig
  type level = string
  val registered : (Trace.level * string) list Pervasives.ref
  val reset : unit -> unit
  val add : Trace.level -> unit
  val is_active : Trace.level -> bool
  val remove : Trace.level -> unit
  val get : unit -> Trace.level list
  val indent : int Pervasives.ref
  val call : Trace.level -> string -> '-> 'Pretty.printer -> unit
  val exit : Trace.level -> string -> '-> 'Pretty.printer -> unit
  val fail : Trace.level -> string -> exn -> unit
  val msg : Trace.level -> string -> '-> 'Pretty.printer -> unit
  val func :
    Trace.level ->
    string ->
    'Pretty.printer -> 'Pretty.printer -> ('-> 'b) -> '-> 'b
  val func2 :
    Trace.level ->
    string ->
    'Pretty.printer ->
    'Pretty.printer ->
    'Pretty.printer -> ('-> '-> 'c) -> '-> '-> 'c
  val proc :
    Trace.level -> string -> 'Pretty.printer -> ('-> unit) -> '-> unit
end