sig
  module type Type = sig type t end
  module type Error =
    sig
      type t
      exception E of Camlp4.Sig.Error.t
      val to_string : Camlp4.Sig.Error.t -> string
      val print : Format.formatter -> Camlp4.Sig.Error.t -> unit
    end
  module type Id = sig val name : string val version : string end
  module Warning :
    functor (Loc : Type->
      sig
        module type S =
          sig
            type warning = Loc.t -> string -> unit
            val default_warning : Camlp4.Sig.Warning.S.warning
            val current_warning : Camlp4.Sig.Warning.S.warning Pervasives.ref
            val print_warning : Camlp4.Sig.Warning.S.warning
          end
      end
  module type Loc =
    sig
      type t
      val mk : string -> Camlp4.Sig.Loc.t
      val ghost : Camlp4.Sig.Loc.t
      val of_lexing_position : Lexing.position -> Camlp4.Sig.Loc.t
      val to_ocaml_location : Camlp4.Sig.Loc.t -> Camlp4_import.Location.t
      val of_ocaml_location : Camlp4_import.Location.t -> Camlp4.Sig.Loc.t
      val of_lexbuf : Lexing.lexbuf -> Camlp4.Sig.Loc.t
      val of_tuple :
        string * int * int * int * int * int * int * bool -> Camlp4.Sig.Loc.t
      val to_tuple :
        Camlp4.Sig.Loc.t -> string * int * int * int * int * int * int * bool
      val merge : Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val join : Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val move :
        [ `both | `start | `stop ] ->
        int -> Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val shift : int -> Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val move_line : int -> Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val file_name : Camlp4.Sig.Loc.t -> string
      val start_line : Camlp4.Sig.Loc.t -> int
      val stop_line : Camlp4.Sig.Loc.t -> int
      val start_bol : Camlp4.Sig.Loc.t -> int
      val stop_bol : Camlp4.Sig.Loc.t -> int
      val start_off : Camlp4.Sig.Loc.t -> int
      val stop_off : Camlp4.Sig.Loc.t -> int
      val start_pos : Camlp4.Sig.Loc.t -> Lexing.position
      val stop_pos : Camlp4.Sig.Loc.t -> Lexing.position
      val is_ghost : Camlp4.Sig.Loc.t -> bool
      val ghostify : Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val set_file_name : string -> Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val strictly_before : Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t -> bool
      val make_absolute : Camlp4.Sig.Loc.t -> Camlp4.Sig.Loc.t
      val print : Format.formatter -> Camlp4.Sig.Loc.t -> unit
      val dump : Format.formatter -> Camlp4.Sig.Loc.t -> unit
      val to_string : Camlp4.Sig.Loc.t -> string
      exception Exc_located of Camlp4.Sig.Loc.t * exn
      val raise : Camlp4.Sig.Loc.t -> exn -> 'a
      val name : string Pervasives.ref
    end
  module type Ast =
    sig
      type loc
      type meta_bool
      type 'a meta_option
      type 'a meta_list
      type ctyp
      type patt
      type expr
      type module_type
      type sig_item
      type with_constr
      type module_expr
      type str_item
      type class_type
      type class_sig_item
      type class_expr
      type class_str_item
      type match_case
      type ident
      type binding
      type rec_binding
      type module_binding
      type rec_flag
      type direction_flag
      type mutable_flag
      type private_flag
      type virtual_flag
      type row_var_flag
      type override_flag
      val loc_of_ctyp : Camlp4.Sig.Ast.ctyp -> Camlp4.Sig.Ast.loc
      val loc_of_patt : Camlp4.Sig.Ast.patt -> Camlp4.Sig.Ast.loc
      val loc_of_expr : Camlp4.Sig.Ast.expr -> Camlp4.Sig.Ast.loc
      val loc_of_module_type :
        Camlp4.Sig.Ast.module_type -> Camlp4.Sig.Ast.loc
      val loc_of_module_expr :
        Camlp4.Sig.Ast.module_expr -> Camlp4.Sig.Ast.loc
      val loc_of_sig_item : Camlp4.Sig.Ast.sig_item -> Camlp4.Sig.Ast.loc
      val loc_of_str_item : Camlp4.Sig.Ast.str_item -> Camlp4.Sig.Ast.loc
      val loc_of_class_type : Camlp4.Sig.Ast.class_type -> Camlp4.Sig.Ast.loc
      val loc_of_class_sig_item :
        Camlp4.Sig.Ast.class_sig_item -> Camlp4.Sig.Ast.loc
      val loc_of_class_expr : Camlp4.Sig.Ast.class_expr -> Camlp4.Sig.Ast.loc
      val loc_of_class_str_item :
        Camlp4.Sig.Ast.class_str_item -> Camlp4.Sig.Ast.loc
      val loc_of_with_constr :
        Camlp4.Sig.Ast.with_constr -> Camlp4.Sig.Ast.loc
      val loc_of_binding : Camlp4.Sig.Ast.binding -> Camlp4.Sig.Ast.loc
      val loc_of_rec_binding :
        Camlp4.Sig.Ast.rec_binding -> Camlp4.Sig.Ast.loc
      val loc_of_module_binding :
        Camlp4.Sig.Ast.module_binding -> Camlp4.Sig.Ast.loc
      val loc_of_match_case : Camlp4.Sig.Ast.match_case -> Camlp4.Sig.Ast.loc
      val loc_of_ident : Camlp4.Sig.Ast.ident -> Camlp4.Sig.Ast.loc
      class map :
        object ('a)
          method binding : Camlp4.Sig.Ast.binding -> Camlp4.Sig.Ast.binding
          method class_expr :
            Camlp4.Sig.Ast.class_expr -> Camlp4.Sig.Ast.class_expr
          method class_sig_item :
            Camlp4.Sig.Ast.class_sig_item -> Camlp4.Sig.Ast.class_sig_item
          method class_str_item :
            Camlp4.Sig.Ast.class_str_item -> Camlp4.Sig.Ast.class_str_item
          method class_type :
            Camlp4.Sig.Ast.class_type -> Camlp4.Sig.Ast.class_type
          method ctyp : Camlp4.Sig.Ast.ctyp -> Camlp4.Sig.Ast.ctyp
          method direction_flag :
            Camlp4.Sig.Ast.direction_flag -> Camlp4.Sig.Ast.direction_flag
          method expr : Camlp4.Sig.Ast.expr -> Camlp4.Sig.Ast.expr
          method ident : Camlp4.Sig.Ast.ident -> Camlp4.Sig.Ast.ident
          method list : ('-> '-> 'c) -> 'b list -> 'c list
          method loc : Camlp4.Sig.Ast.loc -> Camlp4.Sig.Ast.loc
          method match_case :
            Camlp4.Sig.Ast.match_case -> Camlp4.Sig.Ast.match_case
          method meta_bool :
            Camlp4.Sig.Ast.meta_bool -> Camlp4.Sig.Ast.meta_bool
          method meta_list :
            ('-> '-> 'e) ->
            'Camlp4.Sig.Ast.meta_list -> 'Camlp4.Sig.Ast.meta_list
          method meta_option :
            ('-> '-> 'g) ->
            'Camlp4.Sig.Ast.meta_option -> 'Camlp4.Sig.Ast.meta_option
          method module_binding :
            Camlp4.Sig.Ast.module_binding -> Camlp4.Sig.Ast.module_binding
          method module_expr :
            Camlp4.Sig.Ast.module_expr -> Camlp4.Sig.Ast.module_expr
          method module_type :
            Camlp4.Sig.Ast.module_type -> Camlp4.Sig.Ast.module_type
          method mutable_flag :
            Camlp4.Sig.Ast.mutable_flag -> Camlp4.Sig.Ast.mutable_flag
          method override_flag :
            Camlp4.Sig.Ast.override_flag -> Camlp4.Sig.Ast.override_flag
          method patt : Camlp4.Sig.Ast.patt -> Camlp4.Sig.Ast.patt
          method private_flag :
            Camlp4.Sig.Ast.private_flag -> Camlp4.Sig.Ast.private_flag
          method rec_binding :
            Camlp4.Sig.Ast.rec_binding -> Camlp4.Sig.Ast.rec_binding
          method rec_flag :
            Camlp4.Sig.Ast.rec_flag -> Camlp4.Sig.Ast.rec_flag
          method row_var_flag :
            Camlp4.Sig.Ast.row_var_flag -> Camlp4.Sig.Ast.row_var_flag
          method sig_item :
            Camlp4.Sig.Ast.sig_item -> Camlp4.Sig.Ast.sig_item
          method str_item :
            Camlp4.Sig.Ast.str_item -> Camlp4.Sig.Ast.str_item
          method string : string -> string
          method unknown : '-> 'h
          method virtual_flag :
            Camlp4.Sig.Ast.virtual_flag -> Camlp4.Sig.Ast.virtual_flag
          method with_constr :
            Camlp4.Sig.Ast.with_constr -> Camlp4.Sig.Ast.with_constr
        end
      class fold :
        object ('a)
          method binding : Camlp4.Sig.Ast.binding -> 'a
          method class_expr : Camlp4.Sig.Ast.class_expr -> 'a
          method class_sig_item : Camlp4.Sig.Ast.class_sig_item -> 'a
          method class_str_item : Camlp4.Sig.Ast.class_str_item -> 'a
          method class_type : Camlp4.Sig.Ast.class_type -> 'a
          method ctyp : Camlp4.Sig.Ast.ctyp -> 'a
          method direction_flag : Camlp4.Sig.Ast.direction_flag -> 'a
          method expr : Camlp4.Sig.Ast.expr -> 'a
          method ident : Camlp4.Sig.Ast.ident -> 'a
          method list : ('-> '-> 'a) -> 'b list -> 'a
          method loc : Camlp4.Sig.Ast.loc -> 'a
          method match_case : Camlp4.Sig.Ast.match_case -> 'a
          method meta_bool : Camlp4.Sig.Ast.meta_bool -> 'a
          method meta_list :
            ('-> '-> 'a) -> 'Camlp4.Sig.Ast.meta_list -> 'a
          method meta_option :
            ('-> '-> 'a) -> 'Camlp4.Sig.Ast.meta_option -> 'a
          method module_binding : Camlp4.Sig.Ast.module_binding -> 'a
          method module_expr : Camlp4.Sig.Ast.module_expr -> 'a
          method module_type : Camlp4.Sig.Ast.module_type -> 'a
          method mutable_flag : Camlp4.Sig.Ast.mutable_flag -> 'a
          method override_flag : Camlp4.Sig.Ast.override_flag -> 'a
          method patt : Camlp4.Sig.Ast.patt -> 'a
          method private_flag : Camlp4.Sig.Ast.private_flag -> 'a
          method rec_binding : Camlp4.Sig.Ast.rec_binding -> 'a
          method rec_flag : Camlp4.Sig.Ast.rec_flag -> 'a
          method row_var_flag : Camlp4.Sig.Ast.row_var_flag -> 'a
          method sig_item : Camlp4.Sig.Ast.sig_item -> 'a
          method str_item : Camlp4.Sig.Ast.str_item -> 'a
          method string : string -> 'a
          method unknown : '-> 'a
          method virtual_flag : Camlp4.Sig.Ast.virtual_flag -> 'a
          method with_constr : Camlp4.Sig.Ast.with_constr -> 'a
        end
    end
  module type Camlp4Ast =
    sig
      module Loc : Loc
      type loc = Camlp4.Sig.Loc.t
      and meta_bool = BTrue | BFalse | BAnt of string
      and rec_flag = ReRecursive | ReNil | ReAnt of string
      and direction_flag = DiTo | DiDownto | DiAnt of string
      and mutable_flag = MuMutable | MuNil | MuAnt of string
      and private_flag = PrPrivate | PrNil | PrAnt of string
      and virtual_flag = ViVirtual | ViNil | ViAnt of string
      and override_flag = OvOverride | OvNil | OvAnt of string
      and row_var_flag = RvRowVar | RvNil | RvAnt of string
      and 'a meta_option = ONone | OSome of '| OAnt of string
      and 'a meta_list =
          LNil
        | LCons of 'a * 'Camlp4.Sig.Camlp4Ast.meta_list
        | LAnt of string
      and ident =
          IdAcc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ident
        | IdApp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ident
        | IdLid of Camlp4.Sig.Camlp4Ast.loc * string
        | IdUid of Camlp4.Sig.Camlp4Ast.loc * string
        | IdAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and ctyp =
          TyNil of Camlp4.Sig.Camlp4Ast.loc
        | TyAli of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyAny of Camlp4.Sig.Camlp4Ast.loc
        | TyApp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyArr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyCls of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | TyLab of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyId of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | TyMan of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyDcl of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp list * Camlp4.Sig.Camlp4Ast.ctyp *
            (Camlp4.Sig.Camlp4Ast.ctyp * Camlp4.Sig.Camlp4Ast.ctyp) list
        | TyObj of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.row_var_flag
        | TyOlb of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyPol of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyQuo of Camlp4.Sig.Camlp4Ast.loc * string
        | TyQuP of Camlp4.Sig.Camlp4Ast.loc * string
        | TyQuM of Camlp4.Sig.Camlp4Ast.loc * string
        | TyVrn of Camlp4.Sig.Camlp4Ast.loc * string
        | TyRec of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyCol of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TySem of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyCom of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TySum of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyOf of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyAnd of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyOr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyPrv of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyMut of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyTup of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TySta of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyVrnEq of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyVrnSup of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyVrnInf of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | TyVrnInfSup of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.ctyp * Camlp4.Sig.Camlp4Ast.ctyp
        | TyAmp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyOfAmp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | TyPkg of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_type
        | TyAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and patt =
          PaNil of Camlp4.Sig.Camlp4Ast.loc
        | PaId of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | PaAli of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaAnt of Camlp4.Sig.Camlp4Ast.loc * string
        | PaAny of Camlp4.Sig.Camlp4Ast.loc
        | PaApp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaArr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt
        | PaCom of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaSem of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaChr of Camlp4.Sig.Camlp4Ast.loc * string
        | PaInt of Camlp4.Sig.Camlp4Ast.loc * string
        | PaInt32 of Camlp4.Sig.Camlp4Ast.loc * string
        | PaInt64 of Camlp4.Sig.Camlp4Ast.loc * string
        | PaNativeInt of Camlp4.Sig.Camlp4Ast.loc * string
        | PaFlo of Camlp4.Sig.Camlp4Ast.loc * string
        | PaLab of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.patt
        | PaOlb of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.patt
        | PaOlbi of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.patt * Camlp4.Sig.Camlp4Ast.expr
        | PaOrp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaRng of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.patt
        | PaRec of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt
        | PaEq of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.patt
        | PaStr of Camlp4.Sig.Camlp4Ast.loc * string
        | PaTup of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt
        | PaTyc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.ctyp
        | PaTyp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | PaVrn of Camlp4.Sig.Camlp4Ast.loc * string
        | PaLaz of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt
      and expr =
          ExNil of Camlp4.Sig.Camlp4Ast.loc
        | ExId of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | ExAcc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExAnt of Camlp4.Sig.Camlp4Ast.loc * string
        | ExApp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExAre of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExArr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | ExSem of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExAsf of Camlp4.Sig.Camlp4Ast.loc
        | ExAsr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | ExAss of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExChr of Camlp4.Sig.Camlp4Ast.loc * string
        | ExCoe of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.ctyp * Camlp4.Sig.Camlp4Ast.ctyp
        | ExFlo of Camlp4.Sig.Camlp4Ast.loc * string
        | ExFor of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.direction_flag * Camlp4.Sig.Camlp4Ast.expr
        | ExFun of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.match_case
        | ExIfe of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr * Camlp4.Sig.Camlp4Ast.expr
        | ExInt of Camlp4.Sig.Camlp4Ast.loc * string
        | ExInt32 of Camlp4.Sig.Camlp4Ast.loc * string
        | ExInt64 of Camlp4.Sig.Camlp4Ast.loc * string
        | ExNativeInt of Camlp4.Sig.Camlp4Ast.loc * string
        | ExLab of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr
        | ExLaz of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | ExLet of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.rec_flag *
            Camlp4.Sig.Camlp4Ast.binding * Camlp4.Sig.Camlp4Ast.expr
        | ExLmd of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_expr * Camlp4.Sig.Camlp4Ast.expr
        | ExMat of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.match_case
        | ExNew of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | ExObj of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.class_str_item
        | ExOlb of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr
        | ExOvr of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.rec_binding
        | ExRec of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.rec_binding * Camlp4.Sig.Camlp4Ast.expr
        | ExSeq of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | ExSnd of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            string
        | ExSte of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExStr of Camlp4.Sig.Camlp4Ast.loc * string
        | ExTry of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.match_case
        | ExTup of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | ExCom of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExTyc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.ctyp
        | ExVrn of Camlp4.Sig.Camlp4Ast.loc * string
        | ExWhi of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.expr
        | ExOpI of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.expr
        | ExFUN of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr
        | ExPkg of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_expr
      and module_type =
          MtNil of Camlp4.Sig.Camlp4Ast.loc
        | MtId of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | MtFun of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type *
            Camlp4.Sig.Camlp4Ast.module_type
        | MtQuo of Camlp4.Sig.Camlp4Ast.loc * string
        | MtSig of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.sig_item
        | MtWit of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_type *
            Camlp4.Sig.Camlp4Ast.with_constr
        | MtAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and sig_item =
          SgNil of Camlp4.Sig.Camlp4Ast.loc
        | SgCls of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.class_type
        | SgClt of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.class_type
        | SgSem of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.sig_item *
            Camlp4.Sig.Camlp4Ast.sig_item
        | SgDir of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr
        | SgExc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | SgExt of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp * string Camlp4.Sig.Camlp4Ast.meta_list
        | SgInc of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_type
        | SgMod of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type
        | SgRecMod of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_binding
        | SgMty of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type
        | SgOpn of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | SgTyp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | SgVal of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp
        | SgAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and with_constr =
          WcNil of Camlp4.Sig.Camlp4Ast.loc
        | WcTyp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | WcMod of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ident
        | WcTyS of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | WcMoS of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ident
        | WcAnd of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.with_constr *
            Camlp4.Sig.Camlp4Ast.with_constr
        | WcAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and binding =
          BiNil of Camlp4.Sig.Camlp4Ast.loc
        | BiAnd of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.binding *
            Camlp4.Sig.Camlp4Ast.binding
        | BiEq of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.expr
        | BiAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and rec_binding =
          RbNil of Camlp4.Sig.Camlp4Ast.loc
        | RbSem of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.rec_binding *
            Camlp4.Sig.Camlp4Ast.rec_binding
        | RbEq of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.expr
        | RbAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and module_binding =
          MbNil of Camlp4.Sig.Camlp4Ast.loc
        | MbAnd of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_binding *
            Camlp4.Sig.Camlp4Ast.module_binding
        | MbColEq of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type *
            Camlp4.Sig.Camlp4Ast.module_expr
        | MbCol of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type
        | MbAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and match_case =
          McNil of Camlp4.Sig.Camlp4Ast.loc
        | McOr of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.match_case * Camlp4.Sig.Camlp4Ast.match_case
        | McArr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.expr * Camlp4.Sig.Camlp4Ast.expr
        | McAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and module_expr =
          MeNil of Camlp4.Sig.Camlp4Ast.loc
        | MeId of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | MeApp of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_expr *
            Camlp4.Sig.Camlp4Ast.module_expr
        | MeFun of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type *
            Camlp4.Sig.Camlp4Ast.module_expr
        | MeStr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.str_item
        | MeTyc of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_expr *
            Camlp4.Sig.Camlp4Ast.module_type
        | MePkg of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | MeAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and str_item =
          StNil of Camlp4.Sig.Camlp4Ast.loc
        | StCls of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.class_expr
        | StClt of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.class_type
        | StSem of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.str_item *
            Camlp4.Sig.Camlp4Ast.str_item
        | StDir of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.expr
        | StExc of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ident Camlp4.Sig.Camlp4Ast.meta_option
        | StExp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | StExt of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.ctyp * string Camlp4.Sig.Camlp4Ast.meta_list
        | StInc of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_expr
        | StMod of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_expr
        | StRecMod of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.module_binding
        | StMty of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.module_type
        | StOpn of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ident
        | StTyp of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp
        | StVal of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.rec_flag *
            Camlp4.Sig.Camlp4Ast.binding
        | StAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and class_type =
          CtNil of Camlp4.Sig.Camlp4Ast.loc
        | CtCon of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.virtual_flag * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ctyp
        | CtFun of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.class_type
        | CtSig of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.class_sig_item
        | CtAnd of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_type * Camlp4.Sig.Camlp4Ast.class_type
        | CtCol of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_type * Camlp4.Sig.Camlp4Ast.class_type
        | CtEq of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_type * Camlp4.Sig.Camlp4Ast.class_type
        | CtAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and class_sig_item =
          CgNil of Camlp4.Sig.Camlp4Ast.loc
        | CgCtr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | CgSem of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_sig_item *
            Camlp4.Sig.Camlp4Ast.class_sig_item
        | CgInh of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.class_type
        | CgMth of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.private_flag * Camlp4.Sig.Camlp4Ast.ctyp
        | CgVal of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.mutable_flag *
            Camlp4.Sig.Camlp4Ast.virtual_flag * Camlp4.Sig.Camlp4Ast.ctyp
        | CgVir of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.private_flag * Camlp4.Sig.Camlp4Ast.ctyp
        | CgAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and class_expr =
          CeNil of Camlp4.Sig.Camlp4Ast.loc
        | CeApp of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_expr * Camlp4.Sig.Camlp4Ast.expr
        | CeCon of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.virtual_flag * Camlp4.Sig.Camlp4Ast.ident *
            Camlp4.Sig.Camlp4Ast.ctyp
        | CeFun of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.class_expr
        | CeLet of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.rec_flag *
            Camlp4.Sig.Camlp4Ast.binding * Camlp4.Sig.Camlp4Ast.class_expr
        | CeStr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.patt *
            Camlp4.Sig.Camlp4Ast.class_str_item
        | CeTyc of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_expr * Camlp4.Sig.Camlp4Ast.class_type
        | CeAnd of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_expr * Camlp4.Sig.Camlp4Ast.class_expr
        | CeEq of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_expr * Camlp4.Sig.Camlp4Ast.class_expr
        | CeAnt of Camlp4.Sig.Camlp4Ast.loc * string
      and class_str_item =
          CrNil of Camlp4.Sig.Camlp4Ast.loc
        | CrSem of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.class_str_item *
            Camlp4.Sig.Camlp4Ast.class_str_item
        | CrCtr of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.ctyp *
            Camlp4.Sig.Camlp4Ast.ctyp
        | CrInh of Camlp4.Sig.Camlp4Ast.loc *
            Camlp4.Sig.Camlp4Ast.override_flag *
            Camlp4.Sig.Camlp4Ast.class_expr * string
        | CrIni of Camlp4.Sig.Camlp4Ast.loc * Camlp4.Sig.Camlp4Ast.expr
        | CrMth of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.override_flag *
            Camlp4.Sig.Camlp4Ast.private_flag * Camlp4.Sig.Camlp4Ast.expr *
            Camlp4.Sig.Camlp4Ast.ctyp
        | CrVal of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.override_flag *
            Camlp4.Sig.Camlp4Ast.mutable_flag * Camlp4.Sig.Camlp4Ast.expr
        | CrVir of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.private_flag * Camlp4.Sig.Camlp4Ast.ctyp
        | CrVvr of Camlp4.Sig.Camlp4Ast.loc * string *
            Camlp4.Sig.Camlp4Ast.mutable_flag * Camlp4.Sig.Camlp4Ast.ctyp
        | CrAnt of Camlp4.Sig.Camlp4Ast.loc * string
      val loc_of_ctyp : Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_patt : Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_expr : Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_module_type :
        Camlp4.Sig.Camlp4Ast.module_type -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_module_expr :
        Camlp4.Sig.Camlp4Ast.module_expr -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_sig_item :
        Camlp4.Sig.Camlp4Ast.sig_item -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_str_item :
        Camlp4.Sig.Camlp4Ast.str_item -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_class_type :
        Camlp4.Sig.Camlp4Ast.class_type -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_class_sig_item :
        Camlp4.Sig.Camlp4Ast.class_sig_item -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_class_expr :
        Camlp4.Sig.Camlp4Ast.class_expr -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_class_str_item :
        Camlp4.Sig.Camlp4Ast.class_str_item -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_with_constr :
        Camlp4.Sig.Camlp4Ast.with_constr -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_binding :
        Camlp4.Sig.Camlp4Ast.binding -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_rec_binding :
        Camlp4.Sig.Camlp4Ast.rec_binding -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_module_binding :
        Camlp4.Sig.Camlp4Ast.module_binding -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_match_case :
        Camlp4.Sig.Camlp4Ast.match_case -> Camlp4.Sig.Camlp4Ast.loc
      val loc_of_ident :
        Camlp4.Sig.Camlp4Ast.ident -> Camlp4.Sig.Camlp4Ast.loc
      module Meta :
        sig
          module type META_LOC =
            sig
              val meta_loc_patt :
                Camlp4.Sig.Camlp4Ast.loc ->
                Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.patt
              val meta_loc_expr :
                Camlp4.Sig.Camlp4Ast.loc ->
                Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.expr
            end
          module MetaLoc :
            sig
              val meta_loc_patt :
                Camlp4.Sig.Camlp4Ast.loc ->
                Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.patt
              val meta_loc_expr :
                Camlp4.Sig.Camlp4Ast.loc ->
                Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.expr
            end
          module MetaGhostLoc :
            sig
              val meta_loc_patt :
                Camlp4.Sig.Camlp4Ast.loc -> '-> Camlp4.Sig.Camlp4Ast.patt
              val meta_loc_expr :
                Camlp4.Sig.Camlp4Ast.loc -> '-> Camlp4.Sig.Camlp4Ast.expr
            end
          module MetaLocVar :
            sig
              val meta_loc_patt :
                Camlp4.Sig.Camlp4Ast.loc -> '-> Camlp4.Sig.Camlp4Ast.patt
              val meta_loc_expr :
                Camlp4.Sig.Camlp4Ast.loc -> '-> Camlp4.Sig.Camlp4Ast.expr
            end
          module Make :
            functor (MetaLoc : META_LOC->
              sig
                module Expr :
                  sig
                    val meta_string :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_int :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_float :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_char :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_bool :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      bool -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_list :
                      (Camlp4.Sig.Camlp4Ast.loc ->
                       '-> Camlp4.Sig.Camlp4Ast.expr) ->
                      Camlp4.Sig.Camlp4Ast.loc ->
                      'a list -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.binding ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_rec_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.rec_binding ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_class_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_expr ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_class_sig_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_sig_item ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_class_str_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_str_item ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_class_type :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_type ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_ctyp :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_ident :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.ident -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_match_case :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.match_case ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_module_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_binding ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_module_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_expr ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_module_type :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_type ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_patt :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.expr
                    val meta_sig_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.sig_item ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_str_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.str_item ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_with_constr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.with_constr ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_rec_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.rec_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_mutable_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.mutable_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_virtual_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.virtual_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_private_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.private_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_row_var_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.row_var_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_override_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.override_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                    val meta_direction_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.direction_flag ->
                      Camlp4.Sig.Camlp4Ast.expr
                  end
                module Patt :
                  sig
                    val meta_string :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_int :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_float :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_char :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      string -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_bool :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      bool -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_list :
                      (Camlp4.Sig.Camlp4Ast.loc ->
                       '-> Camlp4.Sig.Camlp4Ast.patt) ->
                      Camlp4.Sig.Camlp4Ast.loc ->
                      'a list -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.binding ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_rec_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.rec_binding ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_class_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_expr ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_class_sig_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_sig_item ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_class_str_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_str_item ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_class_type :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.class_type ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_ctyp :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_ident :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.ident -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_match_case :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.match_case ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_module_binding :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_binding ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_module_expr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_expr ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_module_type :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.module_type ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_patt :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.patt
                    val meta_sig_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.sig_item ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_str_item :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.str_item ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_with_constr :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.with_constr ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_rec_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.rec_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_mutable_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.mutable_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_virtual_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.virtual_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_private_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.private_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_row_var_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.row_var_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_override_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.override_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                    val meta_direction_flag :
                      Camlp4.Sig.Camlp4Ast.loc ->
                      Camlp4.Sig.Camlp4Ast.direction_flag ->
                      Camlp4.Sig.Camlp4Ast.patt
                  end
              end
        end
      class map :
        object ('a)
          method binding :
            Camlp4.Sig.Camlp4Ast.binding -> Camlp4.Sig.Camlp4Ast.binding
          method class_expr :
            Camlp4.Sig.Camlp4Ast.class_expr ->
            Camlp4.Sig.Camlp4Ast.class_expr
          method class_sig_item :
            Camlp4.Sig.Camlp4Ast.class_sig_item ->
            Camlp4.Sig.Camlp4Ast.class_sig_item
          method class_str_item :
            Camlp4.Sig.Camlp4Ast.class_str_item ->
            Camlp4.Sig.Camlp4Ast.class_str_item
          method class_type :
            Camlp4.Sig.Camlp4Ast.class_type ->
            Camlp4.Sig.Camlp4Ast.class_type
          method ctyp :
            Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.ctyp
          method direction_flag :
            Camlp4.Sig.Camlp4Ast.direction_flag ->
            Camlp4.Sig.Camlp4Ast.direction_flag
          method expr :
            Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.expr
          method ident :
            Camlp4.Sig.Camlp4Ast.ident -> Camlp4.Sig.Camlp4Ast.ident
          method list : ('-> '-> 'c) -> 'b list -> 'c list
          method loc : Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.loc
          method match_case :
            Camlp4.Sig.Camlp4Ast.match_case ->
            Camlp4.Sig.Camlp4Ast.match_case
          method meta_bool :
            Camlp4.Sig.Camlp4Ast.meta_bool -> Camlp4.Sig.Camlp4Ast.meta_bool
          method meta_list :
            ('-> '-> 'e) ->
            'Camlp4.Sig.Camlp4Ast.meta_list ->
            'Camlp4.Sig.Camlp4Ast.meta_list
          method meta_option :
            ('-> '-> 'g) ->
            'Camlp4.Sig.Camlp4Ast.meta_option ->
            'Camlp4.Sig.Camlp4Ast.meta_option
          method module_binding :
            Camlp4.Sig.Camlp4Ast.module_binding ->
            Camlp4.Sig.Camlp4Ast.module_binding
          method module_expr :
            Camlp4.Sig.Camlp4Ast.module_expr ->
            Camlp4.Sig.Camlp4Ast.module_expr
          method module_type :
            Camlp4.Sig.Camlp4Ast.module_type ->
            Camlp4.Sig.Camlp4Ast.module_type
          method mutable_flag :
            Camlp4.Sig.Camlp4Ast.mutable_flag ->
            Camlp4.Sig.Camlp4Ast.mutable_flag
          method override_flag :
            Camlp4.Sig.Camlp4Ast.override_flag ->
            Camlp4.Sig.Camlp4Ast.override_flag
          method patt :
            Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.patt
          method private_flag :
            Camlp4.Sig.Camlp4Ast.private_flag ->
            Camlp4.Sig.Camlp4Ast.private_flag
          method rec_binding :
            Camlp4.Sig.Camlp4Ast.rec_binding ->
            Camlp4.Sig.Camlp4Ast.rec_binding
          method rec_flag :
            Camlp4.Sig.Camlp4Ast.rec_flag -> Camlp4.Sig.Camlp4Ast.rec_flag
          method row_var_flag :
            Camlp4.Sig.Camlp4Ast.row_var_flag ->
            Camlp4.Sig.Camlp4Ast.row_var_flag
          method sig_item :
            Camlp4.Sig.Camlp4Ast.sig_item -> Camlp4.Sig.Camlp4Ast.sig_item
          method str_item :
            Camlp4.Sig.Camlp4Ast.str_item -> Camlp4.Sig.Camlp4Ast.str_item
          method string : string -> string
          method unknown : '-> 'h
          method virtual_flag :
            Camlp4.Sig.Camlp4Ast.virtual_flag ->
            Camlp4.Sig.Camlp4Ast.virtual_flag
          method with_constr :
            Camlp4.Sig.Camlp4Ast.with_constr ->
            Camlp4.Sig.Camlp4Ast.with_constr
        end
      class fold :
        object ('a)
          method binding : Camlp4.Sig.Camlp4Ast.binding -> 'a
          method class_expr : Camlp4.Sig.Camlp4Ast.class_expr -> 'a
          method class_sig_item : Camlp4.Sig.Camlp4Ast.class_sig_item -> 'a
          method class_str_item : Camlp4.Sig.Camlp4Ast.class_str_item -> 'a
          method class_type : Camlp4.Sig.Camlp4Ast.class_type -> 'a
          method ctyp : Camlp4.Sig.Camlp4Ast.ctyp -> 'a
          method direction_flag : Camlp4.Sig.Camlp4Ast.direction_flag -> 'a
          method expr : Camlp4.Sig.Camlp4Ast.expr -> 'a
          method ident : Camlp4.Sig.Camlp4Ast.ident -> 'a
          method list : ('-> '-> 'a) -> 'b list -> 'a
          method loc : Camlp4.Sig.Camlp4Ast.loc -> 'a
          method match_case : Camlp4.Sig.Camlp4Ast.match_case -> 'a
          method meta_bool : Camlp4.Sig.Camlp4Ast.meta_bool -> 'a
          method meta_list :
            ('-> '-> 'a) -> 'Camlp4.Sig.Camlp4Ast.meta_list -> 'a
          method meta_option :
            ('-> '-> 'a) -> 'Camlp4.Sig.Camlp4Ast.meta_option -> 'a
          method module_binding : Camlp4.Sig.Camlp4Ast.module_binding -> 'a
          method module_expr : Camlp4.Sig.Camlp4Ast.module_expr -> 'a
          method module_type : Camlp4.Sig.Camlp4Ast.module_type -> 'a
          method mutable_flag : Camlp4.Sig.Camlp4Ast.mutable_flag -> 'a
          method override_flag : Camlp4.Sig.Camlp4Ast.override_flag -> 'a
          method patt : Camlp4.Sig.Camlp4Ast.patt -> 'a
          method private_flag : Camlp4.Sig.Camlp4Ast.private_flag -> 'a
          method rec_binding : Camlp4.Sig.Camlp4Ast.rec_binding -> 'a
          method rec_flag : Camlp4.Sig.Camlp4Ast.rec_flag -> 'a
          method row_var_flag : Camlp4.Sig.Camlp4Ast.row_var_flag -> 'a
          method sig_item : Camlp4.Sig.Camlp4Ast.sig_item -> 'a
          method str_item : Camlp4.Sig.Camlp4Ast.str_item -> 'a
          method string : string -> 'a
          method unknown : '-> 'a
          method virtual_flag : Camlp4.Sig.Camlp4Ast.virtual_flag -> 'a
          method with_constr : Camlp4.Sig.Camlp4Ast.with_constr -> 'a
        end
      val map_expr :
        (Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.expr) ->
        Camlp4.Sig.Camlp4Ast.map
      val map_patt :
        (Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.patt) ->
        Camlp4.Sig.Camlp4Ast.map
      val map_ctyp :
        (Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.ctyp) ->
        Camlp4.Sig.Camlp4Ast.map
      val map_str_item :
        (Camlp4.Sig.Camlp4Ast.str_item -> Camlp4.Sig.Camlp4Ast.str_item) ->
        Camlp4.Sig.Camlp4Ast.map
      val map_sig_item :
        (Camlp4.Sig.Camlp4Ast.sig_item -> Camlp4.Sig.Camlp4Ast.sig_item) ->
        Camlp4.Sig.Camlp4Ast.map
      val map_loc :
        (Camlp4.Sig.Camlp4Ast.loc -> Camlp4.Sig.Camlp4Ast.loc) ->
        Camlp4.Sig.Camlp4Ast.map
      val ident_of_expr :
        Camlp4.Sig.Camlp4Ast.expr -> Camlp4.Sig.Camlp4Ast.ident
      val ident_of_patt :
        Camlp4.Sig.Camlp4Ast.patt -> Camlp4.Sig.Camlp4Ast.ident
      val ident_of_ctyp :
        Camlp4.Sig.Camlp4Ast.ctyp -> Camlp4.Sig.Camlp4Ast.ident
      val biAnd_of_list :
        Camlp4.Sig.Camlp4Ast.binding list -> Camlp4.Sig.Camlp4Ast.binding
      val rbSem_of_list :
        Camlp4.Sig.Camlp4Ast.rec_binding list ->
        Camlp4.Sig.Camlp4Ast.rec_binding
      val paSem_of_list :
        Camlp4.Sig.Camlp4Ast.patt list -> Camlp4.Sig.Camlp4Ast.patt
      val paCom_of_list :
        Camlp4.Sig.Camlp4Ast.patt list -> Camlp4.Sig.Camlp4Ast.patt
      val tyOr_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val tyAnd_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val tyAmp_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val tySem_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val tyCom_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val tySta_of_list :
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp
      val stSem_of_list :
        Camlp4.Sig.Camlp4Ast.str_item list -> Camlp4.Sig.Camlp4Ast.str_item
      val sgSem_of_list :
        Camlp4.Sig.Camlp4Ast.sig_item list -> Camlp4.Sig.Camlp4Ast.sig_item
      val crSem_of_list :
        Camlp4.Sig.Camlp4Ast.class_str_item list ->
        Camlp4.Sig.Camlp4Ast.class_str_item
      val cgSem_of_list :
        Camlp4.Sig.Camlp4Ast.class_sig_item list ->
        Camlp4.Sig.Camlp4Ast.class_sig_item
      val ctAnd_of_list :
        Camlp4.Sig.Camlp4Ast.class_type list ->
        Camlp4.Sig.Camlp4Ast.class_type
      val ceAnd_of_list :
        Camlp4.Sig.Camlp4Ast.class_expr list ->
        Camlp4.Sig.Camlp4Ast.class_expr
      val wcAnd_of_list :
        Camlp4.Sig.Camlp4Ast.with_constr list ->
        Camlp4.Sig.Camlp4Ast.with_constr
      val meApp_of_list :
        Camlp4.Sig.Camlp4Ast.module_expr list ->
        Camlp4.Sig.Camlp4Ast.module_expr
      val mbAnd_of_list :
        Camlp4.Sig.Camlp4Ast.module_binding list ->
        Camlp4.Sig.Camlp4Ast.module_binding
      val mcOr_of_list :
        Camlp4.Sig.Camlp4Ast.match_case list ->
        Camlp4.Sig.Camlp4Ast.match_case
      val idAcc_of_list :
        Camlp4.Sig.Camlp4Ast.ident list -> Camlp4.Sig.Camlp4Ast.ident
      val idApp_of_list :
        Camlp4.Sig.Camlp4Ast.ident list -> Camlp4.Sig.Camlp4Ast.ident
      val exSem_of_list :
        Camlp4.Sig.Camlp4Ast.expr list -> Camlp4.Sig.Camlp4Ast.expr
      val exCom_of_list :
        Camlp4.Sig.Camlp4Ast.expr list -> Camlp4.Sig.Camlp4Ast.expr
      val list_of_ctyp :
        Camlp4.Sig.Camlp4Ast.ctyp ->
        Camlp4.Sig.Camlp4Ast.ctyp list -> Camlp4.Sig.Camlp4Ast.ctyp list
      val list_of_binding :
        Camlp4.Sig.Camlp4Ast.binding ->
        Camlp4.Sig.Camlp4Ast.binding list ->
        Camlp4.Sig.Camlp4Ast.binding list
      val list_of_rec_binding :
        Camlp4.Sig.Camlp4Ast.rec_binding ->
        Camlp4.Sig.Camlp4Ast.rec_binding list ->
        Camlp4.Sig.Camlp4Ast.rec_binding list
      val list_of_with_constr :
        Camlp4.Sig.Camlp4Ast.with_constr ->
        Camlp4.Sig.Camlp4Ast.with_constr list ->
        Camlp4.Sig.Camlp4Ast.with_constr list
      val list_of_patt :
        Camlp4.Sig.Camlp4Ast.patt ->
        Camlp4.Sig.Camlp4Ast.patt list -> Camlp4.Sig.Camlp4Ast.patt list
      val list_of_expr :
        Camlp4.Sig.Camlp4Ast.expr ->
        Camlp4.Sig.Camlp4Ast.expr list -> Camlp4.Sig.Camlp4Ast.expr list
      val list_of_str_item :
        Camlp4.Sig.Camlp4Ast.str_item ->
        Camlp4.Sig.Camlp4Ast.str_item list ->
        Camlp4.Sig.Camlp4Ast.str_item list
      val list_of_sig_item :
        Camlp4.Sig.Camlp4Ast.sig_item ->
        Camlp4.Sig.Camlp4Ast.sig_item list ->
        Camlp4.Sig.Camlp4Ast.sig_item list
      val list_of_class_sig_item :
        Camlp4.Sig.Camlp4Ast.class_sig_item ->
        Camlp4.Sig.Camlp4Ast.class_sig_item list ->
        Camlp4.Sig.Camlp4Ast.class_sig_item list
      val list_of_class_str_item :
        Camlp4.Sig.Camlp4Ast.class_str_item ->
        Camlp4.Sig.Camlp4Ast.class_str_item list ->
        Camlp4.Sig.Camlp4Ast.class_str_item list
      val list_of_class_type :
        Camlp4.Sig.Camlp4Ast.class_type ->
        Camlp4.Sig.Camlp4Ast.class_type list ->
        Camlp4.Sig.Camlp4Ast.class_type list
      val list_of_class_expr :
        Camlp4.Sig.Camlp4Ast.class_expr ->
        Camlp4.Sig.Camlp4Ast.class_expr list ->
        Camlp4.Sig.Camlp4Ast.class_expr list
      val list_of_module_expr :
        Camlp4.Sig.Camlp4Ast.module_expr ->
        Camlp4.Sig.Camlp4Ast.module_expr list ->
        Camlp4.Sig.Camlp4Ast.module_expr list
      val list_of_module_binding :
        Camlp4.Sig.Camlp4Ast.module_binding ->
        Camlp4.Sig.Camlp4Ast.module_binding list ->
        Camlp4.Sig.Camlp4Ast.module_binding list
      val list_of_match_case :
        Camlp4.Sig.Camlp4Ast.match_case ->
        Camlp4.Sig.Camlp4Ast.match_case list ->
        Camlp4.Sig.Camlp4Ast.match_case list
      val list_of_ident :
        Camlp4.Sig.Camlp4Ast.ident ->
        Camlp4.Sig.Camlp4Ast.ident list -> Camlp4.Sig.Camlp4Ast.ident list
      val safe_string_escaped : string -> string
      val is_irrefut_patt : Camlp4.Sig.Camlp4Ast.patt -> bool
      val is_constructor : Camlp4.Sig.Camlp4Ast.ident -> bool
      val is_patt_constructor : Camlp4.Sig.Camlp4Ast.patt -> bool
      val is_expr_constructor : Camlp4.Sig.Camlp4Ast.expr -> bool
      val ty_of_stl :
        Camlp4.Sig.Loc.t * string * Camlp4.Sig.Camlp4Ast.ctyp list ->
        Camlp4.Sig.Camlp4Ast.ctyp
      val ty_of_sbt :
        Camlp4.Sig.Loc.t * string * bool * Camlp4.Sig.Camlp4Ast.ctyp ->
        Camlp4.Sig.Camlp4Ast.ctyp
      val bi_of_pe :
        Camlp4.Sig.Camlp4Ast.patt * Camlp4.Sig.Camlp4Ast.expr ->
        Camlp4.Sig.Camlp4Ast.binding
      val pel_of_binding :
        Camlp4.Sig.Camlp4Ast.binding ->
        (Camlp4.Sig.Camlp4Ast.patt * Camlp4.Sig.Camlp4Ast.expr) list
      val binding_of_pel :
        (Camlp4.Sig.Camlp4Ast.patt * Camlp4.Sig.Camlp4Ast.expr) list ->
        Camlp4.Sig.Camlp4Ast.binding
      val sum_type_of_list :
        (Camlp4.Sig.Loc.t * string * Camlp4.Sig.Camlp4Ast.ctyp list) list ->
        Camlp4.Sig.Camlp4Ast.ctyp
      val record_type_of_list :
        (Camlp4.Sig.Loc.t * string * bool * Camlp4.Sig.Camlp4Ast.ctyp) list ->
        Camlp4.Sig.Camlp4Ast.ctyp
    end
  module Camlp4AstToAst :
    functor (M : Camlp4Ast->
      sig
        type loc = M.loc
        type meta_bool = M.meta_bool
        type 'a meta_option = 'M.meta_option
        type 'a meta_list = 'M.meta_list
        type ctyp = M.ctyp
        type patt = M.patt
        type expr = M.expr
        type module_type = M.module_type
        type sig_item = M.sig_item
        type with_constr = M.with_constr
        type module_expr = M.module_expr
        type str_item = M.str_item
        type class_type = M.class_type
        type class_sig_item = M.class_sig_item
        type class_expr = M.class_expr
        type class_str_item = M.class_str_item
        type match_case = M.match_case
        type ident = M.ident
        type binding = M.binding
        type rec_binding = M.rec_binding
        type module_binding = M.module_binding
        type rec_flag = M.rec_flag
        type direction_flag = M.direction_flag
        type mutable_flag = M.mutable_flag
        type private_flag = M.private_flag
        type virtual_flag = M.virtual_flag
        type row_var_flag = M.row_var_flag
        type override_flag = M.override_flag
        val loc_of_ctyp : ctyp -> loc
        val loc_of_patt : patt -> loc
        val loc_of_expr : expr -> loc
        val loc_of_module_type : module_type -> loc
        val loc_of_module_expr : module_expr -> loc
        val loc_of_sig_item : sig_item -> loc
        val loc_of_str_item : str_item -> loc
        val loc_of_class_type : class_type -> loc
        val loc_of_class_sig_item : class_sig_item -> loc
        val loc_of_class_expr : class_expr -> loc
        val loc_of_class_str_item : class_str_item -> loc
        val loc_of_with_constr : with_constr -> loc
        val loc_of_binding : binding -> loc
        val loc_of_rec_binding : rec_binding -> loc
        val loc_of_module_binding : module_binding -> loc
        val loc_of_match_case : match_case -> loc
        val loc_of_ident : ident -> loc
        class map :
          object ('a)
            method binding : binding -> binding
            method class_expr : class_expr -> class_expr
            method class_sig_item : class_sig_item -> class_sig_item
            method class_str_item : class_str_item -> class_str_item
            method class_type : class_type -> class_type
            method ctyp : ctyp -> ctyp
            method direction_flag : direction_flag -> direction_flag
            method expr : expr -> expr
            method ident : ident -> ident
            method list : ('-> '-> 'c) -> 'b list -> 'c list
            method loc : loc -> loc
            method match_case : match_case -> match_case
            method meta_bool : meta_bool -> meta_bool
            method meta_list :
              ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
            method meta_option :
              ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
            method module_binding : module_binding -> module_binding
            method module_expr : module_expr -> module_expr
            method module_type : module_type -> module_type
            method mutable_flag : mutable_flag -> mutable_flag
            method override_flag : override_flag -> override_flag
            method patt : patt -> patt
            method private_flag : private_flag -> private_flag
            method rec_binding : rec_binding -> rec_binding
            method rec_flag : rec_flag -> rec_flag
            method row_var_flag : row_var_flag -> row_var_flag
            method sig_item : sig_item -> sig_item
            method str_item : str_item -> str_item
            method string : string -> string
            method unknown : '-> 'h
            method virtual_flag : virtual_flag -> virtual_flag
            method with_constr : with_constr -> with_constr
          end
        class fold :
          object ('a)
            method binding : binding -> 'a
            method class_expr : class_expr -> 'a
            method class_sig_item : class_sig_item -> 'a
            method class_str_item : class_str_item -> 'a
            method class_type : class_type -> 'a
            method ctyp : ctyp -> 'a
            method direction_flag : direction_flag -> 'a
            method expr : expr -> 'a
            method ident : ident -> 'a
            method list : ('-> '-> 'a) -> 'b list -> 'a
            method loc : loc -> 'a
            method match_case : match_case -> 'a
            method meta_bool : meta_bool -> 'a
            method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
            method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
            method module_binding : module_binding -> 'a
            method module_expr : module_expr -> 'a
            method module_type : module_type -> 'a
            method mutable_flag : mutable_flag -> 'a
            method override_flag : override_flag -> 'a
            method patt : patt -> 'a
            method private_flag : private_flag -> 'a
            method rec_binding : rec_binding -> 'a
            method rec_flag : rec_flag -> 'a
            method row_var_flag : row_var_flag -> 'a
            method sig_item : sig_item -> 'a
            method str_item : str_item -> 'a
            method string : string -> 'a
            method unknown : '-> 'a
            method virtual_flag : virtual_flag -> 'a
            method with_constr : with_constr -> 'a
          end
      end
  module MakeCamlp4Ast :
    functor (Loc : Type->
      sig
        type loc = Camlp4.Sig.Loc.t
        and meta_bool = BTrue | BFalse | BAnt of string
        and rec_flag = ReRecursive | ReNil | ReAnt of string
        and direction_flag = DiTo | DiDownto | DiAnt of string
        and mutable_flag = MuMutable | MuNil | MuAnt of string
        and private_flag = PrPrivate | PrNil | PrAnt of string
        and virtual_flag = ViVirtual | ViNil | ViAnt of string
        and override_flag = OvOverride | OvNil | OvAnt of string
        and row_var_flag = RvRowVar | RvNil | RvAnt of string
        and 'a meta_option = ONone | OSome of '| OAnt of string
        and 'a meta_list =
            LNil
          | LCons of 'a * 'Camlp4.Sig.MakeCamlp4Ast.meta_list
          | LAnt of string
        and ident =
            IdAcc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ident
          | IdApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ident
          | IdLid of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | IdUid of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | IdAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and ctyp =
            TyNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | TyAli of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyAny of Camlp4.Sig.MakeCamlp4Ast.loc
          | TyApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyArr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyCls of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | TyLab of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyId of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | TyMan of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyDcl of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp list *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              (Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp)
              list
          | TyObj of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              Camlp4.Sig.MakeCamlp4Ast.row_var_flag
          | TyOlb of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyPol of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyQuo of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | TyQuP of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | TyQuM of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | TyVrn of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | TyRec of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyCol of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TySem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyCom of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TySum of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyOf of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyOr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyPrv of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyMut of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyTup of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TySta of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyVrnEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyVrnSup of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyVrnInf of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyVrnInfSup of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyAmp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyOfAmp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | TyPkg of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | TyAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and patt =
            PaNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | PaId of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | PaAli of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaAny of Camlp4.Sig.MakeCamlp4Ast.loc
          | PaApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaArr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt
          | PaCom of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaChr of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaInt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaInt32 of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaInt64 of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaNativeInt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaFlo of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaLab of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.patt
          | PaOlb of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.patt
          | PaOlbi of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.expr
          | PaOrp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaRng of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaRec of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt
          | PaEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.patt
          | PaStr of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaTup of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt
          | PaTyc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | PaTyp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | PaVrn of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | PaLaz of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt
        and expr =
            ExNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | ExId of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | ExAcc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExAre of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExArr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExAsf of Camlp4.Sig.MakeCamlp4Ast.loc
          | ExAsr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExAss of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExChr of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExCoe of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.ctyp *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | ExFlo of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExFor of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr *
              Camlp4.Sig.MakeCamlp4Ast.direction_flag *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExFun of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.match_case
          | ExIfe of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExInt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExInt32 of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExInt64 of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExNativeInt of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExLab of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExLaz of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExLet of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_flag *
              Camlp4.Sig.MakeCamlp4Ast.binding *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExLmd of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_expr *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExMat of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr *
              Camlp4.Sig.MakeCamlp4Ast.match_case
          | ExNew of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | ExObj of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt *
              Camlp4.Sig.MakeCamlp4Ast.class_str_item
          | ExOlb of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExOvr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_binding
          | ExRec of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_binding *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExSeq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExSnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * string
          | ExSte of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExStr of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExTry of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr *
              Camlp4.Sig.MakeCamlp4Ast.match_case
          | ExTup of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExCom of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExTyc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | ExVrn of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | ExWhi of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExOpI of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.expr
          | ExFUN of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | ExPkg of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
        and module_type =
            MtNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | MtId of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | MtFun of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | MtQuo of Camlp4.Sig.MakeCamlp4Ast.loc * string
          | MtSig of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.sig_item
          | MtWit of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_type *
              Camlp4.Sig.MakeCamlp4Ast.with_constr
          | MtAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and sig_item =
            SgNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | SgCls of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | SgClt of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | SgSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.sig_item *
              Camlp4.Sig.MakeCamlp4Ast.sig_item
          | SgDir of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | SgExc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | SgExt of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              string Camlp4.Sig.MakeCamlp4Ast.meta_list
          | SgInc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | SgMod of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | SgRecMod of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_binding
          | SgMty of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | SgOpn of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | SgTyp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | SgVal of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | SgAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and with_constr =
            WcNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | WcTyp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | WcMod of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ident
          | WcTyS of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | WcMoS of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ident
          | WcAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.with_constr *
              Camlp4.Sig.MakeCamlp4Ast.with_constr
          | WcAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and binding =
            BiNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | BiAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.binding *
              Camlp4.Sig.MakeCamlp4Ast.binding
          | BiEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.expr
          | BiAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and rec_binding =
            RbNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | RbSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_binding *
              Camlp4.Sig.MakeCamlp4Ast.rec_binding
          | RbEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.expr
          | RbAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and module_binding =
            MbNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | MbAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_binding *
              Camlp4.Sig.MakeCamlp4Ast.module_binding
          | MbColEq of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
          | MbCol of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | MbAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and match_case =
            McNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | McOr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.match_case *
              Camlp4.Sig.MakeCamlp4Ast.match_case
          | McArr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt * Camlp4.Sig.MakeCamlp4Ast.expr *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | McAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and module_expr =
            MeNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | MeId of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | MeApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_expr *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
          | MeFun of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
          | MeStr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.str_item
          | MeTyc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_expr *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | MePkg of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | MeAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and str_item =
            StNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | StCls of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_expr
          | StClt of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | StSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.str_item *
              Camlp4.Sig.MakeCamlp4Ast.str_item
          | StDir of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | StExc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              Camlp4.Sig.MakeCamlp4Ast.ident
              Camlp4.Sig.MakeCamlp4Ast.meta_option
          | StExp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | StExt of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              string Camlp4.Sig.MakeCamlp4Ast.meta_list
          | StInc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
          | StMod of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_expr
          | StRecMod of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.module_binding
          | StMty of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.module_type
          | StOpn of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ident
          | StTyp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | StVal of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_flag *
              Camlp4.Sig.MakeCamlp4Ast.binding
          | StAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and class_type =
            CtNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | CtCon of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.virtual_flag *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CtFun of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CtSig of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp *
              Camlp4.Sig.MakeCamlp4Ast.class_sig_item
          | CtAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CtCol of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CtEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CtAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and class_sig_item =
            CgNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | CgCtr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CgSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_sig_item *
              Camlp4.Sig.MakeCamlp4Ast.class_sig_item
          | CgInh of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CgMth of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.private_flag *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CgVal of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.mutable_flag *
              Camlp4.Sig.MakeCamlp4Ast.virtual_flag *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CgVir of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.private_flag *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CgAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and class_expr =
            CeNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | CeApp of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_expr *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | CeCon of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.virtual_flag *
              Camlp4.Sig.MakeCamlp4Ast.ident * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CeFun of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt *
              Camlp4.Sig.MakeCamlp4Ast.class_expr
          | CeLet of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.rec_flag *
              Camlp4.Sig.MakeCamlp4Ast.binding *
              Camlp4.Sig.MakeCamlp4Ast.class_expr
          | CeStr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.patt *
              Camlp4.Sig.MakeCamlp4Ast.class_str_item
          | CeTyc of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_expr *
              Camlp4.Sig.MakeCamlp4Ast.class_type
          | CeAnd of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_expr *
              Camlp4.Sig.MakeCamlp4Ast.class_expr
          | CeEq of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_expr *
              Camlp4.Sig.MakeCamlp4Ast.class_expr
          | CeAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
        and class_str_item =
            CrNil of Camlp4.Sig.MakeCamlp4Ast.loc
          | CrSem of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.class_str_item *
              Camlp4.Sig.MakeCamlp4Ast.class_str_item
          | CrCtr of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.ctyp * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CrInh of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.override_flag *
              Camlp4.Sig.MakeCamlp4Ast.class_expr * string
          | CrIni of Camlp4.Sig.MakeCamlp4Ast.loc *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | CrMth of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.override_flag *
              Camlp4.Sig.MakeCamlp4Ast.private_flag *
              Camlp4.Sig.MakeCamlp4Ast.expr * Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CrVal of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.override_flag *
              Camlp4.Sig.MakeCamlp4Ast.mutable_flag *
              Camlp4.Sig.MakeCamlp4Ast.expr
          | CrVir of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.private_flag *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CrVvr of Camlp4.Sig.MakeCamlp4Ast.loc * string *
              Camlp4.Sig.MakeCamlp4Ast.mutable_flag *
              Camlp4.Sig.MakeCamlp4Ast.ctyp
          | CrAnt of Camlp4.Sig.MakeCamlp4Ast.loc * string
      end
  type ('a, 'b) stream_filter = ('a * 'b) Stream.t -> ('a * 'b) Stream.t
  module type AstFilters =
    sig
      module Ast : Camlp4Ast
      type 'a filter = '-> 'a
      val register_sig_item_filter :
        Camlp4.Sig.Ast.sig_item Camlp4.Sig.AstFilters.filter -> unit
      val register_str_item_filter :
        Camlp4.Sig.Ast.str_item Camlp4.Sig.AstFilters.filter -> unit
      val register_topphrase_filter :
        Camlp4.Sig.Ast.str_item Camlp4.Sig.AstFilters.filter -> unit
      val fold_interf_filters :
        ('-> Camlp4.Sig.Ast.sig_item Camlp4.Sig.AstFilters.filter -> 'a) ->
        '-> 'a
      val fold_implem_filters :
        ('-> Camlp4.Sig.Ast.str_item Camlp4.Sig.AstFilters.filter -> 'a) ->
        '-> 'a
      val fold_topphrase_filters :
        ('-> Camlp4.Sig.Ast.str_item Camlp4.Sig.AstFilters.filter -> 'a) ->
        '-> 'a
    end
  module type DynAst =
    sig
      module Ast : Ast
      type 'a tag
      val ctyp_tag : Camlp4.Sig.Ast.ctyp Camlp4.Sig.DynAst.tag
      val patt_tag : Camlp4.Sig.Ast.patt Camlp4.Sig.DynAst.tag
      val expr_tag : Camlp4.Sig.Ast.expr Camlp4.Sig.DynAst.tag
      val module_type_tag : Camlp4.Sig.Ast.module_type Camlp4.Sig.DynAst.tag
      val sig_item_tag : Camlp4.Sig.Ast.sig_item Camlp4.Sig.DynAst.tag
      val with_constr_tag : Camlp4.Sig.Ast.with_constr Camlp4.Sig.DynAst.tag
      val module_expr_tag : Camlp4.Sig.Ast.module_expr Camlp4.Sig.DynAst.tag
      val str_item_tag : Camlp4.Sig.Ast.str_item Camlp4.Sig.DynAst.tag
      val class_type_tag : Camlp4.Sig.Ast.class_type Camlp4.Sig.DynAst.tag
      val class_sig_item_tag :
        Camlp4.Sig.Ast.class_sig_item Camlp4.Sig.DynAst.tag
      val class_expr_tag : Camlp4.Sig.Ast.class_expr Camlp4.Sig.DynAst.tag
      val class_str_item_tag :
        Camlp4.Sig.Ast.class_str_item Camlp4.Sig.DynAst.tag
      val match_case_tag : Camlp4.Sig.Ast.match_case Camlp4.Sig.DynAst.tag
      val ident_tag : Camlp4.Sig.Ast.ident Camlp4.Sig.DynAst.tag
      val binding_tag : Camlp4.Sig.Ast.binding Camlp4.Sig.DynAst.tag
      val rec_binding_tag : Camlp4.Sig.Ast.rec_binding Camlp4.Sig.DynAst.tag
      val module_binding_tag :
        Camlp4.Sig.Ast.module_binding Camlp4.Sig.DynAst.tag
      val string_of_tag : 'Camlp4.Sig.DynAst.tag -> string
      module Pack :
        functor (X : sig type 'a t end->
          sig
            type pack
            val pack :
              'Camlp4.Sig.DynAst.tag ->
              'X.t -> Camlp4.Sig.DynAst.Pack.pack
            val unpack :
              'Camlp4.Sig.DynAst.tag ->
              Camlp4.Sig.DynAst.Pack.pack -> 'X.t
            val print_tag :
              Format.formatter -> Camlp4.Sig.DynAst.Pack.pack -> unit
          end
    end
  type quotation = {
    q_name : string;
    q_loc : string;
    q_shift : int;
    q_contents : string;
  }
  module type Quotation =
    sig
      module Ast : Ast
      module DynAst :
        sig
          module Ast :
            sig
              type loc = Ast.loc
              type meta_bool = Ast.meta_bool
              type 'a meta_option = 'Ast.meta_option
              type 'a meta_list = 'Ast.meta_list
              type ctyp = Ast.ctyp
              type patt = Ast.patt
              type expr = Ast.expr
              type module_type = Ast.module_type
              type sig_item = Ast.sig_item
              type with_constr = Ast.with_constr
              type module_expr = Ast.module_expr
              type str_item = Ast.str_item
              type class_type = Ast.class_type
              type class_sig_item = Ast.class_sig_item
              type class_expr = Ast.class_expr
              type class_str_item = Ast.class_str_item
              type match_case = Ast.match_case
              type ident = Ast.ident
              type binding = Ast.binding
              type rec_binding = Ast.rec_binding
              type module_binding = Ast.module_binding
              type rec_flag = Ast.rec_flag
              type direction_flag = Ast.direction_flag
              type mutable_flag = Ast.mutable_flag
              type private_flag = Ast.private_flag
              type virtual_flag = Ast.virtual_flag
              type row_var_flag = Ast.row_var_flag
              type override_flag = Ast.override_flag
              val loc_of_ctyp : ctyp -> loc
              val loc_of_patt : patt -> loc
              val loc_of_expr : expr -> loc
              val loc_of_module_type : module_type -> loc
              val loc_of_module_expr : module_expr -> loc
              val loc_of_sig_item : sig_item -> loc
              val loc_of_str_item : str_item -> loc
              val loc_of_class_type : class_type -> loc
              val loc_of_class_sig_item : class_sig_item -> loc
              val loc_of_class_expr : class_expr -> loc
              val loc_of_class_str_item : class_str_item -> loc
              val loc_of_with_constr : with_constr -> loc
              val loc_of_binding : binding -> loc
              val loc_of_rec_binding : rec_binding -> loc
              val loc_of_module_binding : module_binding -> loc
              val loc_of_match_case : match_case -> loc
              val loc_of_ident : ident -> loc
              class map :
                object ('a)
                  method binding : binding -> binding
                  method class_expr : class_expr -> class_expr
                  method class_sig_item : class_sig_item -> class_sig_item
                  method class_str_item : class_str_item -> class_str_item
                  method class_type : class_type -> class_type
                  method ctyp : ctyp -> ctyp
                  method direction_flag : direction_flag -> direction_flag
                  method expr : expr -> expr
                  method ident : ident -> ident
                  method list : ('-> '-> 'c) -> 'b list -> 'c list
                  method loc : loc -> loc
                  method match_case : match_case -> match_case
                  method meta_bool : meta_bool -> meta_bool
                  method meta_list :
                    ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                  method meta_option :
                    ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                  method module_binding : module_binding -> module_binding
                  method module_expr : module_expr -> module_expr
                  method module_type : module_type -> module_type
                  method mutable_flag : mutable_flag -> mutable_flag
                  method override_flag : override_flag -> override_flag
                  method patt : patt -> patt
                  method private_flag : private_flag -> private_flag
                  method rec_binding : rec_binding -> rec_binding
                  method rec_flag : rec_flag -> rec_flag
                  method row_var_flag : row_var_flag -> row_var_flag
                  method sig_item : sig_item -> sig_item
                  method str_item : str_item -> str_item
                  method string : string -> string
                  method unknown : '-> 'h
                  method virtual_flag : virtual_flag -> virtual_flag
                  method with_constr : with_constr -> with_constr
                end
              class fold :
                object ('a)
                  method binding : binding -> 'a
                  method class_expr : class_expr -> 'a
                  method class_sig_item : class_sig_item -> 'a
                  method class_str_item : class_str_item -> 'a
                  method class_type : class_type -> 'a
                  method ctyp : ctyp -> 'a
                  method direction_flag : direction_flag -> 'a
                  method expr : expr -> 'a
                  method ident : ident -> 'a
                  method list : ('-> '-> 'a) -> 'b list -> 'a
                  method loc : loc -> 'a
                  method match_case : match_case -> 'a
                  method meta_bool : meta_bool -> 'a
                  method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                  method meta_option :
                    ('-> '-> 'a) -> 'd meta_option -> 'a
                  method module_binding : module_binding -> 'a
                  method module_expr : module_expr -> 'a
                  method module_type : module_type -> 'a
                  method mutable_flag : mutable_flag -> 'a
                  method override_flag : override_flag -> 'a
                  method patt : patt -> 'a
                  method private_flag : private_flag -> 'a
                  method rec_binding : rec_binding -> 'a
                  method rec_flag : rec_flag -> 'a
                  method row_var_flag : row_var_flag -> 'a
                  method sig_item : sig_item -> 'a
                  method str_item : str_item -> 'a
                  method string : string -> 'a
                  method unknown : '-> 'a
                  method virtual_flag : virtual_flag -> 'a
                  method with_constr : with_constr -> 'a
                end
            end
          type 'a tag
          val ctyp_tag : Ast.ctyp tag
          val patt_tag : Ast.patt tag
          val expr_tag : Ast.expr tag
          val module_type_tag : Ast.module_type tag
          val sig_item_tag : Ast.sig_item tag
          val with_constr_tag : Ast.with_constr tag
          val module_expr_tag : Ast.module_expr tag
          val str_item_tag : Ast.str_item tag
          val class_type_tag : Ast.class_type tag
          val class_sig_item_tag : Ast.class_sig_item tag
          val class_expr_tag : Ast.class_expr tag
          val class_str_item_tag : Ast.class_str_item tag
          val match_case_tag : Ast.match_case tag
          val ident_tag : Ast.ident tag
          val binding_tag : Ast.binding tag
          val rec_binding_tag : Ast.rec_binding tag
          val module_binding_tag : Ast.module_binding tag
          val string_of_tag : 'a tag -> string
          module Pack :
            functor (X : sig type 'a t end->
              sig
                type pack
                val pack : 'a tag -> 'X.t -> pack
                val unpack : 'a tag -> pack -> 'X.t
                val print_tag : Format.formatter -> pack -> unit
              end
        end
      type 'a expand_fun =
          Camlp4.Sig.Ast.loc -> string option -> string -> 'a
      val add :
        string ->
        'Camlp4.Sig.Quotation.DynAst.tag ->
        'Camlp4.Sig.Quotation.expand_fun -> unit
      val find :
        string ->
        'Camlp4.Sig.Quotation.DynAst.tag ->
        'Camlp4.Sig.Quotation.expand_fun
      val default : string Pervasives.ref
      val parse_quotation_result :
        (Camlp4.Sig.Ast.loc -> string -> 'a) ->
        Camlp4.Sig.Ast.loc -> Camlp4.Sig.quotation -> string -> string -> 'a
      val translate : (string -> string) Pervasives.ref
      val expand :
        Camlp4.Sig.Ast.loc ->
        Camlp4.Sig.quotation -> 'Camlp4.Sig.Quotation.DynAst.tag -> 'a
      val dump_file : string option Pervasives.ref
      module Error : Error
    end
  module type Token =
    sig
      module Loc : Loc
      type t
      val to_string : Camlp4.Sig.Token.t -> string
      val print : Format.formatter -> Camlp4.Sig.Token.t -> unit
      val match_keyword : string -> Camlp4.Sig.Token.t -> bool
      val extract_string : Camlp4.Sig.Token.t -> string
      module Filter :
        sig
          type token_filter =
              (Camlp4.Sig.Token.t, Camlp4.Sig.Loc.t) Camlp4.Sig.stream_filter
          type t
          val mk : (string -> bool) -> Camlp4.Sig.Token.Filter.t
          val define_filter :
            Camlp4.Sig.Token.Filter.t ->
            (Camlp4.Sig.Token.Filter.token_filter ->
             Camlp4.Sig.Token.Filter.token_filter) ->
            unit
          val filter :
            Camlp4.Sig.Token.Filter.t -> Camlp4.Sig.Token.Filter.token_filter
          val keyword_added :
            Camlp4.Sig.Token.Filter.t -> string -> bool -> unit
          val keyword_removed : Camlp4.Sig.Token.Filter.t -> string -> unit
        end
      module Error : Error
    end
  type camlp4_token =
      KEYWORD of string
    | SYMBOL of string
    | LIDENT of string
    | UIDENT of string
    | ESCAPED_IDENT of string
    | INT of int * string
    | INT32 of int32 * string
    | INT64 of int64 * string
    | NATIVEINT of nativeint * string
    | FLOAT of float * string
    | CHAR of char * string
    | STRING of string * string
    | LABEL of string
    | OPTLABEL of string
    | QUOTATION of Camlp4.Sig.quotation
    | ANTIQUOT of string * string
    | COMMENT of string
    | BLANKS of string
    | NEWLINE
    | LINE_DIRECTIVE of int * string option
    | EOI
  module type Camlp4Token =
    sig
      module Loc : Loc
      type t = camlp4_token
      val to_string : t -> string
      val print : Format.formatter -> t -> unit
      val match_keyword : string -> t -> bool
      val extract_string : t -> string
      module Filter :
        sig
          type token_filter = (t, Loc.t) stream_filter
          type t
          val mk : (string -> bool) -> t
          val define_filter : t -> (token_filter -> token_filter) -> unit
          val filter : t -> token_filter
          val keyword_added : t -> string -> bool -> unit
          val keyword_removed : t -> string -> unit
        end
      module Error : Error
    end
  module type DynLoader =
    sig
      type t
      exception Error of string * string
      val mk :
        ?ocaml_stdlib:bool ->
        ?camlp4_stdlib:bool -> unit -> Camlp4.Sig.DynLoader.t
      val fold_load_path :
        Camlp4.Sig.DynLoader.t -> (string -> '-> 'a) -> '-> 'a
      val load : Camlp4.Sig.DynLoader.t -> string -> unit
      val include_dir : Camlp4.Sig.DynLoader.t -> string -> unit
      val find_in_path : Camlp4.Sig.DynLoader.t -> string -> string
      val is_native : bool
    end
  module Grammar :
    sig
      module type Action =
        sig
          type t
          val mk : '-> Camlp4.Sig.Grammar.Action.t
          val get : Camlp4.Sig.Grammar.Action.t -> 'a
          val getf : Camlp4.Sig.Grammar.Action.t -> '-> 'b
          val getf2 : Camlp4.Sig.Grammar.Action.t -> '-> '-> 'c
        end
      type assoc = NonA | RightA | LeftA
      type position =
          First
        | Last
        | Before of string
        | After of string
        | Level of string
      module type Structure =
        sig
          module Loc : Loc
          module Action : Action
          module Token :
            sig
              module Loc :
                sig
                  type t = Loc.t
                  val mk : string -> t
                  val ghost : t
                  val of_lexing_position : Lexing.position -> t
                  val to_ocaml_location : t -> Camlp4_import.Location.t
                  val of_ocaml_location : Camlp4_import.Location.t -> t
                  val of_lexbuf : Lexing.lexbuf -> t
                  val of_tuple :
                    string * int * int * int * int * int * int * bool -> t
                  val to_tuple :
                    t -> string * int * int * int * int * int * int * bool
                  val merge : t -> t -> t
                  val join : t -> t
                  val move : [ `both | `start | `stop ] -> int -> t -> t
                  val shift : int -> t -> t
                  val move_line : int -> t -> t
                  val file_name : t -> string
                  val start_line : t -> int
                  val stop_line : t -> int
                  val start_bol : t -> int
                  val stop_bol : t -> int
                  val start_off : t -> int
                  val stop_off : t -> int
                  val start_pos : t -> Lexing.position
                  val stop_pos : t -> Lexing.position
                  val is_ghost : t -> bool
                  val ghostify : t -> t
                  val set_file_name : string -> t -> t
                  val strictly_before : t -> t -> bool
                  val make_absolute : t -> t
                  val print : Format.formatter -> t -> unit
                  val dump : Format.formatter -> t -> unit
                  val to_string : t -> string
                  exception Exc_located of t * exn
                  val raise : t -> exn -> 'a
                  val name : string ref
                end
              type t
              val to_string : t -> string
              val print : Format.formatter -> t -> unit
              val match_keyword : string -> t -> bool
              val extract_string : t -> string
              module Filter :
                sig
                  type token_filter = (t, Loc.t) stream_filter
                  type t
                  val mk : (string -> bool) -> t
                  val define_filter :
                    t -> (token_filter -> token_filter) -> unit
                  val filter : t -> token_filter
                  val keyword_added : t -> string -> bool -> unit
                  val keyword_removed : t -> string -> unit
                end
              module Error : Error
            end
          type gram
          type internal_entry
          type tree
          type token_pattern =
              (Camlp4.Sig.Grammar.Structure.Token.t -> bool) * string
          type token_info
          type token_stream =
              (Camlp4.Sig.Grammar.Structure.Token.t *
               Camlp4.Sig.Grammar.Structure.token_info)
              Stream.t
          val token_location :
            Camlp4.Sig.Grammar.Structure.token_info -> Camlp4.Sig.Loc.t
          type symbol =
              Smeta of string * Camlp4.Sig.Grammar.Structure.symbol list *
                Camlp4.Sig.Grammar.Action.t
            | Snterm of Camlp4.Sig.Grammar.Structure.internal_entry
            | Snterml of Camlp4.Sig.Grammar.Structure.internal_entry * string
            | Slist0 of Camlp4.Sig.Grammar.Structure.symbol
            | Slist0sep of Camlp4.Sig.Grammar.Structure.symbol *
                Camlp4.Sig.Grammar.Structure.symbol
            | Slist1 of Camlp4.Sig.Grammar.Structure.symbol
            | Slist1sep of Camlp4.Sig.Grammar.Structure.symbol *
                Camlp4.Sig.Grammar.Structure.symbol
            | Sopt of Camlp4.Sig.Grammar.Structure.symbol
            | Stry of Camlp4.Sig.Grammar.Structure.symbol
            | Sself
            | Snext
            | Stoken of Camlp4.Sig.Grammar.Structure.token_pattern
            | Skeyword of string
            | Stree of Camlp4.Sig.Grammar.Structure.tree
          type production_rule =
              Camlp4.Sig.Grammar.Structure.symbol list *
              Camlp4.Sig.Grammar.Action.t
          type single_extend_statment =
              string option * Camlp4.Sig.Grammar.assoc option *
              Camlp4.Sig.Grammar.Structure.production_rule list
          type extend_statment =
              Camlp4.Sig.Grammar.position option *
              Camlp4.Sig.Grammar.Structure.single_extend_statment list
          type delete_statment = Camlp4.Sig.Grammar.Structure.symbol list
          type ('a, 'b, 'c) fold =
              Camlp4.Sig.Grammar.Structure.internal_entry ->
              Camlp4.Sig.Grammar.Structure.symbol list ->
              ('Stream.t -> 'b) -> 'Stream.t -> 'c
          type ('a, 'b, 'c) foldsep =
              Camlp4.Sig.Grammar.Structure.internal_entry ->
              Camlp4.Sig.Grammar.Structure.symbol list ->
              ('Stream.t -> 'b) ->
              ('Stream.t -> unit) -> 'Stream.t -> 'c
        end
      module type Dynamic =
        sig
          module Loc : Loc
          module Action : Action
          module Token :
            sig
              module Loc :
                sig
                  type t = Loc.t
                  val mk : string -> t
                  val ghost : t
                  val of_lexing_position : Lexing.position -> t
                  val to_ocaml_location : t -> Camlp4_import.Location.t
                  val of_ocaml_location : Camlp4_import.Location.t -> t
                  val of_lexbuf : Lexing.lexbuf -> t
                  val of_tuple :
                    string * int * int * int * int * int * int * bool -> t
                  val to_tuple :
                    t -> string * int * int * int * int * int * int * bool
                  val merge : t -> t -> t
                  val join : t -> t
                  val move : [ `both | `start | `stop ] -> int -> t -> t
                  val shift : int -> t -> t
                  val move_line : int -> t -> t
                  val file_name : t -> string
                  val start_line : t -> int
                  val stop_line : t -> int
                  val start_bol : t -> int
                  val stop_bol : t -> int
                  val start_off : t -> int
                  val stop_off : t -> int
                  val start_pos : t -> Lexing.position
                  val stop_pos : t -> Lexing.position
                  val is_ghost : t -> bool
                  val ghostify : t -> t
                  val set_file_name : string -> t -> t
                  val strictly_before : t -> t -> bool
                  val make_absolute : t -> t
                  val print : Format.formatter -> t -> unit
                  val dump : Format.formatter -> t -> unit
                  val to_string : t -> string
                  exception Exc_located of t * exn
                  val raise : t -> exn -> 'a
                  val name : string ref
                end
              type t
              val to_string : t -> string
              val print : Format.formatter -> t -> unit
              val match_keyword : string -> t -> bool
              val extract_string : t -> string
              module Filter :
                sig
                  type token_filter = (t, Loc.t) stream_filter
                  type t
                  val mk : (string -> bool) -> t
                  val define_filter :
                    t -> (token_filter -> token_filter) -> unit
                  val filter : t -> token_filter
                  val keyword_added : t -> string -> bool -> unit
                  val keyword_removed : t -> string -> unit
                end
              module Error : Error
            end
          type gram
          type internal_entry
          type tree
          type token_pattern = (Token.t -> bool) * string
          type token_info
          type token_stream = (Token.t * token_info) Stream.t
          val token_location : token_info -> Loc.t
          type symbol =
              Smeta of string * symbol list * Action.t
            | Snterm of internal_entry
            | Snterml of internal_entry * string
            | Slist0 of symbol
            | Slist0sep of symbol * symbol
            | Slist1 of symbol
            | Slist1sep of symbol * symbol
            | Sopt of symbol
            | Stry of symbol
            | Sself
            | Snext
            | Stoken of token_pattern
            | Skeyword of string
            | Stree of tree
          type production_rule = symbol list * Action.t
          type single_extend_statment =
              string option * assoc option * production_rule list
          type extend_statment =
              position option * single_extend_statment list
          type delete_statment = symbol list
          type ('a, 'b, 'c) fold =
              internal_entry ->
              symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
          type ('a, 'b, 'c) foldsep =
              internal_entry ->
              symbol list ->
              ('Stream.t -> 'b) ->
              ('Stream.t -> unit) -> 'Stream.t -> 'c
          val mk : unit -> gram
          module Entry :
            sig
              type 'a t
              val mk :
                gram -> string -> 'Camlp4.Sig.Grammar.Dynamic.Entry.t
              val of_parser :
                gram ->
                string ->
                (token_stream -> 'a) -> 'Camlp4.Sig.Grammar.Dynamic.Entry.t
              val setup_parser :
                'Camlp4.Sig.Grammar.Dynamic.Entry.t ->
                (token_stream -> 'a) -> unit
              val name : 'Camlp4.Sig.Grammar.Dynamic.Entry.t -> string
              val print :
                Format.formatter ->
                'Camlp4.Sig.Grammar.Dynamic.Entry.t -> unit
              val dump :
                Format.formatter ->
                'Camlp4.Sig.Grammar.Dynamic.Entry.t -> unit
              val obj :
                'Camlp4.Sig.Grammar.Dynamic.Entry.t -> internal_entry
              val clear : 'Camlp4.Sig.Grammar.Dynamic.Entry.t -> unit
            end
          val get_filter : gram -> Camlp4.Sig.Token.Filter.t
          type 'a not_filtered
          val extend :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t -> extend_statment -> unit
          val delete_rule :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t -> delete_statment -> unit
          val srules :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t ->
            (symbol list * Camlp4.Sig.Grammar.Action.t) list -> symbol
          val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
          val lex :
            gram ->
            Camlp4.Sig.Loc.t ->
            char Stream.t ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Dynamic.not_filtered
          val lex_string :
            gram ->
            Camlp4.Sig.Loc.t ->
            string ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Dynamic.not_filtered
          val filter :
            gram ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Dynamic.not_filtered -> token_stream
          val parse :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t ->
            Camlp4.Sig.Loc.t -> char Stream.t -> 'a
          val parse_string :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t ->
            Camlp4.Sig.Loc.t -> string -> 'a
          val parse_tokens_before_filter :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Dynamic.not_filtered -> 'a
          val parse_tokens_after_filter :
            'Camlp4.Sig.Grammar.Dynamic.Entry.t -> token_stream -> 'a
        end
      module type Static =
        sig
          module Loc : Loc
          module Action : Action
          module Token :
            sig
              module Loc :
                sig
                  type t = Loc.t
                  val mk : string -> t
                  val ghost : t
                  val of_lexing_position : Lexing.position -> t
                  val to_ocaml_location : t -> Camlp4_import.Location.t
                  val of_ocaml_location : Camlp4_import.Location.t -> t
                  val of_lexbuf : Lexing.lexbuf -> t
                  val of_tuple :
                    string * int * int * int * int * int * int * bool -> t
                  val to_tuple :
                    t -> string * int * int * int * int * int * int * bool
                  val merge : t -> t -> t
                  val join : t -> t
                  val move : [ `both | `start | `stop ] -> int -> t -> t
                  val shift : int -> t -> t
                  val move_line : int -> t -> t
                  val file_name : t -> string
                  val start_line : t -> int
                  val stop_line : t -> int
                  val start_bol : t -> int
                  val stop_bol : t -> int
                  val start_off : t -> int
                  val stop_off : t -> int
                  val start_pos : t -> Lexing.position
                  val stop_pos : t -> Lexing.position
                  val is_ghost : t -> bool
                  val ghostify : t -> t
                  val set_file_name : string -> t -> t
                  val strictly_before : t -> t -> bool
                  val make_absolute : t -> t
                  val print : Format.formatter -> t -> unit
                  val dump : Format.formatter -> t -> unit
                  val to_string : t -> string
                  exception Exc_located of t * exn
                  val raise : t -> exn -> 'a
                  val name : string ref
                end
              type t
              val to_string : t -> string
              val print : Format.formatter -> t -> unit
              val match_keyword : string -> t -> bool
              val extract_string : t -> string
              module Filter :
                sig
                  type token_filter = (t, Loc.t) stream_filter
                  type t
                  val mk : (string -> bool) -> t
                  val define_filter :
                    t -> (token_filter -> token_filter) -> unit
                  val filter : t -> token_filter
                  val keyword_added : t -> string -> bool -> unit
                  val keyword_removed : t -> string -> unit
                end
              module Error : Error
            end
          type gram
          type internal_entry
          type tree
          type token_pattern = (Token.t -> bool) * string
          type token_info
          type token_stream = (Token.t * token_info) Stream.t
          val token_location : token_info -> Loc.t
          type symbol =
              Smeta of string * symbol list * Action.t
            | Snterm of internal_entry
            | Snterml of internal_entry * string
            | Slist0 of symbol
            | Slist0sep of symbol * symbol
            | Slist1 of symbol
            | Slist1sep of symbol * symbol
            | Sopt of symbol
            | Stry of symbol
            | Sself
            | Snext
            | Stoken of token_pattern
            | Skeyword of string
            | Stree of tree
          type production_rule = symbol list * Action.t
          type single_extend_statment =
              string option * assoc option * production_rule list
          type extend_statment =
              position option * single_extend_statment list
          type delete_statment = symbol list
          type ('a, 'b, 'c) fold =
              internal_entry ->
              symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
          type ('a, 'b, 'c) foldsep =
              internal_entry ->
              symbol list ->
              ('Stream.t -> 'b) ->
              ('Stream.t -> unit) -> 'Stream.t -> 'c
          module Entry :
            sig
              type 'a t
              val mk : string -> 'Camlp4.Sig.Grammar.Static.Entry.t
              val of_parser :
                string ->
                (token_stream -> 'a) -> 'Camlp4.Sig.Grammar.Static.Entry.t
              val setup_parser :
                'Camlp4.Sig.Grammar.Static.Entry.t ->
                (token_stream -> 'a) -> unit
              val name : 'Camlp4.Sig.Grammar.Static.Entry.t -> string
              val print :
                Format.formatter ->
                'Camlp4.Sig.Grammar.Static.Entry.t -> unit
              val dump :
                Format.formatter ->
                'Camlp4.Sig.Grammar.Static.Entry.t -> unit
              val obj :
                'Camlp4.Sig.Grammar.Static.Entry.t -> internal_entry
              val clear : 'Camlp4.Sig.Grammar.Static.Entry.t -> unit
            end
          val get_filter : unit -> Camlp4.Sig.Token.Filter.t
          type 'a not_filtered
          val extend :
            'Camlp4.Sig.Grammar.Static.Entry.t -> extend_statment -> unit
          val delete_rule :
            'Camlp4.Sig.Grammar.Static.Entry.t -> delete_statment -> unit
          val srules :
            'Camlp4.Sig.Grammar.Static.Entry.t ->
            (symbol list * Camlp4.Sig.Grammar.Action.t) list -> symbol
          val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
          val lex :
            Camlp4.Sig.Loc.t ->
            char Stream.t ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Static.not_filtered
          val lex_string :
            Camlp4.Sig.Loc.t ->
            string ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Static.not_filtered
          val filter :
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Static.not_filtered -> token_stream
          val parse :
            'Camlp4.Sig.Grammar.Static.Entry.t ->
            Camlp4.Sig.Loc.t -> char Stream.t -> 'a
          val parse_string :
            'Camlp4.Sig.Grammar.Static.Entry.t ->
            Camlp4.Sig.Loc.t -> string -> 'a
          val parse_tokens_before_filter :
            'Camlp4.Sig.Grammar.Static.Entry.t ->
            (Camlp4.Sig.Token.t * Camlp4.Sig.Loc.t) Stream.t
            Camlp4.Sig.Grammar.Static.not_filtered -> 'a
          val parse_tokens_after_filter :
            'Camlp4.Sig.Grammar.Static.Entry.t -> token_stream -> 'a
        end
    end
  module type Lexer =
    sig
      module Loc : Loc
      module Token :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          type t
          val to_string : t -> string
          val print : Format.formatter -> t -> unit
          val match_keyword : string -> t -> bool
          val extract_string : t -> string
          module Filter :
            sig
              type token_filter = (t, Loc.t) stream_filter
              type t
              val mk : (string -> bool) -> t
              val define_filter : t -> (token_filter -> token_filter) -> unit
              val filter : t -> token_filter
              val keyword_added : t -> string -> bool -> unit
              val keyword_removed : t -> string -> unit
            end
          module Error : Error
        end
      module Error : Error
      val mk :
        unit ->
        Camlp4.Sig.Loc.t ->
        char Stream.t ->
        (Camlp4.Sig.Lexer.Token.t * Camlp4.Sig.Loc.t) Stream.t
    end
  module Parser :
    functor (Ast : Ast->
      sig
        module type SIMPLE =
          sig
            val parse_expr :
              Camlp4.Sig.Ast.loc -> string -> Camlp4.Sig.Ast.expr
            val parse_patt :
              Camlp4.Sig.Ast.loc -> string -> Camlp4.Sig.Ast.patt
          end
        module type S =
          sig
            val parse_implem :
              ?directive_handler:(Camlp4.Sig.Ast.str_item ->
                                  Camlp4.Sig.Ast.str_item option) ->
              Camlp4.Sig.Ast.loc -> char Stream.t -> Camlp4.Sig.Ast.str_item
            val parse_interf :
              ?directive_handler:(Camlp4.Sig.Ast.sig_item ->
                                  Camlp4.Sig.Ast.sig_item option) ->
              Camlp4.Sig.Ast.loc -> char Stream.t -> Camlp4.Sig.Ast.sig_item
          end
      end
  module Printer :
    functor (Ast : Ast->
      sig
        module type S =
          sig
            val print_interf :
              ?input_file:string ->
              ?output_file:string -> Camlp4.Sig.Ast.sig_item -> unit
            val print_implem :
              ?input_file:string ->
              ?output_file:string -> Camlp4.Sig.Ast.str_item -> unit
          end
      end
  module type Syntax =
    sig
      module Loc : Loc
      module Ast :
        sig
          type loc = Loc.t
          type meta_bool
          type 'a meta_option
          type 'a meta_list
          type ctyp
          type patt
          type expr
          type module_type
          type sig_item
          type with_constr
          type module_expr
          type str_item
          type class_type
          type class_sig_item
          type class_expr
          type class_str_item
          type match_case
          type ident
          type binding
          type rec_binding
          type module_binding
          type rec_flag
          type direction_flag
          type mutable_flag
          type private_flag
          type virtual_flag
          type row_var_flag
          type override_flag
          val loc_of_ctyp : ctyp -> loc
          val loc_of_patt : patt -> loc
          val loc_of_expr : expr -> loc
          val loc_of_module_type : module_type -> loc
          val loc_of_module_expr : module_expr -> loc
          val loc_of_sig_item : sig_item -> loc
          val loc_of_str_item : str_item -> loc
          val loc_of_class_type : class_type -> loc
          val loc_of_class_sig_item : class_sig_item -> loc
          val loc_of_class_expr : class_expr -> loc
          val loc_of_class_str_item : class_str_item -> loc
          val loc_of_with_constr : with_constr -> loc
          val loc_of_binding : binding -> loc
          val loc_of_rec_binding : rec_binding -> loc
          val loc_of_module_binding : module_binding -> loc
          val loc_of_match_case : match_case -> loc
          val loc_of_ident : ident -> loc
          class map :
            object ('a)
              method binding : binding -> binding
              method class_expr : class_expr -> class_expr
              method class_sig_item : class_sig_item -> class_sig_item
              method class_str_item : class_str_item -> class_str_item
              method class_type : class_type -> class_type
              method ctyp : ctyp -> ctyp
              method direction_flag : direction_flag -> direction_flag
              method expr : expr -> expr
              method ident : ident -> ident
              method list : ('-> '-> 'c) -> 'b list -> 'c list
              method loc : loc -> loc
              method match_case : match_case -> match_case
              method meta_bool : meta_bool -> meta_bool
              method meta_list :
                ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
              method meta_option :
                ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
              method module_binding : module_binding -> module_binding
              method module_expr : module_expr -> module_expr
              method module_type : module_type -> module_type
              method mutable_flag : mutable_flag -> mutable_flag
              method override_flag : override_flag -> override_flag
              method patt : patt -> patt
              method private_flag : private_flag -> private_flag
              method rec_binding : rec_binding -> rec_binding
              method rec_flag : rec_flag -> rec_flag
              method row_var_flag : row_var_flag -> row_var_flag
              method sig_item : sig_item -> sig_item
              method str_item : str_item -> str_item
              method string : string -> string
              method unknown : '-> 'h
              method virtual_flag : virtual_flag -> virtual_flag
              method with_constr : with_constr -> with_constr
            end
          class fold :
            object ('a)
              method binding : binding -> 'a
              method class_expr : class_expr -> 'a
              method class_sig_item : class_sig_item -> 'a
              method class_str_item : class_str_item -> 'a
              method class_type : class_type -> 'a
              method ctyp : ctyp -> 'a
              method direction_flag : direction_flag -> 'a
              method expr : expr -> 'a
              method ident : ident -> 'a
              method list : ('-> '-> 'a) -> 'b list -> 'a
              method loc : loc -> 'a
              method match_case : match_case -> 'a
              method meta_bool : meta_bool -> 'a
              method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
              method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
              method module_binding : module_binding -> 'a
              method module_expr : module_expr -> 'a
              method module_type : module_type -> 'a
              method mutable_flag : mutable_flag -> 'a
              method override_flag : override_flag -> 'a
              method patt : patt -> 'a
              method private_flag : private_flag -> 'a
              method rec_binding : rec_binding -> 'a
              method rec_flag : rec_flag -> 'a
              method row_var_flag : row_var_flag -> 'a
              method sig_item : sig_item -> 'a
              method str_item : str_item -> 'a
              method string : string -> 'a
              method unknown : '-> 'a
              method virtual_flag : virtual_flag -> 'a
              method with_constr : with_constr -> 'a
            end
        end
      module Token :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          type t
          val to_string : t -> string
          val print : Format.formatter -> t -> unit
          val match_keyword : string -> t -> bool
          val extract_string : t -> string
          module Filter :
            sig
              type token_filter = (t, Loc.t) stream_filter
              type t
              val mk : (string -> bool) -> t
              val define_filter : t -> (token_filter -> token_filter) -> unit
              val filter : t -> token_filter
              val keyword_added : t -> string -> bool -> unit
              val keyword_removed : t -> string -> unit
            end
          module Error : Error
        end
      module Gram :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          module Action : Grammar.Action
          module Token :
            sig
              module Loc :
                sig
                  type t = Loc.t
                  val mk : string -> t
                  val ghost : t
                  val of_lexing_position : Lexing.position -> t
                  val to_ocaml_location : t -> Camlp4_import.Location.t
                  val of_ocaml_location : Camlp4_import.Location.t -> t
                  val of_lexbuf : Lexing.lexbuf -> t
                  val of_tuple :
                    string * int * int * int * int * int * int * bool -> t
                  val to_tuple :
                    t -> string * int * int * int * int * int * int * bool
                  val merge : t -> t -> t
                  val join : t -> t
                  val move : [ `both | `start | `stop ] -> int -> t -> t
                  val shift : int -> t -> t
                  val move_line : int -> t -> t
                  val file_name : t -> string
                  val start_line : t -> int
                  val stop_line : t -> int
                  val start_bol : t -> int
                  val stop_bol : t -> int
                  val start_off : t -> int
                  val stop_off : t -> int
                  val start_pos : t -> Lexing.position
                  val stop_pos : t -> Lexing.position
                  val is_ghost : t -> bool
                  val ghostify : t -> t
                  val set_file_name : string -> t -> t
                  val strictly_before : t -> t -> bool
                  val make_absolute : t -> t
                  val print : Format.formatter -> t -> unit
                  val dump : Format.formatter -> t -> unit
                  val to_string : t -> string
                  exception Exc_located of t * exn
                  val raise : t -> exn -> 'a
                  val name : string ref
                end
              type t = Token.t
              val to_string : t -> string
              val print : Format.formatter -> t -> unit
              val match_keyword : string -> t -> bool
              val extract_string : t -> string
              module Filter :
                sig
                  type token_filter = (t, Loc.t) stream_filter
                  type t = Token.Filter.t
                  val mk : (string -> bool) -> t
                  val define_filter :
                    t -> (token_filter -> token_filter) -> unit
                  val filter : t -> token_filter
                  val keyword_added : t -> string -> bool -> unit
                  val keyword_removed : t -> string -> unit
                end
              module Error :
                sig
                  type t = Token.Error.t
                  exception E of t
                  val to_string : t -> string
                  val print : Format.formatter -> t -> unit
                end
            end
          type gram
          type internal_entry
          type tree
          type token_pattern = (Token.t -> bool) * string
          type token_info
          type token_stream = (Token.t * token_info) Stream.t
          val token_location : token_info -> Loc.t
          type symbol =
              Smeta of string * symbol list * Action.t
            | Snterm of internal_entry
            | Snterml of internal_entry * string
            | Slist0 of symbol
            | Slist0sep of symbol * symbol
            | Slist1 of symbol
            | Slist1sep of symbol * symbol
            | Sopt of symbol
            | Stry of symbol
            | Sself
            | Snext
            | Stoken of token_pattern
            | Skeyword of string
            | Stree of tree
          type production_rule = symbol list * Action.t
          type single_extend_statment =
              string option * Grammar.assoc option * production_rule list
          type extend_statment =
              Grammar.position option * single_extend_statment list
          type delete_statment = symbol list
          type ('a, 'b, 'c) fold =
              internal_entry ->
              symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
          type ('a, 'b, 'c) foldsep =
              internal_entry ->
              symbol list ->
              ('Stream.t -> 'b) ->
              ('Stream.t -> unit) -> 'Stream.t -> 'c
          module Entry :
            sig
              type 'a t
              val mk : string -> 'a t
              val of_parser : string -> (token_stream -> 'a) -> 'a t
              val setup_parser : 'a t -> (token_stream -> 'a) -> unit
              val name : 'a t -> string
              val print : Format.formatter -> 'a t -> unit
              val dump : Format.formatter -> 'a t -> unit
              val obj : 'a t -> internal_entry
              val clear : 'a t -> unit
            end
          val get_filter : unit -> Token.Filter.t
          type 'a not_filtered
          val extend : 'Entry.t -> extend_statment -> unit
          val delete_rule : 'Entry.t -> delete_statment -> unit
          val srules : 'Entry.t -> (symbol list * Action.t) list -> symbol
          val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
          val lex :
            Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t not_filtered
          val lex_string :
            Loc.t -> string -> (Token.t * Loc.t) Stream.t not_filtered
          val filter :
            (Token.t * Loc.t) Stream.t not_filtered -> token_stream
          val parse : 'Entry.t -> Loc.t -> char Stream.t -> 'a
          val parse_string : 'Entry.t -> Loc.t -> string -> 'a
          val parse_tokens_before_filter :
            'Entry.t -> (Token.t * Loc.t) Stream.t not_filtered -> 'a
          val parse_tokens_after_filter : 'Entry.t -> token_stream -> 'a
        end
      module Quotation :
        sig
          module Ast :
            sig
              type loc = Loc.t
              type meta_bool = Ast.meta_bool
              type 'a meta_option = 'Ast.meta_option
              type 'a meta_list = 'Ast.meta_list
              type ctyp = Ast.ctyp
              type patt = Ast.patt
              type expr = Ast.expr
              type module_type = Ast.module_type
              type sig_item = Ast.sig_item
              type with_constr = Ast.with_constr
              type module_expr = Ast.module_expr
              type str_item = Ast.str_item
              type class_type = Ast.class_type
              type class_sig_item = Ast.class_sig_item
              type class_expr = Ast.class_expr
              type class_str_item = Ast.class_str_item
              type match_case = Ast.match_case
              type ident = Ast.ident
              type binding = Ast.binding
              type rec_binding = Ast.rec_binding
              type module_binding = Ast.module_binding
              type rec_flag = Ast.rec_flag
              type direction_flag = Ast.direction_flag
              type mutable_flag = Ast.mutable_flag
              type private_flag = Ast.private_flag
              type virtual_flag = Ast.virtual_flag
              type row_var_flag = Ast.row_var_flag
              type override_flag = Ast.override_flag
              val loc_of_ctyp : ctyp -> loc
              val loc_of_patt : patt -> loc
              val loc_of_expr : expr -> loc
              val loc_of_module_type : module_type -> loc
              val loc_of_module_expr : module_expr -> loc
              val loc_of_sig_item : sig_item -> loc
              val loc_of_str_item : str_item -> loc
              val loc_of_class_type : class_type -> loc
              val loc_of_class_sig_item : class_sig_item -> loc
              val loc_of_class_expr : class_expr -> loc
              val loc_of_class_str_item : class_str_item -> loc
              val loc_of_with_constr : with_constr -> loc
              val loc_of_binding : binding -> loc
              val loc_of_rec_binding : rec_binding -> loc
              val loc_of_module_binding : module_binding -> loc
              val loc_of_match_case : match_case -> loc
              val loc_of_ident : ident -> loc
              class map :
                object ('a)
                  method binding : binding -> binding
                  method class_expr : class_expr -> class_expr
                  method class_sig_item : class_sig_item -> class_sig_item
                  method class_str_item : class_str_item -> class_str_item
                  method class_type : class_type -> class_type
                  method ctyp : ctyp -> ctyp
                  method direction_flag : direction_flag -> direction_flag
                  method expr : expr -> expr
                  method ident : ident -> ident
                  method list : ('-> '-> 'c) -> 'b list -> 'c list
                  method loc : loc -> loc
                  method match_case : match_case -> match_case
                  method meta_bool : meta_bool -> meta_bool
                  method meta_list :
                    ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                  method meta_option :
                    ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                  method module_binding : module_binding -> module_binding
                  method module_expr : module_expr -> module_expr
                  method module_type : module_type -> module_type
                  method mutable_flag : mutable_flag -> mutable_flag
                  method override_flag : override_flag -> override_flag
                  method patt : patt -> patt
                  method private_flag : private_flag -> private_flag
                  method rec_binding : rec_binding -> rec_binding
                  method rec_flag : rec_flag -> rec_flag
                  method row_var_flag : row_var_flag -> row_var_flag
                  method sig_item : sig_item -> sig_item
                  method str_item : str_item -> str_item
                  method string : string -> string
                  method unknown : '-> 'h
                  method virtual_flag : virtual_flag -> virtual_flag
                  method with_constr : with_constr -> with_constr
                end
              class fold :
                object ('a)
                  method binding : binding -> 'a
                  method class_expr : class_expr -> 'a
                  method class_sig_item : class_sig_item -> 'a
                  method class_str_item : class_str_item -> 'a
                  method class_type : class_type -> 'a
                  method ctyp : ctyp -> 'a
                  method direction_flag : direction_flag -> 'a
                  method expr : expr -> 'a
                  method ident : ident -> 'a
                  method list : ('-> '-> 'a) -> 'b list -> 'a
                  method loc : loc -> 'a
                  method match_case : match_case -> 'a
                  method meta_bool : meta_bool -> 'a
                  method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                  method meta_option :
                    ('-> '-> 'a) -> 'd meta_option -> 'a
                  method module_binding : module_binding -> 'a
                  method module_expr : module_expr -> 'a
                  method module_type : module_type -> 'a
                  method mutable_flag : mutable_flag -> 'a
                  method override_flag : override_flag -> 'a
                  method patt : patt -> 'a
                  method private_flag : private_flag -> 'a
                  method rec_binding : rec_binding -> 'a
                  method rec_flag : rec_flag -> 'a
                  method row_var_flag : row_var_flag -> 'a
                  method sig_item : sig_item -> 'a
                  method str_item : str_item -> 'a
                  method string : string -> 'a
                  method unknown : '-> 'a
                  method virtual_flag : virtual_flag -> 'a
                  method with_constr : with_constr -> 'a
                end
            end
          module DynAst :
            sig
              module Ast :
                sig
                  type loc = Ast.loc
                  type meta_bool = Ast.meta_bool
                  type 'a meta_option = 'Ast.meta_option
                  type 'a meta_list = 'Ast.meta_list
                  type ctyp = Ast.ctyp
                  type patt = Ast.patt
                  type expr = Ast.expr
                  type module_type = Ast.module_type
                  type sig_item = Ast.sig_item
                  type with_constr = Ast.with_constr
                  type module_expr = Ast.module_expr
                  type str_item = Ast.str_item
                  type class_type = Ast.class_type
                  type class_sig_item = Ast.class_sig_item
                  type class_expr = Ast.class_expr
                  type class_str_item = Ast.class_str_item
                  type match_case = Ast.match_case
                  type ident = Ast.ident
                  type binding = Ast.binding
                  type rec_binding = Ast.rec_binding
                  type module_binding = Ast.module_binding
                  type rec_flag = Ast.rec_flag
                  type direction_flag = Ast.direction_flag
                  type mutable_flag = Ast.mutable_flag
                  type private_flag = Ast.private_flag
                  type virtual_flag = Ast.virtual_flag
                  type row_var_flag = Ast.row_var_flag
                  type override_flag = Ast.override_flag
                  val loc_of_ctyp : ctyp -> loc
                  val loc_of_patt : patt -> loc
                  val loc_of_expr : expr -> loc
                  val loc_of_module_type : module_type -> loc
                  val loc_of_module_expr : module_expr -> loc
                  val loc_of_sig_item : sig_item -> loc
                  val loc_of_str_item : str_item -> loc
                  val loc_of_class_type : class_type -> loc
                  val loc_of_class_sig_item : class_sig_item -> loc
                  val loc_of_class_expr : class_expr -> loc
                  val loc_of_class_str_item : class_str_item -> loc
                  val loc_of_with_constr : with_constr -> loc
                  val loc_of_binding : binding -> loc
                  val loc_of_rec_binding : rec_binding -> loc
                  val loc_of_module_binding : module_binding -> loc
                  val loc_of_match_case : match_case -> loc
                  val loc_of_ident : ident -> loc
                  class map :
                    object ('a)
                      method binding : binding -> binding
                      method class_expr : class_expr -> class_expr
                      method class_sig_item :
                        class_sig_item -> class_sig_item
                      method class_str_item :
                        class_str_item -> class_str_item
                      method class_type : class_type -> class_type
                      method ctyp : ctyp -> ctyp
                      method direction_flag :
                        direction_flag -> direction_flag
                      method expr : expr -> expr
                      method ident : ident -> ident
                      method list : ('-> '-> 'c) -> 'b list -> 'c list
                      method loc : loc -> loc
                      method match_case : match_case -> match_case
                      method meta_bool : meta_bool -> meta_bool
                      method meta_list :
                        ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                      method meta_option :
                        ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                      method module_binding :
                        module_binding -> module_binding
                      method module_expr : module_expr -> module_expr
                      method module_type : module_type -> module_type
                      method mutable_flag : mutable_flag -> mutable_flag
                      method override_flag : override_flag -> override_flag
                      method patt : patt -> patt
                      method private_flag : private_flag -> private_flag
                      method rec_binding : rec_binding -> rec_binding
                      method rec_flag : rec_flag -> rec_flag
                      method row_var_flag : row_var_flag -> row_var_flag
                      method sig_item : sig_item -> sig_item
                      method str_item : str_item -> str_item
                      method string : string -> string
                      method unknown : '-> 'h
                      method virtual_flag : virtual_flag -> virtual_flag
                      method with_constr : with_constr -> with_constr
                    end
                  class fold :
                    object ('a)
                      method binding : binding -> 'a
                      method class_expr : class_expr -> 'a
                      method class_sig_item : class_sig_item -> 'a
                      method class_str_item : class_str_item -> 'a
                      method class_type : class_type -> 'a
                      method ctyp : ctyp -> 'a
                      method direction_flag : direction_flag -> 'a
                      method expr : expr -> 'a
                      method ident : ident -> 'a
                      method list : ('-> '-> 'a) -> 'b list -> 'a
                      method loc : loc -> 'a
                      method match_case : match_case -> 'a
                      method meta_bool : meta_bool -> 'a
                      method meta_list :
                        ('-> '-> 'a) -> 'c meta_list -> 'a
                      method meta_option :
                        ('-> '-> 'a) -> 'd meta_option -> 'a
                      method module_binding : module_binding -> 'a
                      method module_expr : module_expr -> 'a
                      method module_type : module_type -> 'a
                      method mutable_flag : mutable_flag -> 'a
                      method override_flag : override_flag -> 'a
                      method patt : patt -> 'a
                      method private_flag : private_flag -> 'a
                      method rec_binding : rec_binding -> 'a
                      method rec_flag : rec_flag -> 'a
                      method row_var_flag : row_var_flag -> 'a
                      method sig_item : sig_item -> 'a
                      method str_item : str_item -> 'a
                      method string : string -> 'a
                      method unknown : '-> 'a
                      method virtual_flag : virtual_flag -> 'a
                      method with_constr : with_constr -> 'a
                    end
                end
              type 'a tag
              val ctyp_tag : Ast.ctyp tag
              val patt_tag : Ast.patt tag
              val expr_tag : Ast.expr tag
              val module_type_tag : Ast.module_type tag
              val sig_item_tag : Ast.sig_item tag
              val with_constr_tag : Ast.with_constr tag
              val module_expr_tag : Ast.module_expr tag
              val str_item_tag : Ast.str_item tag
              val class_type_tag : Ast.class_type tag
              val class_sig_item_tag : Ast.class_sig_item tag
              val class_expr_tag : Ast.class_expr tag
              val class_str_item_tag : Ast.class_str_item tag
              val match_case_tag : Ast.match_case tag
              val ident_tag : Ast.ident tag
              val binding_tag : Ast.binding tag
              val rec_binding_tag : Ast.rec_binding tag
              val module_binding_tag : Ast.module_binding tag
              val string_of_tag : 'a tag -> string
              module Pack :
                functor (X : sig type 'a t end->
                  sig
                    type pack
                    val pack : 'a tag -> 'X.t -> pack
                    val unpack : 'a tag -> pack -> 'X.t
                    val print_tag : Format.formatter -> pack -> unit
                  end
            end
          type 'a expand_fun = Ast.loc -> string option -> string -> 'a
          val add : string -> 'DynAst.tag -> 'a expand_fun -> unit
          val find : string -> 'DynAst.tag -> 'a expand_fun
          val default : string ref
          val parse_quotation_result :
            (Ast.loc -> string -> 'a) ->
            Ast.loc -> quotation -> string -> string -> 'a
          val translate : (string -> string) ref
          val expand : Ast.loc -> quotation -> 'DynAst.tag -> 'a
          val dump_file : string option ref
          module Error : Error
        end
      module AntiquotSyntax : Parser(Ast).SIMPLE
      type warning = Loc.t -> string -> unit
      val default_warning : warning
      val current_warning : warning ref
      val print_warning : warning
      val parse_implem :
        ?directive_handler:(Ast.str_item -> Ast.str_item option) ->
        Ast.loc -> char Stream.t -> Ast.str_item
      val parse_interf :
        ?directive_handler:(Ast.sig_item -> Ast.sig_item option) ->
        Ast.loc -> char Stream.t -> Ast.sig_item
      val print_interf :
        ?input_file:string -> ?output_file:string -> Ast.sig_item -> unit
      val print_implem :
        ?input_file:string -> ?output_file:string -> Ast.str_item -> unit
    end
  module type Camlp4Syntax =
    sig
      module Loc : Loc
      module Ast :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          type loc = Loc.t
          and meta_bool = BTrue | BFalse | BAnt of string
          and rec_flag = ReRecursive | ReNil | ReAnt of string
          and direction_flag = DiTo | DiDownto | DiAnt of string
          and mutable_flag = MuMutable | MuNil | MuAnt of string
          and private_flag = PrPrivate | PrNil | PrAnt of string
          and virtual_flag = ViVirtual | ViNil | ViAnt of string
          and override_flag = OvOverride | OvNil | OvAnt of string
          and row_var_flag = RvRowVar | RvNil | RvAnt of string
          and 'a meta_option = ONone | OSome of '| OAnt of string
          and 'a meta_list =
              LNil
            | LCons of 'a * 'a meta_list
            | LAnt of string
          and ident =
              IdAcc of loc * ident * ident
            | IdApp of loc * ident * ident
            | IdLid of loc * string
            | IdUid of loc * string
            | IdAnt of loc * string
          and ctyp =
              TyNil of loc
            | TyAli of loc * ctyp * ctyp
            | TyAny of loc
            | TyApp of loc * ctyp * ctyp
            | TyArr of loc * ctyp * ctyp
            | TyCls of loc * ident
            | TyLab of loc * string * ctyp
            | TyId of loc * ident
            | TyMan of loc * ctyp * ctyp
            | TyDcl of loc * string * ctyp list * ctyp * (ctyp * ctyp) list
            | TyObj of loc * ctyp * row_var_flag
            | TyOlb of loc * string * ctyp
            | TyPol of loc * ctyp * ctyp
            | TyQuo of loc * string
            | TyQuP of loc * string
            | TyQuM of loc * string
            | TyVrn of loc * string
            | TyRec of loc * ctyp
            | TyCol of loc * ctyp * ctyp
            | TySem of loc * ctyp * ctyp
            | TyCom of loc * ctyp * ctyp
            | TySum of loc * ctyp
            | TyOf of loc * ctyp * ctyp
            | TyAnd of loc * ctyp * ctyp
            | TyOr of loc * ctyp * ctyp
            | TyPrv of loc * ctyp
            | TyMut of loc * ctyp
            | TyTup of loc * ctyp
            | TySta of loc * ctyp * ctyp
            | TyVrnEq of loc * ctyp
            | TyVrnSup of loc * ctyp
            | TyVrnInf of loc * ctyp
            | TyVrnInfSup of loc * ctyp * ctyp
            | TyAmp of loc * ctyp * ctyp
            | TyOfAmp of loc * ctyp * ctyp
            | TyPkg of loc * module_type
            | TyAnt of loc * string
          and patt =
              PaNil of loc
            | PaId of loc * ident
            | PaAli of loc * patt * patt
            | PaAnt of loc * string
            | PaAny of loc
            | PaApp of loc * patt * patt
            | PaArr of loc * patt
            | PaCom of loc * patt * patt
            | PaSem of loc * patt * patt
            | PaChr of loc * string
            | PaInt of loc * string
            | PaInt32 of loc * string
            | PaInt64 of loc * string
            | PaNativeInt of loc * string
            | PaFlo of loc * string
            | PaLab of loc * string * patt
            | PaOlb of loc * string * patt
            | PaOlbi of loc * string * patt * expr
            | PaOrp of loc * patt * patt
            | PaRng of loc * patt * patt
            | PaRec of loc * patt
            | PaEq of loc * ident * patt
            | PaStr of loc * string
            | PaTup of loc * patt
            | PaTyc of loc * patt * ctyp
            | PaTyp of loc * ident
            | PaVrn of loc * string
            | PaLaz of loc * patt
          and expr =
              ExNil of loc
            | ExId of loc * ident
            | ExAcc of loc * expr * expr
            | ExAnt of loc * string
            | ExApp of loc * expr * expr
            | ExAre of loc * expr * expr
            | ExArr of loc * expr
            | ExSem of loc * expr * expr
            | ExAsf of loc
            | ExAsr of loc * expr
            | ExAss of loc * expr * expr
            | ExChr of loc * string
            | ExCoe of loc * expr * ctyp * ctyp
            | ExFlo of loc * string
            | ExFor of loc * string * expr * expr * direction_flag * expr
            | ExFun of loc * match_case
            | ExIfe of loc * expr * expr * expr
            | ExInt of loc * string
            | ExInt32 of loc * string
            | ExInt64 of loc * string
            | ExNativeInt of loc * string
            | ExLab of loc * string * expr
            | ExLaz of loc * expr
            | ExLet of loc * rec_flag * binding * expr
            | ExLmd of loc * string * module_expr * expr
            | ExMat of loc * expr * match_case
            | ExNew of loc * ident
            | ExObj of loc * patt * class_str_item
            | ExOlb of loc * string * expr
            | ExOvr of loc * rec_binding
            | ExRec of loc * rec_binding * expr
            | ExSeq of loc * expr
            | ExSnd of loc * expr * string
            | ExSte of loc * expr * expr
            | ExStr of loc * string
            | ExTry of loc * expr * match_case
            | ExTup of loc * expr
            | ExCom of loc * expr * expr
            | ExTyc of loc * expr * ctyp
            | ExVrn of loc * string
            | ExWhi of loc * expr * expr
            | ExOpI of loc * ident * expr
            | ExFUN of loc * string * expr
            | ExPkg of loc * module_expr
          and module_type =
              MtNil of loc
            | MtId of loc * ident
            | MtFun of loc * string * module_type * module_type
            | MtQuo of loc * string
            | MtSig of loc * sig_item
            | MtWit of loc * module_type * with_constr
            | MtAnt of loc * string
          and sig_item =
              SgNil of loc
            | SgCls of loc * class_type
            | SgClt of loc * class_type
            | SgSem of loc * sig_item * sig_item
            | SgDir of loc * string * expr
            | SgExc of loc * ctyp
            | SgExt of loc * string * ctyp * string meta_list
            | SgInc of loc * module_type
            | SgMod of loc * string * module_type
            | SgRecMod of loc * module_binding
            | SgMty of loc * string * module_type
            | SgOpn of loc * ident
            | SgTyp of loc * ctyp
            | SgVal of loc * string * ctyp
            | SgAnt of loc * string
          and with_constr =
              WcNil of loc
            | WcTyp of loc * ctyp * ctyp
            | WcMod of loc * ident * ident
            | WcTyS of loc * ctyp * ctyp
            | WcMoS of loc * ident * ident
            | WcAnd of loc * with_constr * with_constr
            | WcAnt of loc * string
          and binding =
              BiNil of loc
            | BiAnd of loc * binding * binding
            | BiEq of loc * patt * expr
            | BiAnt of loc * string
          and rec_binding =
              RbNil of loc
            | RbSem of loc * rec_binding * rec_binding
            | RbEq of loc * ident * expr
            | RbAnt of loc * string
          and module_binding =
              MbNil of loc
            | MbAnd of loc * module_binding * module_binding
            | MbColEq of loc * string * module_type * module_expr
            | MbCol of loc * string * module_type
            | MbAnt of loc * string
          and match_case =
              McNil of loc
            | McOr of loc * match_case * match_case
            | McArr of loc * patt * expr * expr
            | McAnt of loc * string
          and module_expr =
              MeNil of loc
            | MeId of loc * ident
            | MeApp of loc * module_expr * module_expr
            | MeFun of loc * string * module_type * module_expr
            | MeStr of loc * str_item
            | MeTyc of loc * module_expr * module_type
            | MePkg of loc * expr
            | MeAnt of loc * string
          and str_item =
              StNil of loc
            | StCls of loc * class_expr
            | StClt of loc * class_type
            | StSem of loc * str_item * str_item
            | StDir of loc * string * expr
            | StExc of loc * ctyp * ident meta_option
            | StExp of loc * expr
            | StExt of loc * string * ctyp * string meta_list
            | StInc of loc * module_expr
            | StMod of loc * string * module_expr
            | StRecMod of loc * module_binding
            | StMty of loc * string * module_type
            | StOpn of loc * ident
            | StTyp of loc * ctyp
            | StVal of loc * rec_flag * binding
            | StAnt of loc * string
          and class_type =
              CtNil of loc
            | CtCon of loc * virtual_flag * ident * ctyp
            | CtFun of loc * ctyp * class_type
            | CtSig of loc * ctyp * class_sig_item
            | CtAnd of loc * class_type * class_type
            | CtCol of loc * class_type * class_type
            | CtEq of loc * class_type * class_type
            | CtAnt of loc * string
          and class_sig_item =
              CgNil of loc
            | CgCtr of loc * ctyp * ctyp
            | CgSem of loc * class_sig_item * class_sig_item
            | CgInh of loc * class_type
            | CgMth of loc * string * private_flag * ctyp
            | CgVal of loc * string * mutable_flag * virtual_flag * ctyp
            | CgVir of loc * string * private_flag * ctyp
            | CgAnt of loc * string
          and class_expr =
              CeNil of loc
            | CeApp of loc * class_expr * expr
            | CeCon of loc * virtual_flag * ident * ctyp
            | CeFun of loc * patt * class_expr
            | CeLet of loc * rec_flag * binding * class_expr
            | CeStr of loc * patt * class_str_item
            | CeTyc of loc * class_expr * class_type
            | CeAnd of loc * class_expr * class_expr
            | CeEq of loc * class_expr * class_expr
            | CeAnt of loc * string
          and class_str_item =
              CrNil of loc
            | CrSem of loc * class_str_item * class_str_item
            | CrCtr of loc * ctyp * ctyp
            | CrInh of loc * override_flag * class_expr * string
            | CrIni of loc * expr
            | CrMth of loc * string * override_flag * private_flag * 
                expr * ctyp
            | CrVal of loc * string * override_flag * mutable_flag * expr
            | CrVir of loc * string * private_flag * ctyp
            | CrVvr of loc * string * mutable_flag * ctyp
            | CrAnt of loc * string
          val loc_of_ctyp : ctyp -> loc
          val loc_of_patt : patt -> loc
          val loc_of_expr : expr -> loc
          val loc_of_module_type : module_type -> loc
          val loc_of_module_expr : module_expr -> loc
          val loc_of_sig_item : sig_item -> loc
          val loc_of_str_item : str_item -> loc
          val loc_of_class_type : class_type -> loc
          val loc_of_class_sig_item : class_sig_item -> loc
          val loc_of_class_expr : class_expr -> loc
          val loc_of_class_str_item : class_str_item -> loc
          val loc_of_with_constr : with_constr -> loc
          val loc_of_binding : binding -> loc
          val loc_of_rec_binding : rec_binding -> loc
          val loc_of_module_binding : module_binding -> loc
          val loc_of_match_case : match_case -> loc
          val loc_of_ident : ident -> loc
          module Meta :
            sig
              module type META_LOC =
                sig
                  val meta_loc_patt : loc -> loc -> patt
                  val meta_loc_expr : loc -> loc -> expr
                end
              module MetaLoc :
                sig
                  val meta_loc_patt : loc -> loc -> patt
                  val meta_loc_expr : loc -> loc -> expr
                end
              module MetaGhostLoc :
                sig
                  val meta_loc_patt : loc -> '-> patt
                  val meta_loc_expr : loc -> '-> expr
                end
              module MetaLocVar :
                sig
                  val meta_loc_patt : loc -> '-> patt
                  val meta_loc_expr : loc -> '-> expr
                end
              module Make :
                functor (MetaLoc : META_LOC->
                  sig
                    module Expr :
                      sig
                        val meta_string : loc -> string -> expr
                        val meta_int : loc -> string -> expr
                        val meta_float : loc -> string -> expr
                        val meta_char : loc -> string -> expr
                        val meta_bool : loc -> bool -> expr
                        val meta_list :
                          (loc -> '-> expr) -> loc -> 'a list -> expr
                        val meta_binding : loc -> binding -> expr
                        val meta_rec_binding : loc -> rec_binding -> expr
                        val meta_class_expr : loc -> class_expr -> expr
                        val meta_class_sig_item :
                          loc -> class_sig_item -> expr
                        val meta_class_str_item :
                          loc -> class_str_item -> expr
                        val meta_class_type : loc -> class_type -> expr
                        val meta_ctyp : loc -> ctyp -> expr
                        val meta_expr : loc -> expr -> expr
                        val meta_ident : loc -> ident -> expr
                        val meta_match_case : loc -> match_case -> expr
                        val meta_module_binding :
                          loc -> module_binding -> expr
                        val meta_module_expr : loc -> module_expr -> expr
                        val meta_module_type : loc -> module_type -> expr
                        val meta_patt : loc -> patt -> expr
                        val meta_sig_item : loc -> sig_item -> expr
                        val meta_str_item : loc -> str_item -> expr
                        val meta_with_constr : loc -> with_constr -> expr
                        val meta_rec_flag : loc -> rec_flag -> expr
                        val meta_mutable_flag : loc -> mutable_flag -> expr
                        val meta_virtual_flag : loc -> virtual_flag -> expr
                        val meta_private_flag : loc -> private_flag -> expr
                        val meta_row_var_flag : loc -> row_var_flag -> expr
                        val meta_override_flag : loc -> override_flag -> expr
                        val meta_direction_flag :
                          loc -> direction_flag -> expr
                      end
                    module Patt :
                      sig
                        val meta_string : loc -> string -> patt
                        val meta_int : loc -> string -> patt
                        val meta_float : loc -> string -> patt
                        val meta_char : loc -> string -> patt
                        val meta_bool : loc -> bool -> patt
                        val meta_list :
                          (loc -> '-> patt) -> loc -> 'a list -> patt
                        val meta_binding : loc -> binding -> patt
                        val meta_rec_binding : loc -> rec_binding -> patt
                        val meta_class_expr : loc -> class_expr -> patt
                        val meta_class_sig_item :
                          loc -> class_sig_item -> patt
                        val meta_class_str_item :
                          loc -> class_str_item -> patt
                        val meta_class_type : loc -> class_type -> patt
                        val meta_ctyp : loc -> ctyp -> patt
                        val meta_expr : loc -> expr -> patt
                        val meta_ident : loc -> ident -> patt
                        val meta_match_case : loc -> match_case -> patt
                        val meta_module_binding :
                          loc -> module_binding -> patt
                        val meta_module_expr : loc -> module_expr -> patt
                        val meta_module_type : loc -> module_type -> patt
                        val meta_patt : loc -> patt -> patt
                        val meta_sig_item : loc -> sig_item -> patt
                        val meta_str_item : loc -> str_item -> patt
                        val meta_with_constr : loc -> with_constr -> patt
                        val meta_rec_flag : loc -> rec_flag -> patt
                        val meta_mutable_flag : loc -> mutable_flag -> patt
                        val meta_virtual_flag : loc -> virtual_flag -> patt
                        val meta_private_flag : loc -> private_flag -> patt
                        val meta_row_var_flag : loc -> row_var_flag -> patt
                        val meta_override_flag : loc -> override_flag -> patt
                        val meta_direction_flag :
                          loc -> direction_flag -> patt
                      end
                  end
            end
          class map :
            object ('a)
              method binding : binding -> binding
              method class_expr : class_expr -> class_expr
              method class_sig_item : class_sig_item -> class_sig_item
              method class_str_item : class_str_item -> class_str_item
              method class_type : class_type -> class_type
              method ctyp : ctyp -> ctyp
              method direction_flag : direction_flag -> direction_flag
              method expr : expr -> expr
              method ident : ident -> ident
              method list : ('-> '-> 'c) -> 'b list -> 'c list
              method loc : loc -> loc
              method match_case : match_case -> match_case
              method meta_bool : meta_bool -> meta_bool
              method meta_list :
                ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
              method meta_option :
                ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
              method module_binding : module_binding -> module_binding
              method module_expr : module_expr -> module_expr
              method module_type : module_type -> module_type
              method mutable_flag : mutable_flag -> mutable_flag
              method override_flag : override_flag -> override_flag
              method patt : patt -> patt
              method private_flag : private_flag -> private_flag
              method rec_binding : rec_binding -> rec_binding
              method rec_flag : rec_flag -> rec_flag
              method row_var_flag : row_var_flag -> row_var_flag
              method sig_item : sig_item -> sig_item
              method str_item : str_item -> str_item
              method string : string -> string
              method unknown : '-> 'h
              method virtual_flag : virtual_flag -> virtual_flag
              method with_constr : with_constr -> with_constr
            end
          class fold :
            object ('a)
              method binding : binding -> 'a
              method class_expr : class_expr -> 'a
              method class_sig_item : class_sig_item -> 'a
              method class_str_item : class_str_item -> 'a
              method class_type : class_type -> 'a
              method ctyp : ctyp -> 'a
              method direction_flag : direction_flag -> 'a
              method expr : expr -> 'a
              method ident : ident -> 'a
              method list : ('-> '-> 'a) -> 'b list -> 'a
              method loc : loc -> 'a
              method match_case : match_case -> 'a
              method meta_bool : meta_bool -> 'a
              method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
              method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
              method module_binding : module_binding -> 'a
              method module_expr : module_expr -> 'a
              method module_type : module_type -> 'a
              method mutable_flag : mutable_flag -> 'a
              method override_flag : override_flag -> 'a
              method patt : patt -> 'a
              method private_flag : private_flag -> 'a
              method rec_binding : rec_binding -> 'a
              method rec_flag : rec_flag -> 'a
              method row_var_flag : row_var_flag -> 'a
              method sig_item : sig_item -> 'a
              method str_item : str_item -> 'a
              method string : string -> 'a
              method unknown : '-> 'a
              method virtual_flag : virtual_flag -> 'a
              method with_constr : with_constr -> 'a
            end
          val map_expr : (expr -> expr) -> map
          val map_patt : (patt -> patt) -> map
          val map_ctyp : (ctyp -> ctyp) -> map
          val map_str_item : (str_item -> str_item) -> map
          val map_sig_item : (sig_item -> sig_item) -> map
          val map_loc : (loc -> loc) -> map
          val ident_of_expr : expr -> ident
          val ident_of_patt : patt -> ident
          val ident_of_ctyp : ctyp -> ident
          val biAnd_of_list : binding list -> binding
          val rbSem_of_list : rec_binding list -> rec_binding
          val paSem_of_list : patt list -> patt
          val paCom_of_list : patt list -> patt
          val tyOr_of_list : ctyp list -> ctyp
          val tyAnd_of_list : ctyp list -> ctyp
          val tyAmp_of_list : ctyp list -> ctyp
          val tySem_of_list : ctyp list -> ctyp
          val tyCom_of_list : ctyp list -> ctyp
          val tySta_of_list : ctyp list -> ctyp
          val stSem_of_list : str_item list -> str_item
          val sgSem_of_list : sig_item list -> sig_item
          val crSem_of_list : class_str_item list -> class_str_item
          val cgSem_of_list : class_sig_item list -> class_sig_item
          val ctAnd_of_list : class_type list -> class_type
          val ceAnd_of_list : class_expr list -> class_expr
          val wcAnd_of_list : with_constr list -> with_constr
          val meApp_of_list : module_expr list -> module_expr
          val mbAnd_of_list : module_binding list -> module_binding
          val mcOr_of_list : match_case list -> match_case
          val idAcc_of_list : ident list -> ident
          val idApp_of_list : ident list -> ident
          val exSem_of_list : expr list -> expr
          val exCom_of_list : expr list -> expr
          val list_of_ctyp : ctyp -> ctyp list -> ctyp list
          val list_of_binding : binding -> binding list -> binding list
          val list_of_rec_binding :
            rec_binding -> rec_binding list -> rec_binding list
          val list_of_with_constr :
            with_constr -> with_constr list -> with_constr list
          val list_of_patt : patt -> patt list -> patt list
          val list_of_expr : expr -> expr list -> expr list
          val list_of_str_item : str_item -> str_item list -> str_item list
          val list_of_sig_item : sig_item -> sig_item list -> sig_item list
          val list_of_class_sig_item :
            class_sig_item -> class_sig_item list -> class_sig_item list
          val list_of_class_str_item :
            class_str_item -> class_str_item list -> class_str_item list
          val list_of_class_type :
            class_type -> class_type list -> class_type list
          val list_of_class_expr :
            class_expr -> class_expr list -> class_expr list
          val list_of_module_expr :
            module_expr -> module_expr list -> module_expr list
          val list_of_module_binding :
            module_binding -> module_binding list -> module_binding list
          val list_of_match_case :
            match_case -> match_case list -> match_case list
          val list_of_ident : ident -> ident list -> ident list
          val safe_string_escaped : string -> string
          val is_irrefut_patt : patt -> bool
          val is_constructor : ident -> bool
          val is_patt_constructor : patt -> bool
          val is_expr_constructor : expr -> bool
          val ty_of_stl : Loc.t * string * ctyp list -> ctyp
          val ty_of_sbt : Loc.t * string * bool * ctyp -> ctyp
          val bi_of_pe : patt * expr -> binding
          val pel_of_binding : binding -> (patt * expr) list
          val binding_of_pel : (patt * expr) list -> binding
          val sum_type_of_list : (Loc.t * string * ctyp list) list -> ctyp
          val record_type_of_list :
            (Loc.t * string * bool * ctyp) list -> ctyp
        end
      module Token :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          type t = camlp4_token
          val to_string : t -> string
          val print : Format.formatter -> t -> unit
          val match_keyword : string -> t -> bool
          val extract_string : t -> string
          module Filter :
            sig
              type token_filter = (t, Loc.t) stream_filter
              type t
              val mk : (string -> bool) -> t
              val define_filter : t -> (token_filter -> token_filter) -> unit
              val filter : t -> token_filter
              val keyword_added : t -> string -> bool -> unit
              val keyword_removed : t -> string -> unit
            end
          module Error : Error
        end
      module Gram :
        sig
          module Loc :
            sig
              type t = Loc.t
              val mk : string -> t
              val ghost : t
              val of_lexing_position : Lexing.position -> t
              val to_ocaml_location : t -> Camlp4_import.Location.t
              val of_ocaml_location : Camlp4_import.Location.t -> t
              val of_lexbuf : Lexing.lexbuf -> t
              val of_tuple :
                string * int * int * int * int * int * int * bool -> t
              val to_tuple :
                t -> string * int * int * int * int * int * int * bool
              val merge : t -> t -> t
              val join : t -> t
              val move : [ `both | `start | `stop ] -> int -> t -> t
              val shift : int -> t -> t
              val move_line : int -> t -> t
              val file_name : t -> string
              val start_line : t -> int
              val stop_line : t -> int
              val start_bol : t -> int
              val stop_bol : t -> int
              val start_off : t -> int
              val stop_off : t -> int
              val start_pos : t -> Lexing.position
              val stop_pos : t -> Lexing.position
              val is_ghost : t -> bool
              val ghostify : t -> t
              val set_file_name : string -> t -> t
              val strictly_before : t -> t -> bool
              val make_absolute : t -> t
              val print : Format.formatter -> t -> unit
              val dump : Format.formatter -> t -> unit
              val to_string : t -> string
              exception Exc_located of t * exn
              val raise : t -> exn -> 'a
              val name : string ref
            end
          module Action : Grammar.Action
          module Token :
            sig
              module Loc :
                sig
                  type t = Loc.t
                  val mk : string -> t
                  val ghost : t
                  val of_lexing_position : Lexing.position -> t
                  val to_ocaml_location : t -> Camlp4_import.Location.t
                  val of_ocaml_location : Camlp4_import.Location.t -> t
                  val of_lexbuf : Lexing.lexbuf -> t
                  val of_tuple :
                    string * int * int * int * int * int * int * bool -> t
                  val to_tuple :
                    t -> string * int * int * int * int * int * int * bool
                  val merge : t -> t -> t
                  val join : t -> t
                  val move : [ `both | `start | `stop ] -> int -> t -> t
                  val shift : int -> t -> t
                  val move_line : int -> t -> t
                  val file_name : t -> string
                  val start_line : t -> int
                  val stop_line : t -> int
                  val start_bol : t -> int
                  val stop_bol : t -> int
                  val start_off : t -> int
                  val stop_off : t -> int
                  val start_pos : t -> Lexing.position
                  val stop_pos : t -> Lexing.position
                  val is_ghost : t -> bool
                  val ghostify : t -> t
                  val set_file_name : string -> t -> t
                  val strictly_before : t -> t -> bool
                  val make_absolute : t -> t
                  val print : Format.formatter -> t -> unit
                  val dump : Format.formatter -> t -> unit
                  val to_string : t -> string
                  exception Exc_located of t * exn
                  val raise : t -> exn -> 'a
                  val name : string ref
                end
              type t = camlp4_token
              val to_string : t -> string
              val print : Format.formatter -> t -> unit
              val match_keyword : string -> t -> bool
              val extract_string : t -> string
              module Filter :
                sig
                  type token_filter = (t, Loc.t) stream_filter
                  type t = Token.Filter.t
                  val mk : (string -> bool) -> t
                  val define_filter :
                    t -> (token_filter -> token_filter) -> unit
                  val filter : t -> token_filter
                  val keyword_added : t -> string -> bool -> unit
                  val keyword_removed : t -> string -> unit
                end
              module Error :
                sig
                  type t = Token.Error.t
                  exception E of t
                  val to_string : t -> string
                  val print : Format.formatter -> t -> unit
                end
            end
          type gram
          type internal_entry
          type tree
          type token_pattern = (Token.t -> bool) * string
          type token_info
          type token_stream = (Token.t * token_info) Stream.t
          val token_location : token_info -> Loc.t
          type symbol =
              Smeta of string * symbol list * Action.t
            | Snterm of internal_entry
            | Snterml of internal_entry * string
            | Slist0 of symbol
            | Slist0sep of symbol * symbol
            | Slist1 of symbol
            | Slist1sep of symbol * symbol
            | Sopt of symbol
            | Stry of symbol
            | Sself
            | Snext
            | Stoken of token_pattern
            | Skeyword of string
            | Stree of tree
          type production_rule = symbol list * Action.t
          type single_extend_statment =
              string option * Grammar.assoc option * production_rule list
          type extend_statment =
              Grammar.position option * single_extend_statment list
          type delete_statment = symbol list
          type ('a, 'b, 'c) fold =
              internal_entry ->
              symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
          type ('a, 'b, 'c) foldsep =
              internal_entry ->
              symbol list ->
              ('Stream.t -> 'b) ->
              ('Stream.t -> unit) -> 'Stream.t -> 'c
          module Entry :
            sig
              type 'a t
              val mk : string -> 'a t
              val of_parser : string -> (token_stream -> 'a) -> 'a t
              val setup_parser : 'a t -> (token_stream -> 'a) -> unit
              val name : 'a t -> string
              val print : Format.formatter -> 'a t -> unit
              val dump : Format.formatter -> 'a t -> unit
              val obj : 'a t -> internal_entry
              val clear : 'a t -> unit
            end
          val get_filter : unit -> Token.Filter.t
          type 'a not_filtered
          val extend : 'Entry.t -> extend_statment -> unit
          val delete_rule : 'Entry.t -> delete_statment -> unit
          val srules : 'Entry.t -> (symbol list * Action.t) list -> symbol
          val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
          val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
          val lex :
            Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t not_filtered
          val lex_string :
            Loc.t -> string -> (Token.t * Loc.t) Stream.t not_filtered
          val filter :
            (Token.t * Loc.t) Stream.t not_filtered -> token_stream
          val parse : 'Entry.t -> Loc.t -> char Stream.t -> 'a
          val parse_string : 'Entry.t -> Loc.t -> string -> 'a
          val parse_tokens_before_filter :
            'Entry.t -> (Token.t * Loc.t) Stream.t not_filtered -> 'a
          val parse_tokens_after_filter : 'Entry.t -> token_stream -> 'a
        end
      module Quotation :
        sig
          module Ast :
            sig
              type loc = Ast.loc
              type meta_bool = Ast.meta_bool
              type 'a meta_option = 'Ast.meta_option
              type 'a meta_list = 'Ast.meta_list
              type ctyp = Ast.ctyp
              type patt = Ast.patt
              type expr = Ast.expr
              type module_type = Ast.module_type
              type sig_item = Ast.sig_item
              type with_constr = Ast.with_constr
              type module_expr = Ast.module_expr
              type str_item = Ast.str_item
              type class_type = Ast.class_type
              type class_sig_item = Ast.class_sig_item
              type class_expr = Ast.class_expr
              type class_str_item = Ast.class_str_item
              type match_case = Ast.match_case
              type ident = Ast.ident
              type binding = Ast.binding
              type rec_binding = Ast.rec_binding
              type module_binding = Ast.module_binding
              type rec_flag = Ast.rec_flag
              type direction_flag = Ast.direction_flag
              type mutable_flag = Ast.mutable_flag
              type private_flag = Ast.private_flag
              type virtual_flag = Ast.virtual_flag
              type row_var_flag = Ast.row_var_flag
              type override_flag = Ast.override_flag
              val loc_of_ctyp : ctyp -> loc
              val loc_of_patt : patt -> loc
              val loc_of_expr : expr -> loc
              val loc_of_module_type : module_type -> loc
              val loc_of_module_expr : module_expr -> loc
              val loc_of_sig_item : sig_item -> loc
              val loc_of_str_item : str_item -> loc
              val loc_of_class_type : class_type -> loc
              val loc_of_class_sig_item : class_sig_item -> loc
              val loc_of_class_expr : class_expr -> loc
              val loc_of_class_str_item : class_str_item -> loc
              val loc_of_with_constr : with_constr -> loc
              val loc_of_binding : binding -> loc
              val loc_of_rec_binding : rec_binding -> loc
              val loc_of_module_binding : module_binding -> loc
              val loc_of_match_case : match_case -> loc
              val loc_of_ident : ident -> loc
              class map :
                object ('a)
                  method binding : binding -> binding
                  method class_expr : class_expr -> class_expr
                  method class_sig_item : class_sig_item -> class_sig_item
                  method class_str_item : class_str_item -> class_str_item
                  method class_type : class_type -> class_type
                  method ctyp : ctyp -> ctyp
                  method direction_flag : direction_flag -> direction_flag
                  method expr : expr -> expr
                  method ident : ident -> ident
                  method list : ('-> '-> 'c) -> 'b list -> 'c list
                  method loc : loc -> loc
                  method match_case : match_case -> match_case
                  method meta_bool : meta_bool -> meta_bool
                  method meta_list :
                    ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                  method meta_option :
                    ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                  method module_binding : module_binding -> module_binding
                  method module_expr : module_expr -> module_expr
                  method module_type : module_type -> module_type
                  method mutable_flag : mutable_flag -> mutable_flag
                  method override_flag : override_flag -> override_flag
                  method patt : patt -> patt
                  method private_flag : private_flag -> private_flag
                  method rec_binding : rec_binding -> rec_binding
                  method rec_flag : rec_flag -> rec_flag
                  method row_var_flag : row_var_flag -> row_var_flag
                  method sig_item : sig_item -> sig_item
                  method str_item : str_item -> str_item
                  method string : string -> string
                  method unknown : '-> 'h
                  method virtual_flag : virtual_flag -> virtual_flag
                  method with_constr : with_constr -> with_constr
                end
              class fold :
                object ('a)
                  method binding : binding -> 'a
                  method class_expr : class_expr -> 'a
                  method class_sig_item : class_sig_item -> 'a
                  method class_str_item : class_str_item -> 'a
                  method class_type : class_type -> 'a
                  method ctyp : ctyp -> 'a
                  method direction_flag : direction_flag -> 'a
                  method expr : expr -> 'a
                  method ident : ident -> 'a
                  method list : ('-> '-> 'a) -> 'b list -> 'a
                  method loc : loc -> 'a
                  method match_case : match_case -> 'a
                  method meta_bool : meta_bool -> 'a
                  method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                  method meta_option :
                    ('-> '-> 'a) -> 'd meta_option -> 'a
                  method module_binding : module_binding -> 'a
                  method module_expr : module_expr -> 'a
                  method module_type : module_type -> 'a
                  method mutable_flag : mutable_flag -> 'a
                  method override_flag : override_flag -> 'a
                  method patt : patt -> 'a
                  method private_flag : private_flag -> 'a
                  method rec_binding : rec_binding -> 'a
                  method rec_flag : rec_flag -> 'a
                  method row_var_flag : row_var_flag -> 'a
                  method sig_item : sig_item -> 'a
                  method str_item : str_item -> 'a
                  method string : string -> 'a
                  method unknown : '-> 'a
                  method virtual_flag : virtual_flag -> 'a
                  method with_constr : with_constr -> 'a
                end
            end
          module DynAst :
            sig
              module Ast :
                sig
                  type loc = Ast.loc
                  type meta_bool = Ast.meta_bool
                  type 'a meta_option = 'Ast.meta_option
                  type 'a meta_list = 'Ast.meta_list
                  type ctyp = Ast.ctyp
                  type patt = Ast.patt
                  type expr = Ast.expr
                  type module_type = Ast.module_type
                  type sig_item = Ast.sig_item
                  type with_constr = Ast.with_constr
                  type module_expr = Ast.module_expr
                  type str_item = Ast.str_item
                  type class_type = Ast.class_type
                  type class_sig_item = Ast.class_sig_item
                  type class_expr = Ast.class_expr
                  type class_str_item = Ast.class_str_item
                  type match_case = Ast.match_case
                  type ident = Ast.ident
                  type binding = Ast.binding
                  type rec_binding = Ast.rec_binding
                  type module_binding = Ast.module_binding
                  type rec_flag = Ast.rec_flag
                  type direction_flag = Ast.direction_flag
                  type mutable_flag = Ast.mutable_flag
                  type private_flag = Ast.private_flag
                  type virtual_flag = Ast.virtual_flag
                  type row_var_flag = Ast.row_var_flag
                  type override_flag = Ast.override_flag
                  val loc_of_ctyp : ctyp -> loc
                  val loc_of_patt : patt -> loc
                  val loc_of_expr : expr -> loc
                  val loc_of_module_type : module_type -> loc
                  val loc_of_module_expr : module_expr -> loc
                  val loc_of_sig_item : sig_item -> loc
                  val loc_of_str_item : str_item -> loc
                  val loc_of_class_type : class_type -> loc
                  val loc_of_class_sig_item : class_sig_item -> loc
                  val loc_of_class_expr : class_expr -> loc
                  val loc_of_class_str_item : class_str_item -> loc
                  val loc_of_with_constr : with_constr -> loc
                  val loc_of_binding : binding -> loc
                  val loc_of_rec_binding : rec_binding -> loc
                  val loc_of_module_binding : module_binding -> loc
                  val loc_of_match_case : match_case -> loc
                  val loc_of_ident : ident -> loc
                  class map :
                    object ('a)
                      method binding : binding -> binding
                      method class_expr : class_expr -> class_expr
                      method class_sig_item :
                        class_sig_item -> class_sig_item
                      method class_str_item :
                        class_str_item -> class_str_item
                      method class_type : class_type -> class_type
                      method ctyp : ctyp -> ctyp
                      method direction_flag :
                        direction_flag -> direction_flag
                      method expr : expr -> expr
                      method ident : ident -> ident
                      method list : ('-> '-> 'c) -> 'b list -> 'c list
                      method loc : loc -> loc
                      method match_case : match_case -> match_case
                      method meta_bool : meta_bool -> meta_bool
                      method meta_list :
                        ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                      method meta_option :
                        ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                      method module_binding :
                        module_binding -> module_binding
                      method module_expr : module_expr -> module_expr
                      method module_type : module_type -> module_type
                      method mutable_flag : mutable_flag -> mutable_flag
                      method override_flag : override_flag -> override_flag
                      method patt : patt -> patt
                      method private_flag : private_flag -> private_flag
                      method rec_binding : rec_binding -> rec_binding
                      method rec_flag : rec_flag -> rec_flag
                      method row_var_flag : row_var_flag -> row_var_flag
                      method sig_item : sig_item -> sig_item
                      method str_item : str_item -> str_item
                      method string : string -> string
                      method unknown : '-> 'h
                      method virtual_flag : virtual_flag -> virtual_flag
                      method with_constr : with_constr -> with_constr
                    end
                  class fold :
                    object ('a)
                      method binding : binding -> 'a
                      method class_expr : class_expr -> 'a
                      method class_sig_item : class_sig_item -> 'a
                      method class_str_item : class_str_item -> 'a
                      method class_type : class_type -> 'a
                      method ctyp : ctyp -> 'a
                      method direction_flag : direction_flag -> 'a
                      method expr : expr -> 'a
                      method ident : ident -> 'a
                      method list : ('-> '-> 'a) -> 'b list -> 'a
                      method loc : loc -> 'a
                      method match_case : match_case -> 'a
                      method meta_bool : meta_bool -> 'a
                      method meta_list :
                        ('-> '-> 'a) -> 'c meta_list -> 'a
                      method meta_option :
                        ('-> '-> 'a) -> 'd meta_option -> 'a
                      method module_binding : module_binding -> 'a
                      method module_expr : module_expr -> 'a
                      method module_type : module_type -> 'a
                      method mutable_flag : mutable_flag -> 'a
                      method override_flag : override_flag -> 'a
                      method patt : patt -> 'a
                      method private_flag : private_flag -> 'a
                      method rec_binding : rec_binding -> 'a
                      method rec_flag : rec_flag -> 'a
                      method row_var_flag : row_var_flag -> 'a
                      method sig_item : sig_item -> 'a
                      method str_item : str_item -> 'a
                      method string : string -> 'a
                      method unknown : '-> 'a
                      method virtual_flag : virtual_flag -> 'a
                      method with_constr : with_constr -> 'a
                    end
                end
              type 'a tag
              val ctyp_tag : Ast.ctyp tag
              val patt_tag : Ast.patt tag
              val expr_tag : Ast.expr tag
              val module_type_tag : Ast.module_type tag
              val sig_item_tag : Ast.sig_item tag
              val with_constr_tag : Ast.with_constr tag
              val module_expr_tag : Ast.module_expr tag
              val str_item_tag : Ast.str_item tag
              val class_type_tag : Ast.class_type tag
              val class_sig_item_tag : Ast.class_sig_item tag
              val class_expr_tag : Ast.class_expr tag
              val class_str_item_tag : Ast.class_str_item tag
              val match_case_tag : Ast.match_case tag
              val ident_tag : Ast.ident tag
              val binding_tag : Ast.binding tag
              val rec_binding_tag : Ast.rec_binding tag
              val module_binding_tag : Ast.module_binding tag
              val string_of_tag : 'a tag -> string
              module Pack :
                functor (X : sig type 'a t end->
                  sig
                    type pack
                    val pack : 'a tag -> 'X.t -> pack
                    val unpack : 'a tag -> pack -> 'X.t
                    val print_tag : Format.formatter -> pack -> unit
                  end
            end
          type 'a expand_fun = Ast.loc -> string option -> string -> 'a
          val add : string -> 'DynAst.tag -> 'a expand_fun -> unit
          val find : string -> 'DynAst.tag -> 'a expand_fun
          val default : string ref
          val parse_quotation_result :
            (Ast.loc -> string -> 'a) ->
            Ast.loc -> quotation -> string -> string -> 'a
          val translate : (string -> string) ref
          val expand : Ast.loc -> quotation -> 'DynAst.tag -> 'a
          val dump_file : string option ref
          module Error : Error
        end
      module AntiquotSyntax : Parser(Ast).SIMPLE
      type warning = Loc.t -> string -> unit
      val default_warning : warning
      val current_warning : warning ref
      val print_warning : warning
      val parse_implem :
        ?directive_handler:(Ast.str_item -> Ast.str_item option) ->
        Ast.loc -> char Stream.t -> Ast.str_item
      val parse_interf :
        ?directive_handler:(Ast.sig_item -> Ast.sig_item option) ->
        Ast.loc -> char Stream.t -> Ast.sig_item
      val print_interf :
        ?input_file:string -> ?output_file:string -> Ast.sig_item -> unit
      val print_implem :
        ?input_file:string -> ?output_file:string -> Ast.str_item -> unit
      val interf :
        (Camlp4.Sig.Camlp4Syntax.Ast.sig_item list * Camlp4.Sig.Loc.t option)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val implem :
        (Camlp4.Sig.Camlp4Syntax.Ast.str_item list * Camlp4.Sig.Loc.t option)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val top_phrase :
        Camlp4.Sig.Camlp4Syntax.Ast.str_item option
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val use_file :
        (Camlp4.Sig.Camlp4Syntax.Ast.str_item list * Camlp4.Sig.Loc.t option)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_CHAR : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_FLOAT : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_INT : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_INT32 : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_INT64 : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_LABEL : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_LIDENT : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_NATIVEINT : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_OPTLABEL : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_STRING : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_UIDENT : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val a_ident : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val amp_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val and_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val match_case :
        Camlp4.Sig.Camlp4Syntax.Ast.match_case
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val match_case0 :
        Camlp4.Sig.Camlp4Syntax.Ast.match_case
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val match_case_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.match_case
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val binding :
        Camlp4.Sig.Camlp4Syntax.Ast.binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val binding_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val rec_binding_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_description :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_expr_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_fun_binding :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_fun_def :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_info_for_class_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_info_for_class_type :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_longident_and_param :
        Camlp4.Sig.Camlp4Syntax.Ast.class_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_name_and_param :
        (string * Camlp4.Sig.Camlp4Syntax.Ast.ctyp)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_sig_item :
        Camlp4.Sig.Camlp4Syntax.Ast.class_sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_sig_item_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.class_sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_signature :
        Camlp4.Sig.Camlp4Syntax.Ast.class_sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_str_item :
        Camlp4.Sig.Camlp4Syntax.Ast.class_str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_str_item_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.class_str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_structure :
        Camlp4.Sig.Camlp4Syntax.Ast.class_str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type_longident_and_param :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type_plus :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val class_type_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.class_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val comma_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val comma_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val comma_ipatt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val comma_patt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val comma_type_parameter :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val constrain :
        (Camlp4.Sig.Camlp4Syntax.Ast.ctyp * Camlp4.Sig.Camlp4Syntax.Ast.ctyp)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val constructor_arg_list :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val constructor_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val constructor_declarations :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ctyp_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val cvalue_binding :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val direction_flag :
        Camlp4.Sig.Camlp4Syntax.Ast.direction_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val direction_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.direction_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val dummy : unit Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val eq_expr :
        (string ->
         Camlp4.Sig.Camlp4Syntax.Ast.patt -> Camlp4.Sig.Camlp4Syntax.Ast.patt)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val expr :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val expr_eoi :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val expr_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val field_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val field_expr_list :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val fun_binding :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val fun_def :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ident_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ipatt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val ipatt_tcon :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_declaration_list :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_expr_list :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_ipatt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_ipatt_list :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_patt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val label_patt_list :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val labeled_ipatt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val let_binding :
        Camlp4.Sig.Camlp4Syntax.Ast.binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val meth_list :
        (Camlp4.Sig.Camlp4Syntax.Ast.ctyp *
         Camlp4.Sig.Camlp4Syntax.Ast.row_var_flag)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val meth_decl :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_binding :
        Camlp4.Sig.Camlp4Syntax.Ast.module_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_binding0 :
        Camlp4.Sig.Camlp4Syntax.Ast.module_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_binding_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.module_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.module_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.module_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_expr_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.module_expr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_longident_with_app :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_rec_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.module_binding
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_type :
        Camlp4.Sig.Camlp4Syntax.Ast.module_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val package_type :
        Camlp4.Sig.Camlp4Syntax.Ast.module_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val module_type_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.module_type
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val more_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val name_tags :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_as_lident : string Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_class_self_patt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_class_self_type :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_comma_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_dot_dot :
        Camlp4.Sig.Camlp4Syntax.Ast.row_var_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val row_var_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.row_var_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_eq_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_meth_list :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_mutable :
        Camlp4.Sig.Camlp4Syntax.Ast.mutable_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val mutable_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.mutable_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_override :
        Camlp4.Sig.Camlp4Syntax.Ast.override_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val override_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.override_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_polyt :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_private :
        Camlp4.Sig.Camlp4Syntax.Ast.private_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val private_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.private_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_rec :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val rec_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.rec_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_virtual :
        Camlp4.Sig.Camlp4Syntax.Ast.virtual_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val virtual_flag_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.virtual_flag
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val opt_when_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val patt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val patt_as_patt_opt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val patt_eoi :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val patt_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val patt_tcon :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val phrase :
        Camlp4.Sig.Camlp4Syntax.Ast.str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val poly_type :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val row_field :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sem_expr :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sem_expr_for_list :
        (Camlp4.Sig.Camlp4Syntax.Ast.expr -> Camlp4.Sig.Camlp4Syntax.Ast.expr)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sem_patt :
        Camlp4.Sig.Camlp4Syntax.Ast.patt Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sem_patt_for_list :
        (Camlp4.Sig.Camlp4Syntax.Ast.patt -> Camlp4.Sig.Camlp4Syntax.Ast.patt)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val semi : unit Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sequence :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val do_sequence :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sig_item :
        Camlp4.Sig.Camlp4Syntax.Ast.sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sig_item_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val sig_items :
        Camlp4.Sig.Camlp4Syntax.Ast.sig_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val star_ctyp :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val str_item :
        Camlp4.Sig.Camlp4Syntax.Ast.str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val str_item_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val str_items :
        Camlp4.Sig.Camlp4Syntax.Ast.str_item
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_constraint : unit Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_declaration :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_ident_and_parameters :
        (string * Camlp4.Sig.Camlp4Syntax.Ast.ctyp list)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_kind :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_longident_and_parameters :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_parameter :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val type_parameters :
        (Camlp4.Sig.Camlp4Syntax.Ast.ctyp -> Camlp4.Sig.Camlp4Syntax.Ast.ctyp)
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val typevars :
        Camlp4.Sig.Camlp4Syntax.Ast.ctyp Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val val_longident :
        Camlp4.Sig.Camlp4Syntax.Ast.ident
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val value_let : unit Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val value_val : unit Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val with_constr :
        Camlp4.Sig.Camlp4Syntax.Ast.with_constr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val with_constr_quot :
        Camlp4.Sig.Camlp4Syntax.Ast.with_constr
        Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val prefixop :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val infixop0 :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val infixop1 :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val infixop2 :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val infixop3 :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
      val infixop4 :
        Camlp4.Sig.Camlp4Syntax.Ast.expr Camlp4.Sig.Camlp4Syntax.Gram.Entry.t
    end
  module type SyntaxExtension =
    functor (Syn : Syntax->
      sig
        module Loc :
          sig
            type t = Syn.Loc.t
            val mk : string -> t
            val ghost : t
            val of_lexing_position : Lexing.position -> t
            val to_ocaml_location : t -> Camlp4_import.Location.t
            val of_ocaml_location : Camlp4_import.Location.t -> t
            val of_lexbuf : Lexing.lexbuf -> t
            val of_tuple :
              string * int * int * int * int * int * int * bool -> t
            val to_tuple :
              t -> string * int * int * int * int * int * int * bool
            val merge : t -> t -> t
            val join : t -> t
            val move : [ `both | `start | `stop ] -> int -> t -> t
            val shift : int -> t -> t
            val move_line : int -> t -> t
            val file_name : t -> string
            val start_line : t -> int
            val stop_line : t -> int
            val start_bol : t -> int
            val stop_bol : t -> int
            val start_off : t -> int
            val stop_off : t -> int
            val start_pos : t -> Lexing.position
            val stop_pos : t -> Lexing.position
            val is_ghost : t -> bool
            val ghostify : t -> t
            val set_file_name : string -> t -> t
            val strictly_before : t -> t -> bool
            val make_absolute : t -> t
            val print : Format.formatter -> t -> unit
            val dump : Format.formatter -> t -> unit
            val to_string : t -> string
            exception Exc_located of t * exn
            val raise : t -> exn -> 'a
            val name : string ref
          end
        module Ast :
          sig
            type loc = Syn.Loc.t
            type meta_bool = Syn.Ast.meta_bool
            type 'a meta_option = 'Syn.Ast.meta_option
            type 'a meta_list = 'Syn.Ast.meta_list
            type ctyp = Syn.Ast.ctyp
            type patt = Syn.Ast.patt
            type expr = Syn.Ast.expr
            type module_type = Syn.Ast.module_type
            type sig_item = Syn.Ast.sig_item
            type with_constr = Syn.Ast.with_constr
            type module_expr = Syn.Ast.module_expr
            type str_item = Syn.Ast.str_item
            type class_type = Syn.Ast.class_type
            type class_sig_item = Syn.Ast.class_sig_item
            type class_expr = Syn.Ast.class_expr
            type class_str_item = Syn.Ast.class_str_item
            type match_case = Syn.Ast.match_case
            type ident = Syn.Ast.ident
            type binding = Syn.Ast.binding
            type rec_binding = Syn.Ast.rec_binding
            type module_binding = Syn.Ast.module_binding
            type rec_flag = Syn.Ast.rec_flag
            type direction_flag = Syn.Ast.direction_flag
            type mutable_flag = Syn.Ast.mutable_flag
            type private_flag = Syn.Ast.private_flag
            type virtual_flag = Syn.Ast.virtual_flag
            type row_var_flag = Syn.Ast.row_var_flag
            type override_flag = Syn.Ast.override_flag
            val loc_of_ctyp : ctyp -> loc
            val loc_of_patt : patt -> loc
            val loc_of_expr : expr -> loc
            val loc_of_module_type : module_type -> loc
            val loc_of_module_expr : module_expr -> loc
            val loc_of_sig_item : sig_item -> loc
            val loc_of_str_item : str_item -> loc
            val loc_of_class_type : class_type -> loc
            val loc_of_class_sig_item : class_sig_item -> loc
            val loc_of_class_expr : class_expr -> loc
            val loc_of_class_str_item : class_str_item -> loc
            val loc_of_with_constr : with_constr -> loc
            val loc_of_binding : binding -> loc
            val loc_of_rec_binding : rec_binding -> loc
            val loc_of_module_binding : module_binding -> loc
            val loc_of_match_case : match_case -> loc
            val loc_of_ident : ident -> loc
            class map :
              object ('a)
                method binding : binding -> binding
                method class_expr : class_expr -> class_expr
                method class_sig_item : class_sig_item -> class_sig_item
                method class_str_item : class_str_item -> class_str_item
                method class_type : class_type -> class_type
                method ctyp : ctyp -> ctyp
                method direction_flag : direction_flag -> direction_flag
                method expr : expr -> expr
                method ident : ident -> ident
                method list : ('-> '-> 'c) -> 'b list -> 'c list
                method loc : loc -> loc
                method match_case : match_case -> match_case
                method meta_bool : meta_bool -> meta_bool
                method meta_list :
                  ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                method meta_option :
                  ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                method module_binding : module_binding -> module_binding
                method module_expr : module_expr -> module_expr
                method module_type : module_type -> module_type
                method mutable_flag : mutable_flag -> mutable_flag
                method override_flag : override_flag -> override_flag
                method patt : patt -> patt
                method private_flag : private_flag -> private_flag
                method rec_binding : rec_binding -> rec_binding
                method rec_flag : rec_flag -> rec_flag
                method row_var_flag : row_var_flag -> row_var_flag
                method sig_item : sig_item -> sig_item
                method str_item : str_item -> str_item
                method string : string -> string
                method unknown : '-> 'h
                method virtual_flag : virtual_flag -> virtual_flag
                method with_constr : with_constr -> with_constr
              end
            class fold :
              object ('a)
                method binding : binding -> 'a
                method class_expr : class_expr -> 'a
                method class_sig_item : class_sig_item -> 'a
                method class_str_item : class_str_item -> 'a
                method class_type : class_type -> 'a
                method ctyp : ctyp -> 'a
                method direction_flag : direction_flag -> 'a
                method expr : expr -> 'a
                method ident : ident -> 'a
                method list : ('-> '-> 'a) -> 'b list -> 'a
                method loc : loc -> 'a
                method match_case : match_case -> 'a
                method meta_bool : meta_bool -> 'a
                method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
                method module_binding : module_binding -> 'a
                method module_expr : module_expr -> 'a
                method module_type : module_type -> 'a
                method mutable_flag : mutable_flag -> 'a
                method override_flag : override_flag -> 'a
                method patt : patt -> 'a
                method private_flag : private_flag -> 'a
                method rec_binding : rec_binding -> 'a
                method rec_flag : rec_flag -> 'a
                method row_var_flag : row_var_flag -> 'a
                method sig_item : sig_item -> 'a
                method str_item : str_item -> 'a
                method string : string -> 'a
                method unknown : '-> 'a
                method virtual_flag : virtual_flag -> 'a
                method with_constr : with_constr -> 'a
              end
          end
        module Token :
          sig
            module Loc :
              sig
                type t = Syn.Loc.t
                val mk : string -> t
                val ghost : t
                val of_lexing_position : Lexing.position -> t
                val to_ocaml_location : t -> Camlp4_import.Location.t
                val of_ocaml_location : Camlp4_import.Location.t -> t
                val of_lexbuf : Lexing.lexbuf -> t
                val of_tuple :
                  string * int * int * int * int * int * int * bool -> t
                val to_tuple :
                  t -> string * int * int * int * int * int * int * bool
                val merge : t -> t -> t
                val join : t -> t
                val move : [ `both | `start | `stop ] -> int -> t -> t
                val shift : int -> t -> t
                val move_line : int -> t -> t
                val file_name : t -> string
                val start_line : t -> int
                val stop_line : t -> int
                val start_bol : t -> int
                val stop_bol : t -> int
                val start_off : t -> int
                val stop_off : t -> int
                val start_pos : t -> Lexing.position
                val stop_pos : t -> Lexing.position
                val is_ghost : t -> bool
                val ghostify : t -> t
                val set_file_name : string -> t -> t
                val strictly_before : t -> t -> bool
                val make_absolute : t -> t
                val print : Format.formatter -> t -> unit
                val dump : Format.formatter -> t -> unit
                val to_string : t -> string
                exception Exc_located of t * exn
                val raise : t -> exn -> 'a
                val name : string ref
              end
            type t = Syn.Token.t
            val to_string : t -> string
            val print : Format.formatter -> t -> unit
            val match_keyword : string -> t -> bool
            val extract_string : t -> string
            module Filter :
              sig
                type token_filter = (t, Loc.t) stream_filter
                type t = Syn.Token.Filter.t
                val mk : (string -> bool) -> t
                val define_filter :
                  t -> (token_filter -> token_filter) -> unit
                val filter : t -> token_filter
                val keyword_added : t -> string -> bool -> unit
                val keyword_removed : t -> string -> unit
              end
            module Error :
              sig
                type t = Syn.Token.Error.t
                exception E of t
                val to_string : t -> string
                val print : Format.formatter -> t -> unit
              end
          end
        module Gram :
          sig
            module Loc :
              sig
                type t = Syn.Loc.t
                val mk : string -> t
                val ghost : t
                val of_lexing_position : Lexing.position -> t
                val to_ocaml_location : t -> Camlp4_import.Location.t
                val of_ocaml_location : Camlp4_import.Location.t -> t
                val of_lexbuf : Lexing.lexbuf -> t
                val of_tuple :
                  string * int * int * int * int * int * int * bool -> t
                val to_tuple :
                  t -> string * int * int * int * int * int * int * bool
                val merge : t -> t -> t
                val join : t -> t
                val move : [ `both | `start | `stop ] -> int -> t -> t
                val shift : int -> t -> t
                val move_line : int -> t -> t
                val file_name : t -> string
                val start_line : t -> int
                val stop_line : t -> int
                val start_bol : t -> int
                val stop_bol : t -> int
                val start_off : t -> int
                val stop_off : t -> int
                val start_pos : t -> Lexing.position
                val stop_pos : t -> Lexing.position
                val is_ghost : t -> bool
                val ghostify : t -> t
                val set_file_name : string -> t -> t
                val strictly_before : t -> t -> bool
                val make_absolute : t -> t
                val print : Format.formatter -> t -> unit
                val dump : Format.formatter -> t -> unit
                val to_string : t -> string
                exception Exc_located of t * exn
                val raise : t -> exn -> 'a
                val name : string ref
              end
            module Action :
              sig
                type t = Syn.Gram.Action.t
                val mk : '-> t
                val get : t -> 'a
                val getf : t -> '-> 'b
                val getf2 : t -> '-> '-> 'c
              end
            module Token :
              sig
                module Loc :
                  sig
                    type t = Syn.Loc.t
                    val mk : string -> t
                    val ghost : t
                    val of_lexing_position : Lexing.position -> t
                    val to_ocaml_location : t -> Camlp4_import.Location.t
                    val of_ocaml_location : Camlp4_import.Location.t -> t
                    val of_lexbuf : Lexing.lexbuf -> t
                    val of_tuple :
                      string * int * int * int * int * int * int * bool -> t
                    val to_tuple :
                      t -> string * int * int * int * int * int * int * bool
                    val merge : t -> t -> t
                    val join : t -> t
                    val move : [ `both | `start | `stop ] -> int -> t -> t
                    val shift : int -> t -> t
                    val move_line : int -> t -> t
                    val file_name : t -> string
                    val start_line : t -> int
                    val stop_line : t -> int
                    val start_bol : t -> int
                    val stop_bol : t -> int
                    val start_off : t -> int
                    val stop_off : t -> int
                    val start_pos : t -> Lexing.position
                    val stop_pos : t -> Lexing.position
                    val is_ghost : t -> bool
                    val ghostify : t -> t
                    val set_file_name : string -> t -> t
                    val strictly_before : t -> t -> bool
                    val make_absolute : t -> t
                    val print : Format.formatter -> t -> unit
                    val dump : Format.formatter -> t -> unit
                    val to_string : t -> string
                    exception Exc_located of t * exn
                    val raise : t -> exn -> 'a
                    val name : string ref
                  end
                type t = Syn.Token.t
                val to_string : t -> string
                val print : Format.formatter -> t -> unit
                val match_keyword : string -> t -> bool
                val extract_string : t -> string
                module Filter :
                  sig
                    type token_filter = (t, Loc.t) stream_filter
                    type t = Syn.Token.Filter.t
                    val mk : (string -> bool) -> t
                    val define_filter :
                      t -> (token_filter -> token_filter) -> unit
                    val filter : t -> token_filter
                    val keyword_added : t -> string -> bool -> unit
                    val keyword_removed : t -> string -> unit
                  end
                module Error :
                  sig
                    type t = Syn.Token.Error.t
                    exception E of t
                    val to_string : t -> string
                    val print : Format.formatter -> t -> unit
                  end
              end
            type gram = Syn.Gram.gram
            type internal_entry = Syn.Gram.internal_entry
            type tree = Syn.Gram.tree
            type token_pattern = (Token.t -> bool) * string
            type token_info = Syn.Gram.token_info
            type token_stream = (Token.t * token_info) Stream.t
            val token_location : token_info -> Loc.t
            type symbol =
              Syn.Gram.symbol =
                Smeta of string * symbol list * Action.t
              | Snterm of internal_entry
              | Snterml of internal_entry * string
              | Slist0 of symbol
              | Slist0sep of symbol * symbol
              | Slist1 of symbol
              | Slist1sep of symbol * symbol
              | Sopt of symbol
              | Stry of symbol
              | Sself
              | Snext
              | Stoken of token_pattern
              | Skeyword of string
              | Stree of tree
            type production_rule = symbol list * Action.t
            type single_extend_statment =
                string option * Grammar.assoc option * production_rule list
            type extend_statment =
                Grammar.position option * single_extend_statment list
            type delete_statment = symbol list
            type ('a, 'b, 'c) fold =
                internal_entry ->
                symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
            type ('a, 'b, 'c) foldsep =
                internal_entry ->
                symbol list ->
                ('Stream.t -> 'b) ->
                ('Stream.t -> unit) -> 'Stream.t -> 'c
            module Entry :
              sig
                type 'a t = 'Syn.Gram.Entry.t
                val mk : string -> 'a t
                val of_parser : string -> (token_stream -> 'a) -> 'a t
                val setup_parser : 'a t -> (token_stream -> 'a) -> unit
                val name : 'a t -> string
                val print : Format.formatter -> 'a t -> unit
                val dump : Format.formatter -> 'a t -> unit
                val obj : 'a t -> internal_entry
                val clear : 'a t -> unit
              end
            val get_filter : unit -> Token.Filter.t
            type 'a not_filtered = 'Syn.Gram.not_filtered
            val extend : 'Entry.t -> extend_statment -> unit
            val delete_rule : 'Entry.t -> delete_statment -> unit
            val srules :
              'Entry.t -> (symbol list * Action.t) list -> symbol
            val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
            val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
            val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
            val lex :
              Loc.t ->
              char Stream.t -> (Token.t * Loc.t) Stream.t not_filtered
            val lex_string :
              Loc.t -> string -> (Token.t * Loc.t) Stream.t not_filtered
            val filter :
              (Token.t * Loc.t) Stream.t not_filtered -> token_stream
            val parse : 'Entry.t -> Loc.t -> char Stream.t -> 'a
            val parse_string : 'Entry.t -> Loc.t -> string -> 'a
            val parse_tokens_before_filter :
              'Entry.t -> (Token.t * Loc.t) Stream.t not_filtered -> 'a
            val parse_tokens_after_filter : 'Entry.t -> token_stream -> 'a
          end
        module Quotation :
          sig
            module Ast :
              sig
                type loc = Syn.Loc.t
                type meta_bool = Syn.Ast.meta_bool
                type 'a meta_option = 'Syn.Ast.meta_option
                type 'a meta_list = 'Syn.Ast.meta_list
                type ctyp = Syn.Ast.ctyp
                type patt = Syn.Ast.patt
                type expr = Syn.Ast.expr
                type module_type = Syn.Ast.module_type
                type sig_item = Syn.Ast.sig_item
                type with_constr = Syn.Ast.with_constr
                type module_expr = Syn.Ast.module_expr
                type str_item = Syn.Ast.str_item
                type class_type = Syn.Ast.class_type
                type class_sig_item = Syn.Ast.class_sig_item
                type class_expr = Syn.Ast.class_expr
                type class_str_item = Syn.Ast.class_str_item
                type match_case = Syn.Ast.match_case
                type ident = Syn.Ast.ident
                type binding = Syn.Ast.binding
                type rec_binding = Syn.Ast.rec_binding
                type module_binding = Syn.Ast.module_binding
                type rec_flag = Syn.Ast.rec_flag
                type direction_flag = Syn.Ast.direction_flag
                type mutable_flag = Syn.Ast.mutable_flag
                type private_flag = Syn.Ast.private_flag
                type virtual_flag = Syn.Ast.virtual_flag
                type row_var_flag = Syn.Ast.row_var_flag
                type override_flag = Syn.Ast.override_flag
                val loc_of_ctyp : ctyp -> loc
                val loc_of_patt : patt -> loc
                val loc_of_expr : expr -> loc
                val loc_of_module_type : module_type -> loc
                val loc_of_module_expr : module_expr -> loc
                val loc_of_sig_item : sig_item -> loc
                val loc_of_str_item : str_item -> loc
                val loc_of_class_type : class_type -> loc
                val loc_of_class_sig_item : class_sig_item -> loc
                val loc_of_class_expr : class_expr -> loc
                val loc_of_class_str_item : class_str_item -> loc
                val loc_of_with_constr : with_constr -> loc
                val loc_of_binding : binding -> loc
                val loc_of_rec_binding : rec_binding -> loc
                val loc_of_module_binding : module_binding -> loc
                val loc_of_match_case : match_case -> loc
                val loc_of_ident : ident -> loc
                class map :
                  object ('a)
                    method binding : binding -> binding
                    method class_expr : class_expr -> class_expr
                    method class_sig_item : class_sig_item -> class_sig_item
                    method class_str_item : class_str_item -> class_str_item
                    method class_type : class_type -> class_type
                    method ctyp : ctyp -> ctyp
                    method direction_flag : direction_flag -> direction_flag
                    method expr : expr -> expr
                    method ident : ident -> ident
                    method list : ('-> '-> 'c) -> 'b list -> 'c list
                    method loc : loc -> loc
                    method match_case : match_case -> match_case
                    method meta_bool : meta_bool -> meta_bool
                    method meta_list :
                      ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                    method meta_option :
                      ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                    method module_binding : module_binding -> module_binding
                    method module_expr : module_expr -> module_expr
                    method module_type : module_type -> module_type
                    method mutable_flag : mutable_flag -> mutable_flag
                    method override_flag : override_flag -> override_flag
                    method patt : patt -> patt
                    method private_flag : private_flag -> private_flag
                    method rec_binding : rec_binding -> rec_binding
                    method rec_flag : rec_flag -> rec_flag
                    method row_var_flag : row_var_flag -> row_var_flag
                    method sig_item : sig_item -> sig_item
                    method str_item : str_item -> str_item
                    method string : string -> string
                    method unknown : '-> 'h
                    method virtual_flag : virtual_flag -> virtual_flag
                    method with_constr : with_constr -> with_constr
                  end
                class fold :
                  object ('a)
                    method binding : binding -> 'a
                    method class_expr : class_expr -> 'a
                    method class_sig_item : class_sig_item -> 'a
                    method class_str_item : class_str_item -> 'a
                    method class_type : class_type -> 'a
                    method ctyp : ctyp -> 'a
                    method direction_flag : direction_flag -> 'a
                    method expr : expr -> 'a
                    method ident : ident -> 'a
                    method list : ('-> '-> 'a) -> 'b list -> 'a
                    method loc : loc -> 'a
                    method match_case : match_case -> 'a
                    method meta_bool : meta_bool -> 'a
                    method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                    method meta_option :
                      ('-> '-> 'a) -> 'd meta_option -> 'a
                    method module_binding : module_binding -> 'a
                    method module_expr : module_expr -> 'a
                    method module_type : module_type -> 'a
                    method mutable_flag : mutable_flag -> 'a
                    method override_flag : override_flag -> 'a
                    method patt : patt -> 'a
                    method private_flag : private_flag -> 'a
                    method rec_binding : rec_binding -> 'a
                    method rec_flag : rec_flag -> 'a
                    method row_var_flag : row_var_flag -> 'a
                    method sig_item : sig_item -> 'a
                    method str_item : str_item -> 'a
                    method string : string -> 'a
                    method unknown : '-> 'a
                    method virtual_flag : virtual_flag -> 'a
                    method with_constr : with_constr -> 'a
                  end
              end
            module DynAst :
              sig
                module Ast :
                  sig
                    type loc = Ast.loc
                    type meta_bool = Ast.meta_bool
                    type 'a meta_option = 'Ast.meta_option
                    type 'a meta_list = 'Ast.meta_list
                    type ctyp = Ast.ctyp
                    type patt = Ast.patt
                    type expr = Ast.expr
                    type module_type = Ast.module_type
                    type sig_item = Ast.sig_item
                    type with_constr = Ast.with_constr
                    type module_expr = Ast.module_expr
                    type str_item = Ast.str_item
                    type class_type = Ast.class_type
                    type class_sig_item = Ast.class_sig_item
                    type class_expr = Ast.class_expr
                    type class_str_item = Ast.class_str_item
                    type match_case = Ast.match_case
                    type ident = Ast.ident
                    type binding = Ast.binding
                    type rec_binding = Ast.rec_binding
                    type module_binding = Ast.module_binding
                    type rec_flag = Ast.rec_flag
                    type direction_flag = Ast.direction_flag
                    type mutable_flag = Ast.mutable_flag
                    type private_flag = Ast.private_flag
                    type virtual_flag = Ast.virtual_flag
                    type row_var_flag = Ast.row_var_flag
                    type override_flag = Ast.override_flag
                    val loc_of_ctyp : ctyp -> loc
                    val loc_of_patt : patt -> loc
                    val loc_of_expr : expr -> loc
                    val loc_of_module_type : module_type -> loc
                    val loc_of_module_expr : module_expr -> loc
                    val loc_of_sig_item : sig_item -> loc
                    val loc_of_str_item : str_item -> loc
                    val loc_of_class_type : class_type -> loc
                    val loc_of_class_sig_item : class_sig_item -> loc
                    val loc_of_class_expr : class_expr -> loc
                    val loc_of_class_str_item : class_str_item -> loc
                    val loc_of_with_constr : with_constr -> loc
                    val loc_of_binding : binding -> loc
                    val loc_of_rec_binding : rec_binding -> loc
                    val loc_of_module_binding : module_binding -> loc
                    val loc_of_match_case : match_case -> loc
                    val loc_of_ident : ident -> loc
                    class map :
                      object ('a)
                        method binding : binding -> binding
                        method class_expr : class_expr -> class_expr
                        method class_sig_item :
                          class_sig_item -> class_sig_item
                        method class_str_item :
                          class_str_item -> class_str_item
                        method class_type : class_type -> class_type
                        method ctyp : ctyp -> ctyp
                        method direction_flag :
                          direction_flag -> direction_flag
                        method expr : expr -> expr
                        method ident : ident -> ident
                        method list : ('-> '-> 'c) -> 'b list -> 'c list
                        method loc : loc -> loc
                        method match_case : match_case -> match_case
                        method meta_bool : meta_bool -> meta_bool
                        method meta_list :
                          ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                        method meta_option :
                          ('-> '-> 'g) ->
                          'f meta_option -> 'g meta_option
                        method module_binding :
                          module_binding -> module_binding
                        method module_expr : module_expr -> module_expr
                        method module_type : module_type -> module_type
                        method mutable_flag : mutable_flag -> mutable_flag
                        method override_flag : override_flag -> override_flag
                        method patt : patt -> patt
                        method private_flag : private_flag -> private_flag
                        method rec_binding : rec_binding -> rec_binding
                        method rec_flag : rec_flag -> rec_flag
                        method row_var_flag : row_var_flag -> row_var_flag
                        method sig_item : sig_item -> sig_item
                        method str_item : str_item -> str_item
                        method string : string -> string
                        method unknown : '-> 'h
                        method virtual_flag : virtual_flag -> virtual_flag
                        method with_constr : with_constr -> with_constr
                      end
                    class fold :
                      object ('a)
                        method binding : binding -> 'a
                        method class_expr : class_expr -> 'a
                        method class_sig_item : class_sig_item -> 'a
                        method class_str_item : class_str_item -> 'a
                        method class_type : class_type -> 'a
                        method ctyp : ctyp -> 'a
                        method direction_flag : direction_flag -> 'a
                        method expr : expr -> 'a
                        method ident : ident -> 'a
                        method list : ('-> '-> 'a) -> 'b list -> 'a
                        method loc : loc -> 'a
                        method match_case : match_case -> 'a
                        method meta_bool : meta_bool -> 'a
                        method meta_list :
                          ('-> '-> 'a) -> 'c meta_list -> 'a
                        method meta_option :
                          ('-> '-> 'a) -> 'd meta_option -> 'a
                        method module_binding : module_binding -> 'a
                        method module_expr : module_expr -> 'a
                        method module_type : module_type -> 'a
                        method mutable_flag : mutable_flag -> 'a
                        method override_flag : override_flag -> 'a
                        method patt : patt -> 'a
                        method private_flag : private_flag -> 'a
                        method rec_binding : rec_binding -> 'a
                        method rec_flag : rec_flag -> 'a
                        method row_var_flag : row_var_flag -> 'a
                        method sig_item : sig_item -> 'a
                        method str_item : str_item -> 'a
                        method string : string -> 'a
                        method unknown : '-> 'a
                        method virtual_flag : virtual_flag -> 'a
                        method with_constr : with_constr -> 'a
                      end
                  end
                type 'a tag = 'Syn.Quotation.DynAst.tag
                val ctyp_tag : Ast.ctyp tag
                val patt_tag : Ast.patt tag
                val expr_tag : Ast.expr tag
                val module_type_tag : Ast.module_type tag
                val sig_item_tag : Ast.sig_item tag
                val with_constr_tag : Ast.with_constr tag
                val module_expr_tag : Ast.module_expr tag
                val str_item_tag : Ast.str_item tag
                val class_type_tag : Ast.class_type tag
                val class_sig_item_tag : Ast.class_sig_item tag
                val class_expr_tag : Ast.class_expr tag
                val class_str_item_tag : Ast.class_str_item tag
                val match_case_tag : Ast.match_case tag
                val ident_tag : Ast.ident tag
                val binding_tag : Ast.binding tag
                val rec_binding_tag : Ast.rec_binding tag
                val module_binding_tag : Ast.module_binding tag
                val string_of_tag : 'a tag -> string
                module Pack :
                  functor (X : sig type 'a t end->
                    sig
                      type pack = Syn.Quotation.DynAst.Pack(X).pack
                      val pack : 'a tag -> 'X.t -> pack
                      val unpack : 'a tag -> pack -> 'X.t
                      val print_tag : Format.formatter -> pack -> unit
                    end
              end
            type 'a expand_fun = Ast.loc -> string option -> string -> 'a
            val add : string -> 'DynAst.tag -> 'a expand_fun -> unit
            val find : string -> 'DynAst.tag -> 'a expand_fun
            val default : string ref
            val parse_quotation_result :
              (Ast.loc -> string -> 'a) ->
              Ast.loc -> quotation -> string -> string -> 'a
            val translate : (string -> string) ref
            val expand : Ast.loc -> quotation -> 'DynAst.tag -> 'a
            val dump_file : string option ref
            module Error :
              sig
                type t = Syn.Quotation.Error.t
                exception E of t
                val to_string : t -> string
                val print : Format.formatter -> t -> unit
              end
          end
        module AntiquotSyntax : Parser(Ast).SIMPLE
        type warning = Loc.t -> string -> unit
        val default_warning : warning
        val current_warning : warning ref
        val print_warning : warning
        val parse_implem :
          ?directive_handler:(Ast.str_item -> Ast.str_item option) ->
          Ast.loc -> char Stream.t -> Ast.str_item
        val parse_interf :
          ?directive_handler:(Ast.sig_item -> Ast.sig_item option) ->
          Ast.loc -> char Stream.t -> Ast.sig_item
        val print_interf :
          ?input_file:string -> ?output_file:string -> Ast.sig_item -> unit
        val print_implem :
          ?input_file:string -> ?output_file:string -> Ast.str_item -> unit
      end
end