sig
  val add_generator :
    ?is_exn:bool ->
    string ->
    (Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.str_item) -> unit
  val add_generator_with_arg :
    ?is_exn:bool ->
    string ->
    'Camlp4.PreCast.Gram.Entry.t ->
    (Camlp4.PreCast.Ast.ctyp -> 'a option -> Camlp4.PreCast.Ast.str_item) ->
    unit
  val rm_generator : ?is_exn:bool -> string -> unit
  val add_sig_generator :
    ?is_exn:bool ->
    string ->
    (Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.sig_item) -> unit
  val add_sig_generator_with_arg :
    ?is_exn:bool ->
    string ->
    'Camlp4.PreCast.Gram.Entry.t ->
    (Camlp4.PreCast.Ast.ctyp -> 'a option -> Camlp4.PreCast.Ast.sig_item) ->
    unit
  val rm_sig_generator : ?is_exn:bool -> string -> unit
  val get_conv_path : unit -> string
  val get_loc_err : Camlp4.PreCast.Ast.Loc.t -> string -> string
  val hash_variant : string -> int
  module Gen :
    sig
      val ty_var_list_of_ctyp :
        Camlp4.PreCast.Ast.ctyp -> string list -> string list
      val get_rev_id_path :
        Camlp4.PreCast.Ast.ident -> string list -> string list
      val ident_of_rev_path :
        Camlp4.PreCast.Ast.Loc.t -> string list -> Camlp4.PreCast.Ast.ident
      val get_appl_path :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ident
      val abstract :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.patt list ->
        Camlp4.PreCast.Ast.expr -> Camlp4.PreCast.Ast.expr
      val apply :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.expr ->
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val idp : Camlp4.PreCast.Ast.Loc.t -> string -> Camlp4.PreCast.Ast.patt
      val ide : Camlp4.PreCast.Ast.Loc.t -> string -> Camlp4.PreCast.Ast.expr
      val switch_tp_def :
        Camlp4.PreCast.Ast.Loc.t ->
        alias:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        sum:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        record:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        variants:(Camlp4.PreCast.Ast.Loc.t -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        mani:(Camlp4.PreCast.Ast.Loc.t ->
              Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ctyp -> 'a) ->
        nil:(Camlp4.PreCast.Ast.Loc.t -> 'a) -> Camlp4.PreCast.Ast.ctyp -> 'a
      val mk_expr_lst :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.expr list -> Camlp4.PreCast.Ast.expr
      val mk_patt_lst :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.patt list -> Camlp4.PreCast.Ast.patt
      val get_tparam_id : Camlp4.PreCast.Ast.ctyp -> string
      val type_is_recursive :
        Camlp4.PreCast.Ast.Loc.t -> string -> Camlp4.PreCast.Ast.ctyp -> bool
      val drop_variance_annotations :
        Camlp4.PreCast.Ast.Loc.t ->
        Camlp4.PreCast.Ast.ctyp -> Camlp4.PreCast.Ast.ctyp
    end
end