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