functor
  (T : Typeable.Typeable) (E : sig type a = T.a val eq : a -> a -> bool end->
  sig
    val allocate : T.a -> (Pickle.id -> unit m) -> Pickle.id m
    val store_repr : Pickle.id -> Pickle.Repr.t -> unit m
  end