sig
  type id = ID.t
  type 'a t = private { id : MetaVar.id; mutable deref : 'a option; }
  val make : name:string -> 'MetaVar.t
  val id : 'MetaVar.t -> MetaVar.id
  val equal : 'MetaVar.t -> 'MetaVar.t -> bool
  val deref : 'MetaVar.t -> 'a option
  val can_bind : 'MetaVar.t -> bool
  val bound : 'MetaVar.t -> bool
  val bind : var:'MetaVar.t -> '-> unit
  val rebind : var:'MetaVar.t -> '-> unit
  val update : f:('-> 'b) -> 'MetaVar.t -> 'MetaVar.t
  val print : Format.formatter -> 'MetaVar.t -> unit
  val to_string : 'MetaVar.t -> string
end