functor (Info : sig type 'a t end->
  sig
    type key = string
    type 'a info = 'Info.t
    type t
    val create : int -> t
    val add : t -> key -> 'a ty -> 'a info -> unit
    exception Unbound_value of string
    exception Incompatible_type of string
    val find : t -> key -> 'a ty -> 'a info
  end