sig
  type location
  type 'a store
  val empty : 'a PersistentRef.store
  val make :
    'a ->
    'a PersistentRef.store -> PersistentRef.location * 'a PersistentRef.store
  val get : PersistentRef.location -> 'a PersistentRef.store -> 'a
  val set :
    PersistentRef.location ->
    'a -> 'a PersistentRef.store -> 'a PersistentRef.store
  val iter : ('a -> unit) -> 'a PersistentRef.store -> unit
  val fold :
    ('acc -> PersistentRef.location -> 'a -> 'acc) ->
    'acc -> 'a 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 -> 'a PersistentRef.store -> bool
end