-#define ATTR_compiling_base___ToolContext____global(recv) ATTR(recv, (SFT_compiling_base[0] + 0))
-#define ATTR_compiling_base___ToolContext____compdir(recv) ATTR(recv, (SFT_compiling_base[0] + 1))
-#define ATTR_compiling_base___ToolContext____clibdir(recv) ATTR(recv, (SFT_compiling_base[0] + 2))
-#define ATTR_compiling_base___ToolContext____bindir(recv) ATTR(recv, (SFT_compiling_base[0] + 3))
-#define ATTR_compiling_base___ToolContext____output_file(recv) ATTR(recv, (SFT_compiling_base[0] + 4))
-#define ATTR_compiling_base___ToolContext____boost(recv) ATTR(recv, (SFT_compiling_base[0] + 5))
-#define ATTR_compiling_base___ToolContext____no_cc(recv) ATTR(recv, (SFT_compiling_base[0] + 6))
-#define ATTR_compiling_base___ToolContext____ext_prefix(recv) ATTR(recv, (SFT_compiling_base[0] + 7))
-#define CALL_compiling_base___ToolContext___global(recv) ((compiling_base___ToolContext___global_t)CALL((recv), (SFT_compiling_base[1] + 0)))
-#define CALL_compiling_base___ToolContext___global__eq(recv) ((compiling_base___ToolContext___global__eq_t)CALL((recv), (SFT_compiling_base[1] + 1)))
-#define CALL_compiling_base___ToolContext___compdir(recv) ((compiling_base___ToolContext___compdir_t)CALL((recv), (SFT_compiling_base[1] + 2)))
-#define CALL_compiling_base___ToolContext___compdir__eq(recv) ((compiling_base___ToolContext___compdir__eq_t)CALL((recv), (SFT_compiling_base[1] + 3)))
-#define CALL_compiling_base___ToolContext___clibdir(recv) ((compiling_base___ToolContext___clibdir_t)CALL((recv), (SFT_compiling_base[1] + 4)))
-#define CALL_compiling_base___ToolContext___clibdir__eq(recv) ((compiling_base___ToolContext___clibdir__eq_t)CALL((recv), (SFT_compiling_base[1] + 5)))
-#define CALL_compiling_base___ToolContext___bindir(recv) ((compiling_base___ToolContext___bindir_t)CALL((recv), (SFT_compiling_base[1] + 6)))
-#define CALL_compiling_base___ToolContext___bindir__eq(recv) ((compiling_base___ToolContext___bindir__eq_t)CALL((recv), (SFT_compiling_base[1] + 7)))
-#define CALL_compiling_base___ToolContext___output_file(recv) ((compiling_base___ToolContext___output_file_t)CALL((recv), (SFT_compiling_base[1] + 8)))
-#define CALL_compiling_base___ToolContext___output_file__eq(recv) ((compiling_base___ToolContext___output_file__eq_t)CALL((recv), (SFT_compiling_base[1] + 9)))
-#define CALL_compiling_base___ToolContext___boost(recv) ((compiling_base___ToolContext___boost_t)CALL((recv), (SFT_compiling_base[1] + 10)))
-#define CALL_compiling_base___ToolContext___boost__eq(recv) ((compiling_base___ToolContext___boost__eq_t)CALL((recv), (SFT_compiling_base[1] + 11)))
-#define CALL_compiling_base___ToolContext___no_cc(recv) ((compiling_base___ToolContext___no_cc_t)CALL((recv), (SFT_compiling_base[1] + 12)))
-#define CALL_compiling_base___ToolContext___no_cc__eq(recv) ((compiling_base___ToolContext___no_cc__eq_t)CALL((recv), (SFT_compiling_base[1] + 13)))
-#define CALL_compiling_base___ToolContext___ext_prefix(recv) ((compiling_base___ToolContext___ext_prefix_t)CALL((recv), (SFT_compiling_base[1] + 14)))
-#define CALL_compiling_base___ToolContext___ext_prefix__eq(recv) ((compiling_base___ToolContext___ext_prefix__eq_t)CALL((recv), (SFT_compiling_base[1] + 15)))
-#define ID_CompilerVisitor (SFT_compiling_base[2])
-#define COLOR_CompilerVisitor (SFT_compiling_base[3])
-#define ATTR_compiling_base___CompilerVisitor____number_cpt(recv) ATTR(recv, (SFT_compiling_base[4] + 0))
-#define ATTR_compiling_base___CompilerVisitor____module(recv) ATTR(recv, (SFT_compiling_base[4] + 1))
-#define ATTR_compiling_base___CompilerVisitor____ctx(recv) ATTR(recv, (SFT_compiling_base[4] + 2))
-#define ATTR_compiling_base___CompilerVisitor____indent_level(recv) ATTR(recv, (SFT_compiling_base[4] + 3))
-#define ATTR_compiling_base___CompilerVisitor____tc(recv) ATTR(recv, (SFT_compiling_base[4] + 4))
-#define INIT_TABLE_POS_CompilerVisitor (SFT_compiling_base[5] + 0)
-#define CALL_compiling_base___CompilerVisitor___add_decl(recv) ((compiling_base___CompilerVisitor___add_decl_t)CALL((recv), (SFT_compiling_base[5] + 1)))
-#define CALL_compiling_base___CompilerVisitor___add_instr(recv) ((compiling_base___CompilerVisitor___add_instr_t)CALL((recv), (SFT_compiling_base[5] + 2)))
-#define CALL_compiling_base___CompilerVisitor___new_number(recv) ((compiling_base___CompilerVisitor___new_number_t)CALL((recv), (SFT_compiling_base[5] + 3)))
-#define CALL_compiling_base___CompilerVisitor___indent(recv) ((compiling_base___CompilerVisitor___indent_t)CALL((recv), (SFT_compiling_base[5] + 4)))
-#define CALL_compiling_base___CompilerVisitor___unindent(recv) ((compiling_base___CompilerVisitor___unindent_t)CALL((recv), (SFT_compiling_base[5] + 5)))
-#define CALL_compiling_base___CompilerVisitor___module(recv) ((compiling_base___CompilerVisitor___module_t)CALL((recv), (SFT_compiling_base[5] + 6)))
-#define CALL_compiling_base___CompilerVisitor___ctx(recv) ((compiling_base___CompilerVisitor___ctx_t)CALL((recv), (SFT_compiling_base[5] + 7)))
-#define CALL_compiling_base___CompilerVisitor___ctx__eq(recv) ((compiling_base___CompilerVisitor___ctx__eq_t)CALL((recv), (SFT_compiling_base[5] + 8)))
-#define CALL_compiling_base___CompilerVisitor___indent_level(recv) ((compiling_base___CompilerVisitor___indent_level_t)CALL((recv), (SFT_compiling_base[5] + 9)))
-#define CALL_compiling_base___CompilerVisitor___indent_level__eq(recv) ((compiling_base___CompilerVisitor___indent_level__eq_t)CALL((recv), (SFT_compiling_base[5] + 10)))
-#define CALL_compiling_base___CompilerVisitor___tc(recv) ((compiling_base___CompilerVisitor___tc_t)CALL((recv), (SFT_compiling_base[5] + 11)))
-#define CALL_compiling_base___CompilerVisitor___init(recv) ((compiling_base___CompilerVisitor___init_t)CALL((recv), (SFT_compiling_base[5] + 12)))
-#define ID_CContext (SFT_compiling_base[6])
-#define COLOR_CContext (SFT_compiling_base[7])
-#define ATTR_compiling_base___CContext____decls(recv) ATTR(recv, (SFT_compiling_base[8] + 0))
-#define ATTR_compiling_base___CContext____instrs(recv) ATTR(recv, (SFT_compiling_base[8] + 1))
-#define INIT_TABLE_POS_CContext (SFT_compiling_base[9] + 0)
-#define CALL_compiling_base___CContext___decls(recv) ((compiling_base___CContext___decls_t)CALL((recv), (SFT_compiling_base[9] + 1)))
-#define CALL_compiling_base___CContext___instrs(recv) ((compiling_base___CContext___instrs_t)CALL((recv), (SFT_compiling_base[9] + 2)))
-#define CALL_compiling_base___CContext___append(recv) ((compiling_base___CContext___append_t)CALL((recv), (SFT_compiling_base[9] + 3)))
-#define CALL_compiling_base___CContext___merge(recv) ((compiling_base___CContext___merge_t)CALL((recv), (SFT_compiling_base[9] + 4)))
-#define CALL_compiling_base___CContext___init(recv) ((compiling_base___CContext___init_t)CALL((recv), (SFT_compiling_base[9] + 5)))
+#define ATTR_compiling_base___ToolContext____compdir(recv) ATTR(recv, (SFT_compiling_base[0] + 0))
+#define ATTR_compiling_base___ToolContext____clibdir(recv) ATTR(recv, (SFT_compiling_base[0] + 1))
+#define ATTR_compiling_base___ToolContext____bindir(recv) ATTR(recv, (SFT_compiling_base[0] + 2))
+#define ATTR_compiling_base___ToolContext____output_file(recv) ATTR(recv, (SFT_compiling_base[0] + 3))
+#define ATTR_compiling_base___ToolContext____boost(recv) ATTR(recv, (SFT_compiling_base[0] + 4))
+#define ATTR_compiling_base___ToolContext____no_cc(recv) ATTR(recv, (SFT_compiling_base[0] + 5))
+#define ATTR_compiling_base___ToolContext____cc_link(recv) ATTR(recv, (SFT_compiling_base[0] + 6))
+#define ATTR_compiling_base___ToolContext____cc_libs(recv) ATTR(recv, (SFT_compiling_base[0] + 7))
+#define ATTR_compiling_base___ToolContext____cc_lib_paths(recv) ATTR(recv, (SFT_compiling_base[0] + 8))
+#define ATTR_compiling_base___ToolContext____cc_include_paths(recv) ATTR(recv, (SFT_compiling_base[0] + 9))
+#define ATTR_compiling_base___ToolContext____ext_prefix(recv) ATTR(recv, (SFT_compiling_base[0] + 10))
+#define CALL_compiling_base___ToolContext___compdir(recv) ((compiling_base___ToolContext___compdir_t)CALL((recv), (SFT_compiling_base[1] + 0)))
+#define CALL_compiling_base___ToolContext___compdir__eq(recv) ((compiling_base___ToolContext___compdir__eq_t)CALL((recv), (SFT_compiling_base[1] + 1)))
+#define CALL_compiling_base___ToolContext___clibdir(recv) ((compiling_base___ToolContext___clibdir_t)CALL((recv), (SFT_compiling_base[1] + 2)))
+#define CALL_compiling_base___ToolContext___clibdir__eq(recv) ((compiling_base___ToolContext___clibdir__eq_t)CALL((recv), (SFT_compiling_base[1] + 3)))
+#define CALL_compiling_base___ToolContext___bindir(recv) ((compiling_base___ToolContext___bindir_t)CALL((recv), (SFT_compiling_base[1] + 4)))
+#define CALL_compiling_base___ToolContext___bindir__eq(recv) ((compiling_base___ToolContext___bindir__eq_t)CALL((recv), (SFT_compiling_base[1] + 5)))
+#define CALL_compiling_base___ToolContext___output_file(recv) ((compiling_base___ToolContext___output_file_t)CALL((recv), (SFT_compiling_base[1] + 6)))
+#define CALL_compiling_base___ToolContext___output_file__eq(recv) ((compiling_base___ToolContext___output_file__eq_t)CALL((recv), (SFT_compiling_base[1] + 7)))
+#define CALL_compiling_base___ToolContext___boost(recv) ((compiling_base___ToolContext___boost_t)CALL((recv), (SFT_compiling_base[1] + 8)))
+#define CALL_compiling_base___ToolContext___boost__eq(recv) ((compiling_base___ToolContext___boost__eq_t)CALL((recv), (SFT_compiling_base[1] + 9)))
+#define CALL_compiling_base___ToolContext___no_cc(recv) ((compiling_base___ToolContext___no_cc_t)CALL((recv), (SFT_compiling_base[1] + 10)))
+#define CALL_compiling_base___ToolContext___no_cc__eq(recv) ((compiling_base___ToolContext___no_cc__eq_t)CALL((recv), (SFT_compiling_base[1] + 11)))
+#define CALL_compiling_base___ToolContext___cc_link(recv) ((compiling_base___ToolContext___cc_link_t)CALL((recv), (SFT_compiling_base[1] + 12)))
+#define CALL_compiling_base___ToolContext___cc_link__eq(recv) ((compiling_base___ToolContext___cc_link__eq_t)CALL((recv), (SFT_compiling_base[1] + 13)))
+#define CALL_compiling_base___ToolContext___cc_libs(recv) ((compiling_base___ToolContext___cc_libs_t)CALL((recv), (SFT_compiling_base[1] + 14)))
+#define CALL_compiling_base___ToolContext___cc_libs__eq(recv) ((compiling_base___ToolContext___cc_libs__eq_t)CALL((recv), (SFT_compiling_base[1] + 15)))
+#define CALL_compiling_base___ToolContext___cc_lib_paths(recv) ((compiling_base___ToolContext___cc_lib_paths_t)CALL((recv), (SFT_compiling_base[1] + 16)))
+#define CALL_compiling_base___ToolContext___cc_lib_paths__eq(recv) ((compiling_base___ToolContext___cc_lib_paths__eq_t)CALL((recv), (SFT_compiling_base[1] + 17)))
+#define CALL_compiling_base___ToolContext___cc_include_paths(recv) ((compiling_base___ToolContext___cc_include_paths_t)CALL((recv), (SFT_compiling_base[1] + 18)))
+#define CALL_compiling_base___ToolContext___cc_include_paths__eq(recv) ((compiling_base___ToolContext___cc_include_paths__eq_t)CALL((recv), (SFT_compiling_base[1] + 19)))
+#define CALL_compiling_base___ToolContext___ext_prefix(recv) ((compiling_base___ToolContext___ext_prefix_t)CALL((recv), (SFT_compiling_base[1] + 20)))
+#define CALL_compiling_base___ToolContext___ext_prefix__eq(recv) ((compiling_base___ToolContext___ext_prefix__eq_t)CALL((recv), (SFT_compiling_base[1] + 21)))
+#define ID_CProgram (SFT_compiling_base[2])
+#define COLOR_CProgram (SFT_compiling_base[3])
+#define ATTR_compiling_base___CProgram____program(recv) ATTR(recv, (SFT_compiling_base[4] + 0))
+#define ATTR_compiling_base___CProgram____files(recv) ATTR(recv, (SFT_compiling_base[4] + 1))
+#define ATTR_compiling_base___CProgram____include_dirs(recv) ATTR(recv, (SFT_compiling_base[4] + 2))
+#define ATTR_compiling_base___CProgram____build_file(recv) ATTR(recv, (SFT_compiling_base[4] + 3))
+#define ATTR_compiling_base___CProgram____compdir(recv) ATTR(recv, (SFT_compiling_base[4] + 4))
+#define ATTR_compiling_base___CProgram____module_include(recv) ATTR(recv, (SFT_compiling_base[4] + 5))
+#define INIT_TABLE_POS_CProgram (SFT_compiling_base[5] + 0)
+#define CALL_compiling_base___CProgram___init(recv) ((compiling_base___CProgram___init_t)CALL((recv), (SFT_compiling_base[5] + 1)))
+#define CALL_compiling_base___CProgram___program(recv) ((compiling_base___CProgram___program_t)CALL((recv), (SFT_compiling_base[5] + 2)))
+#define CALL_compiling_base___CProgram___files(recv) ((compiling_base___CProgram___files_t)CALL((recv), (SFT_compiling_base[5] + 3)))
+#define CALL_compiling_base___CProgram___include_dirs(recv) ((compiling_base___CProgram___include_dirs_t)CALL((recv), (SFT_compiling_base[5] + 4)))
+#define CALL_compiling_base___CProgram___build_file(recv) ((compiling_base___CProgram___build_file_t)CALL((recv), (SFT_compiling_base[5] + 5)))
+#define CALL_compiling_base___CProgram___compdir(recv) ((compiling_base___CProgram___compdir_t)CALL((recv), (SFT_compiling_base[5] + 6)))
+#define CALL_compiling_base___CProgram___module_header_name(recv) ((compiling_base___CProgram___module_header_name_t)CALL((recv), (SFT_compiling_base[5] + 7)))
+#define CALL_compiling_base___CProgram___get_file_ending(recv) ((compiling_base___CProgram___get_file_ending_t)CALL((recv), (SFT_compiling_base[5] + 8)))
+#define CALL_compiling_base___CProgram___generate_build_file(recv) ((compiling_base___CProgram___generate_build_file_t)CALL((recv), (SFT_compiling_base[5] + 9)))
+#define CALL_compiling_base___CProgram___run_c_compiler(recv) ((compiling_base___CProgram___run_c_compiler_t)CALL((recv), (SFT_compiling_base[5] + 10)))
+#define ID_CompilerVisitor (SFT_compiling_base[6])
+#define COLOR_CompilerVisitor (SFT_compiling_base[7])
+#define ATTR_compiling_base___CompilerVisitor____number_cpt(recv) ATTR(recv, (SFT_compiling_base[8] + 0))
+#define ATTR_compiling_base___CompilerVisitor____mmmodule(recv) ATTR(recv, (SFT_compiling_base[8] + 1))
+#define ATTR_compiling_base___CompilerVisitor____header_writer(recv) ATTR(recv, (SFT_compiling_base[8] + 2))
+#define ATTR_compiling_base___CompilerVisitor____writer(recv) ATTR(recv, (SFT_compiling_base[8] + 3))
+#define ATTR_compiling_base___CompilerVisitor____decl_writer(recv) ATTR(recv, (SFT_compiling_base[8] + 4))
+#define ATTR_compiling_base___CompilerVisitor____top_writer(recv) ATTR(recv, (SFT_compiling_base[8] + 5))
+#define ATTR_compiling_base___CompilerVisitor____top_decl_writer(recv) ATTR(recv, (SFT_compiling_base[8] + 6))
+#define ATTR_compiling_base___CompilerVisitor____indent_level(recv) ATTR(recv, (SFT_compiling_base[8] + 7))
+#define ATTR_compiling_base___CompilerVisitor____program(recv) ATTR(recv, (SFT_compiling_base[8] + 8))
+#define ATTR_compiling_base___CompilerVisitor____cprogram(recv) ATTR(recv, (SFT_compiling_base[8] + 9))
+#define INIT_TABLE_POS_CompilerVisitor (SFT_compiling_base[9] + 0)
+#define CALL_compiling_base___CompilerVisitor___add_decl(recv) ((compiling_base___CompilerVisitor___add_decl_t)CALL((recv), (SFT_compiling_base[9] + 1)))
+#define CALL_compiling_base___CompilerVisitor___add_instr(recv) ((compiling_base___CompilerVisitor___add_instr_t)CALL((recv), (SFT_compiling_base[9] + 2)))
+#define CALL_compiling_base___CompilerVisitor___add_indent(recv) ((compiling_base___CompilerVisitor___add_indent_t)CALL((recv), (SFT_compiling_base[9] + 3)))
+#define CALL_compiling_base___CompilerVisitor___add_line_to(recv) ((compiling_base___CompilerVisitor___add_line_to_t)CALL((recv), (SFT_compiling_base[9] + 4)))
+#define CALL_compiling_base___CompilerVisitor___add_assignment(recv) ((compiling_base___CompilerVisitor___add_assignment_t)CALL((recv), (SFT_compiling_base[9] + 5)))
+#define CALL_compiling_base___CompilerVisitor___new_number(recv) ((compiling_base___CompilerVisitor___new_number_t)CALL((recv), (SFT_compiling_base[9] + 6)))
+#define CALL_compiling_base___CompilerVisitor___indent(recv) ((compiling_base___CompilerVisitor___indent_t)CALL((recv), (SFT_compiling_base[9] + 7)))
+#define CALL_compiling_base___CompilerVisitor___unindent(recv) ((compiling_base___CompilerVisitor___unindent_t)CALL((recv), (SFT_compiling_base[9] + 8)))
+#define CALL_compiling_base___CompilerVisitor___mmmodule(recv) ((compiling_base___CompilerVisitor___mmmodule_t)CALL((recv), (SFT_compiling_base[9] + 9)))
+#define CALL_compiling_base___CompilerVisitor___header_writer(recv) ((compiling_base___CompilerVisitor___header_writer_t)CALL((recv), (SFT_compiling_base[9] + 10)))
+#define CALL_compiling_base___CompilerVisitor___header_writer__eq(recv) ((compiling_base___CompilerVisitor___header_writer__eq_t)CALL((recv), (SFT_compiling_base[9] + 11)))
+#define CALL_compiling_base___CompilerVisitor___writer(recv) ((compiling_base___CompilerVisitor___writer_t)CALL((recv), (SFT_compiling_base[9] + 12)))
+#define CALL_compiling_base___CompilerVisitor___writer__eq(recv) ((compiling_base___CompilerVisitor___writer__eq_t)CALL((recv), (SFT_compiling_base[9] + 13)))
+#define CALL_compiling_base___CompilerVisitor___decl_writer(recv) ((compiling_base___CompilerVisitor___decl_writer_t)CALL((recv), (SFT_compiling_base[9] + 14)))
+#define CALL_compiling_base___CompilerVisitor___decl_writer__eq(recv) ((compiling_base___CompilerVisitor___decl_writer__eq_t)CALL((recv), (SFT_compiling_base[9] + 15)))
+#define CALL_compiling_base___CompilerVisitor___top_writer(recv) ((compiling_base___CompilerVisitor___top_writer_t)CALL((recv), (SFT_compiling_base[9] + 16)))
+#define CALL_compiling_base___CompilerVisitor___top_writer__eq(recv) ((compiling_base___CompilerVisitor___top_writer__eq_t)CALL((recv), (SFT_compiling_base[9] + 17)))
+#define CALL_compiling_base___CompilerVisitor___top_decl_writer(recv) ((compiling_base___CompilerVisitor___top_decl_writer_t)CALL((recv), (SFT_compiling_base[9] + 18)))
+#define CALL_compiling_base___CompilerVisitor___top_decl_writer__eq(recv) ((compiling_base___CompilerVisitor___top_decl_writer__eq_t)CALL((recv), (SFT_compiling_base[9] + 19)))
+#define CALL_compiling_base___CompilerVisitor___indent_level(recv) ((compiling_base___CompilerVisitor___indent_level_t)CALL((recv), (SFT_compiling_base[9] + 20)))
+#define CALL_compiling_base___CompilerVisitor___indent_level__eq(recv) ((compiling_base___CompilerVisitor___indent_level__eq_t)CALL((recv), (SFT_compiling_base[9] + 21)))
+#define CALL_compiling_base___CompilerVisitor___program(recv) ((compiling_base___CompilerVisitor___program_t)CALL((recv), (SFT_compiling_base[9] + 22)))
+#define CALL_compiling_base___CompilerVisitor___cprogram(recv) ((compiling_base___CompilerVisitor___cprogram_t)CALL((recv), (SFT_compiling_base[9] + 23)))
+#define CALL_compiling_base___CompilerVisitor___init(recv) ((compiling_base___CompilerVisitor___init_t)CALL((recv), (SFT_compiling_base[9] + 24)))