sig
  type 'a uref = 'a BatUref.uref
  type 'a t = 'a uref
  val uref : 'a -> 'a uref
  val uget : 'a uref -> 'a
  val uset : 'a uref -> 'a -> unit
  val unite : ?sel:('a -> 'a -> 'a) -> 'a uref -> 'a uref -> unit
  val equal : 'a uref -> 'a uref -> bool
  val print : ('a, 'b) BatIO.printer -> ('a uref, 'b) BatIO.printer
end