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