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