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