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