sig
  type 'a poly = 'a ref
  val instantiate : 'a t -> 'a poly t
  val is_instance_of : 'a t -> bool
  val get_instance : 'a poly t -> 'a t
end