sig
  val def_add_location_comment_flag : bool Pervasives.ref
  val def_add_location_comment :
    Typed_ast.def -> Output.t * Typed_ast.def_aux
  val inline_exp_macro :
    Target.non_ident_target ->
    Typed_ast.env ->
    Macro_expander.macro_context -> Typed_ast.exp -> Typed_ast.exp option
  val inline_pat_macro :
    Target.non_ident_target ->
    Typed_ast.env -> '-> '-> Typed_ast.pat -> Typed_ast.pat option
  val component_to_output : Ast.component -> Output.t
  val get_module_name :
    Typed_ast.env -> Target.target -> Name.t list -> Name.t -> Name.t
  val get_module_open_string :
    Typed_ast.env -> Target.target -> string -> Path.t -> string
  val get_imported_target_modules :
    Typed_ast.def list * Ast.lex_skips -> Typed_ast.imported_modules list
  val imported_modules_to_strings :
    Typed_ast.env ->
    Target.target -> string -> Typed_ast.imported_modules list -> string list
  module Make :
    functor
      (A : sig
             val env : Typed_ast.env
             val target : Target.target
             val dir : string
             val id_format_args :
               (bool -> Output.id_annot -> Ulib.Text.t -> Output.t) *
               Ulib.Text.t
           end->
      sig
        val open_to_open_target :
          Path.t Types.id list ->
          (Typed_ast.lskips * string) list * Typed_ast.lskips
        val function_application_to_output :
          Ast.l ->
          (Typed_ast.exp -> Output.t) ->
          bool ->
          Typed_ast.exp ->
          Types.const_descr_ref Types.id ->
          Typed_ast.exp list -> bool -> Output.t list
        val pattern_application_to_output :
          Ast.l ->
          (Typed_ast.pat -> Output.t) ->
          Types.const_descr_ref Types.id ->
          Typed_ast.pat list -> bool -> Output.t list
        val const_id_to_ident :
          Types.const_descr_ref Types.id -> bool -> Ident.t
        val const_ref_to_name :
          Name.lskips_t -> bool -> Types.const_descr_ref -> Name.lskips_t
        val type_path_to_name : Name.lskips_t -> Path.t -> Name.lskips_t
        val type_id_to_ident : Path.t Types.id -> Ident.t
        val type_id_to_output : Path.t Types.id -> Output.t
        val type_id_to_ident_no_modify : Path.t Types.id -> Ident.t
        val type_app_to_output :
          (Types.src_t -> Output.t) ->
          Path.t Types.id -> Types.src_t list -> Types.src_t list * Output.t
        val module_id_to_ident : Path.t Types.id -> Ident.t
      end
end