sig
  type 'a t = 'Stdlib.ref
  external ref : '-> 'Stdlib.ref = "%makemutable"
  external ( ! ) : 'Stdlib.ref -> 'a = "%field0"
  external ( := ) : 'Stdlib.ref -> '-> unit = "%setfield0"
  external set : 'Stdlib.ref -> '-> unit = "%setfield0"
  external get : 'Stdlib.ref -> 'a = "%field0"
  val copy : 'Stdlib.ref -> 'Stdlib.ref
  val pre : 'Stdlib.ref -> ('-> 'a) -> 'a
  val post : 'Stdlib.ref -> ('-> 'a) -> 'a
  val swap : 'Stdlib.ref -> 'Stdlib.ref -> unit
  val post_incr : int Stdlib.ref -> int
  val post_decr : int Stdlib.ref -> int
  val pre_incr : int Stdlib.ref -> int
  val pre_decr : int Stdlib.ref -> int
  val protect : 'Stdlib.ref -> '-> (unit -> 'b) -> 'b
  val toggle : bool Stdlib.ref -> unit
  val oset : 'a option Stdlib.ref -> '-> unit
  val oget_exn : 'a option Stdlib.ref -> 'a
  val print :
    ('BatInnerIO.output -> '-> unit) ->
    'BatInnerIO.output -> 'BatRef.t -> unit
  val compare : 'BatOrd.comp -> 'Stdlib.ref BatOrd.comp
  val ord : 'BatOrd.ord -> 'Stdlib.ref BatOrd.ord
  val eq : 'BatOrd.eq -> 'Stdlib.ref BatOrd.eq
end