functor
  (Outer : sig
             type t
             val to_string : Tools.t -> string
             val is_valid : Tools.t -> bool
             val repl_tag : string
           end->
  sig
    type t = private Outer.t
    type outer_t = Outer.t
    val to_string : t -> string
    val print : Batteries.Format.formatter -> t -> unit
    val o : outer_t -> t
  end