sig
  module Tuple :
    sig
      val expr :
        Camlp4.PreCast.Ast.loc ->
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val patt :
        Camlp4.PreCast.Ast.loc ->
        Camlp4.PreCast.Ast.patt list -> Camlp4.PreCast.Ast.patt
      val ctyp :
        Camlp4.PreCast.Ast.loc ->
        Camlp4.PreCast.Ast.ctyp list -> Camlp4.PreCast.Ast.ctyp
    end
  module Field_case :
    sig
      type t = {
        label : string;
        ctyp : Camlp4.PreCast.Ast.ctyp;
        index : int;
      }
    end
  module Variant_case :
    sig
      type t = {
        label : string;
        ctyp : Camlp4.PreCast.Ast.ctyp option;
        poly : bool;
        arity : int;
        index : int;
        arity_index : int;
      }
      val expr :
        loc:Camlp4.PreCast.Ast.loc ->
        Pa_typerep_conv.Variant_case.t -> Camlp4.PreCast.Ast.expr
      val patt :
        loc:Camlp4.PreCast.Ast.loc ->
        Pa_typerep_conv.Variant_case.t -> Camlp4.PreCast.Ast.patt
      val ocaml_repr :
        loc:Camlp4.PreCast.Ast.loc ->
        Pa_typerep_conv.Variant_case.t -> Camlp4.PreCast.Ast.expr
    end
  module Branches :
    sig
      val fields :
        Camlp4.PreCast.Ast.ctyp -> Pa_typerep_conv.Field_case.t list
      val variants :
        Camlp4.PreCast.Ast.ctyp -> Pa_typerep_conv.Variant_case.t list
    end
end