sig
  type location
  type 'a store
  val empty : 'PersistentRef.store
  val make :
    '->
    'PersistentRef.store -> PersistentRef.location * 'PersistentRef.store
  val get : PersistentRef.location -> 'PersistentRef.store -> 'a
  val set :
    PersistentRef.location ->
    '-> 'PersistentRef.store -> 'PersistentRef.store
  val iter : ('-> unit) -> 'PersistentRef.store -> unit
  val fold :
    ('acc -> PersistentRef.location -> '-> 'acc) ->
    'acc -> 'PersistentRef.store -> 'acc
  val eq : PersistentRef.location -> PersistentRef.location -> bool
  val neq : PersistentRef.location -> PersistentRef.location -> bool
  val compare : PersistentRef.location -> PersistentRef.location -> int
  val valid : PersistentRef.location -> 'PersistentRef.store -> bool
end