functor (P : Dump.Dump->
  functor (E : sig type a = P.a val eq : a -> a -> bool end->
    functor
      (T : sig
             type a = P.a
             val type_rep : unit -> Typeable.TypeRep.t
             val has_type : Typeable.dynamic -> bool
             val cast : Typeable.dynamic -> a option
             val throwing_cast : Typeable.dynamic -> a
             val make_dynamic : a -> Typeable.dynamic
             val mk : a -> Typeable.dynamic
           end->
      sig
        type a = P.a
        module T :
          sig
            type a = a
            val type_rep : unit -> Typeable.TypeRep.t
            val has_type : Typeable.dynamic -> bool
            val cast : Typeable.dynamic -> a option
            val throwing_cast : Typeable.dynamic -> a
            val make_dynamic : a -> Typeable.dynamic
            val mk : a -> Typeable.dynamic
          end
        module E : sig type a = a val eq : a -> a -> bool end
        val pickle : a -> id Write.m
        val unpickle : id -> a Read.m
        val to_buffer : Buffer.t -> a -> unit
        val to_string : a -> string
        val to_channel : out_channel -> a -> unit
        val from_stream : char Stream.t -> a
        val from_string : string -> a
        val from_channel : in_channel -> a
      end