sig
  type 'a t = (Buffer.t -> '-> unit) * (string -> int -> int -> int * 'a)
  exception Too_short of string
  val unit : unit Serialize.t
  val char : char Serialize.t
  val int : int Serialize.t
  val float : float Serialize.t
  val string : string Serialize.t
  val int31 : int Serialize.t
  val pair : 'Serialize.t -> 'Serialize.t -> ('a * 'b) Serialize.t
  val list : 'Serialize.t -> 'a list Serialize.t
  val map : 'Serialize.t -> ('-> 'b) -> ('-> 'a) -> 'Serialize.t
  val marshal : 'Serialize.t
end