sig
  type t
  val create : unit -> ('a -> As_univ.t) * (As_univ.t -> 'a option)
end