sig
  val with_current_loc : Cil_types.location -> ('a -> 'b) -> 'a -> 'b
  type 'a value
  val create : ?default:'a -> string -> 'a Wp.Context.value
  val defined : 'a Wp.Context.value -> bool
  val get : 'a Wp.Context.value -> 'a
  val set : 'a Wp.Context.value -> 'a -> unit
  val update : 'a Wp.Context.value -> ('a -> 'a) -> unit
  val bind : 'a Wp.Context.value -> 'a -> ('b -> 'c) -> 'b -> 'c
  val free : 'a Wp.Context.value -> ('b -> 'c) -> 'b -> 'c
  val clear : 'a Wp.Context.value -> unit
  val push : 'a Wp.Context.value -> 'a -> 'a option
  val pop : 'a Wp.Context.value -> 'a option -> unit
  val name : 'a Wp.Context.value -> string
  val once : (unit -> unit) -> unit -> unit
end