sig
  type 'a t
  val create : '-> 'Bogue.Var.t
  val get : 'Bogue.Var.t -> 'a
  val set : 'Bogue.Var.t -> '-> unit
  val with_protect : 'Bogue.Var.t -> ('-> 'b) -> 'b
  val protect_fn : 'Bogue.Var.t -> ('-> 'b) -> 'b
end