sig
  module Spec :
    sig
      type ('conv_in, 'conv_out) t
      val ( ++ ) :
        ('c1, 'c2) Tws_prot.Unpickler.Spec.t ->
        ('c2, 'c3) Tws_prot.Unpickler.Spec.t ->
        ('c1, 'c3) Tws_prot.Unpickler.Spec.t
      val step : ('c1 -> 'c2) -> ('c1, 'c2) Tws_prot.Unpickler.Spec.t
      val empty : unit -> ('c, 'c) Tws_prot.Unpickler.Spec.t
      val unit : unit Tws_prot.Val_type.t
      val string : string Tws_prot.Val_type.t
      val int : int Tws_prot.Val_type.t
      val int64 : int64 Tws_prot.Val_type.t
      val float : float Tws_prot.Val_type.t
      val bool : bool Tws_prot.Val_type.t
      val bools : bool Tws_prot.Val_type.t
      val stamp : Core.Std.Time.t Tws_prot.Val_type.t
      val time : Core.Std.Time.t Tws_prot.Val_type.t
      val date : Core.Std.Date.t Tws_prot.Val_type.t
      val zone : Core.Std.Time.Zone.t Tws_prot.Val_type.t
      type 'a value
      val sequence :
        ?sep:char ->
        'Tws_prot.Val_type.t -> 'a list Tws_prot.Unpickler.Spec.value
      val required :
        'Tws_prot.Val_type.t -> 'Tws_prot.Unpickler.Spec.value
      val optional :
        ?none_on_default:Tws_prot.raw_tws ->
        'Tws_prot.Val_type.t -> 'a option Tws_prot.Unpickler.Spec.value
      val optional_with_default :
        default:'->
        'Tws_prot.Val_type.t -> 'Tws_prot.Unpickler.Spec.value
      val value :
        'Tws_prot.Unpickler.Spec.value ->
        name:string -> ('-> 'c, 'c) Tws_prot.Unpickler.Spec.t
      val capture_remaining_message :
        (Tws_prot.raw_tws Core.Std.Queue.t -> 'c, 'c)
        Tws_prot.Unpickler.Spec.t
      val fields_value :
        'Tws_prot.Unpickler.Spec.value ->
        ('c1, '-> 'c2) Tws_prot.Unpickler.Spec.t ->
        ('b, 'c) Fieldslib.Field.t -> ('c1, 'c2) Tws_prot.Unpickler.Spec.t
    end
  type 'a t
  val create :
    ?name:string ->
    ('conv, 'a) Tws_prot.Unpickler.Spec.t -> 'conv -> 'Tws_prot.Unpickler.t
  val map :
    'Tws_prot.Unpickler.t -> f:('-> 'b) -> 'Tws_prot.Unpickler.t
  val const : '-> 'Tws_prot.Unpickler.t
  val run :
    'Tws_prot.Unpickler.t ->
    Tws_prot.raw_tws Core.Std.Queue.t -> 'Core.Std.Or_error.t
  val run_exn :
    'Tws_prot.Unpickler.t -> Tws_prot.raw_tws Core.Std.Queue.t -> 'a
end