sig
  type key
  type 'a info
  type t
  val create : int -> Type.Heterogeneous_table.t
  val add :
    Type.Heterogeneous_table.t ->
    Type.Heterogeneous_table.key ->
    'Type.ty -> 'Type.Heterogeneous_table.info -> unit
  exception Unbound_value of string
  exception Incompatible_type of string
  val find :
    Type.Heterogeneous_table.t ->
    Type.Heterogeneous_table.key ->
    'Type.ty -> 'Type.Heterogeneous_table.info
  val iter :
    (Type.Heterogeneous_table.key ->
     'Type.ty -> 'Type.Heterogeneous_table.info -> unit) ->
    Type.Heterogeneous_table.t -> unit
  val fold :
    (Type.Heterogeneous_table.key ->
     'Type.ty -> 'Type.Heterogeneous_table.info -> '-> 'b) ->
    Type.Heterogeneous_table.t -> '-> 'b
end