sig
  val all : unit -> string list
  val register : string -> unit
  module type S = sig type t val pp : Format.formatter -> t -> unit end
  module Register :
    functor
      (M : sig
             type t
             val module_name : string
             val to_string : t -> string
           end->
      sig val pp : Format.formatter -> M.t -> unit end
  module Register_pp :
    functor
      (M : sig
             type t
             val pp : Format.formatter -> t -> unit
             val module_name : string
           end->
      sig val pp : Format.formatter -> M.t -> unit end
end