sig
  type 'a ref
  val ref : '-> 'STM.ref
  exception Retry
  exception Abort
  exception Cancelled
  val run :
    ?retries:int ->
    (('STM.ref -> 'a) -> ('STM.ref -> '-> unit) -> 'b) -> 'b
  val run_read_only : ?retries:int -> (('STM.ref -> 'a) -> 'b) -> 'b
end