sig
  type 'a t = 'Pervasives.ref = { mutable contents : 'a; }
  val create : '-> 'Ref.t
  val ( ! ) : 'Ref.t -> 'a
  val ( := ) : 'Ref.t -> '-> unit
  val equal : 'Ref.t -> 'Ref.t -> bool
  val swap : 'Ref.t -> 'Ref.t -> unit
  val replace : 'Ref.t -> ('-> 'a) -> unit
  val with_set : 'Ref.t -> '-> (unit -> 'b) -> 'b
end