sig
  type 'a key
  val key : ?preprocess:('-> 'a) -> unit -> 'a key
  val find : t -> 'a key -> 'a option
  val set : t -> 'a key -> '-> unit
  val unset : t -> 'a key -> unit
  type accessor = { accessor : 'a. 'a key -> 'a option; }
end