+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
+var2 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = platform__MModule__target_platform(var);
+}
+var_platform = var3;
+{
+{ /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
+var7 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 140);
+show_backtrace(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#ToolContext#opt_stacktrace (var5) on <var5:ToolContext> */
+var10 = var5->attrs[COLOR_abstract_compiler__ToolContext___opt_stacktrace].val; /* _opt_stacktrace on <var5:ToolContext> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_stacktrace");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 67);
+show_backtrace(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var8) on <var8:OptionString> */
+var13 = var8->attrs[COLOR_opts__Option___value].val; /* _value on <var8:OptionString> */
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+if (varonce) {
+var14 = varonce;
+} else {
+var15 = "nitstack";
+var16 = 8;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce = var14;
+}
+if (var11 == NULL) {
+var18 = 0; /* <var14:String> cannot be null */
+} else {
+var19 = string__FlatString___61d_61d(var11, var14);
+var18 = var19;
+}
+var_ = var18;
+if (var18){
+var21 = NULL;
+if (var_platform == NULL) {
+var22 = 1; /* is null */
+} else {
+var22 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var23 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___61d_61d]))(var_platform, var21) /* == on <var_platform:nullable Platform>*/;
+var22 = var23;
+}
+var_24 = var22;
+if (var22){
+var20 = var_24;
+} else {
+{
+var25 = ((short int (*)(val*))(var_platform->class->vft[COLOR_platform__Platform__supports_libunwind]))(var_platform) /* supports_libunwind on <var_platform:nullable Platform(Platform)>*/;
+}
+var20 = var25;
+}
+var4 = var20;
+} else {
+var4 = var_;
+}
+if (var4){
+{
+abstract_compiler__AbstractCompiler__build_c_to_nit_bindings(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#build_c_to_nit_bindings on <var_compiler:AbstractCompiler>*/
+}
+} else {
+}
+if (varonce26) {
+var27 = varonce26;
+} else {
+var28 = "-DWITH_LIBGC `pkg-config --cflags bdw-gc` ";
+var29 = 42;
+var30 = string__NativeString__to_s_with_length(var28, var29);
+var27 = var30;
+varonce26 = var27;
+}
+var_cc_opt_with_libgc = var27;
+var32 = NULL;
+if (var_platform == NULL) {
+var33 = 0; /* is null */
+} else {
+var33 = 1; /* arg is null and recv is not */
+}
+if (0) {
+var34 = ((short int (*)(val*, val*))(var_platform->class->vft[COLOR_kernel__Object___33d_61d]))(var_platform, var32) /* != on <var_platform:nullable Platform>*/;
+var33 = var34;
+}
+var_35 = var33;
+if (var33){
+{
+var36 = ((short int (*)(val*))(var_platform->class->vft[COLOR_platform__Platform__supports_libgc]))(var_platform) /* supports_libgc on <var_platform:nullable Platform(Platform)>*/;
+}
+var37 = !var36;
+var31 = var37;
+} else {
+var31 = var_35;
+}
+if (var31){
+if (varonce38) {
+var39 = varonce38;
+} else {
+var40 = "";
+var41 = 0;
+var42 = string__NativeString__to_s_with_length(var40, var41);
+var39 = var42;
+varonce38 = var39;
+}
+var_cc_opt_with_libgc = var39;
+} else {
+}
+var43 = NEW_c_tools__ExternCFile(&type_c_tools__ExternCFile);
+if (varonce44) {
+var45 = varonce44;
+} else {
+var46 = "gc_chooser.c";
+var47 = 12;
+var48 = string__NativeString__to_s_with_length(var46, var47);
+var45 = var48;
+varonce44 = var45;
+}
+{
+c_tools__ExternCFile__init(var43, var45, var_cc_opt_with_libgc); /* Direct call c_tools#ExternCFile#init on <var43:ExternCFile>*/
+}
+var_gc_chooser = var43;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#extern_bodies (var_compiler) on <var_compiler:AbstractCompiler> */
+var51 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___extern_bodies].val; /* _extern_bodies on <var_compiler:AbstractCompiler> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _extern_bodies");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 901);
+show_backtrace(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+array__Array__add(var49, var_gc_chooser); /* Direct call array#Array#add on <var49:Array[ExternFile]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
+var54 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
+show_backtrace(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#MakefileToolchain#clib (self) on <self:MakefileToolchain> */
+var57 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___clib].val; /* _clib on <self:MakefileToolchain> */
+if (unlikely(var57 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _clib");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 162);
+show_backtrace(1);
+}
+var55 = var57;
+RET_LABEL56:(void)0;
+}
+}
+if (varonce58) {
+var59 = varonce58;
+} else {
+var60 = "/gc_chooser.c";
+var61 = 13;
+var62 = string__NativeString__to_s_with_length(var60, var61);
+var59 = var62;
+varonce58 = var59;
+}
+var63 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var63 = array_instance Array[Object] */
+var64 = 2;
+var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var65)->values[0] = (val*) var55;
+((struct instance_array__NativeArray*)var65)->values[1] = (val*) var59;
+{
+((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
+}
+}
+{
+var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
+}
+{
+array__Array__add(var52, var66); /* Direct call array#Array#add on <var52:Array[String]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
+var69 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
+if (unlikely(var69 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
+show_backtrace(1);
+}
+var67 = var69;
+RET_LABEL68:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#MakefileToolchain#clib (self) on <self:MakefileToolchain> */
+var72 = self->attrs[COLOR_abstract_compiler__MakefileToolchain___clib].val; /* _clib on <self:MakefileToolchain> */
+if (unlikely(var72 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _clib");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 162);
+show_backtrace(1);
+}
+var70 = var72;
+RET_LABEL71:(void)0;
+}
+}
+if (varonce73) {
+var74 = varonce73;
+} else {
+var75 = "/gc_chooser.h";
+var76 = 13;
+var77 = string__NativeString__to_s_with_length(var75, var76);
+var74 = var77;
+varonce73 = var74;
+}
+var78 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var78 = array_instance Array[Object] */
+var79 = 2;
+var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var80)->values[0] = (val*) var70;
+((struct instance_array__NativeArray*)var80)->values[1] = (val*) var74;
+{
+((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
+}
+}
+{
+var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
+}
+{
+array__Array__add(var67, var81); /* Direct call array#Array#add on <var67:Array[String]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (var_compiler) on <var_compiler:AbstractCompiler> */
+var84 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var_compiler:AbstractCompiler> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var82) on <var82:MModule> */
+var87 = var82->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var82:MModule> */
+if (unlikely(var87 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
+show_backtrace(1);
+}
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+{
+var88 = poset__POSetElement__greaters(var85);
+}
+var_89 = var88;
+{
+var90 = ((val* (*)(val*))(var_89->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_89) /* iterator on <var_89:Collection[MModule]>*/;
+}
+var_91 = var90;
+for(;;) {
+{
+var92 = ((short int (*)(val*))(var_91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_91) /* is_ok on <var_91:Iterator[MModule]>*/;
+}
+if (var92){
+{
+var93 = ((val* (*)(val*))(var_91->class->vft[COLOR_abstract_collection__Iterator__item]))(var_91) /* item on <var_91:Iterator[MModule]>*/;
+}
+var_m = var93;
+{
+separate_compiler__SeparateCompiler__finalize_ffi_for_module(var_compiler, var_m); /* Direct call separate_compiler#SeparateCompiler#finalize_ffi_for_module on <var_compiler:AbstractCompiler>*/
+}
+{
+((void (*)(val*))(var_91->class->vft[COLOR_abstract_collection__Iterator__next]))(var_91) /* next on <var_91:Iterator[MModule]>*/;
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_91) on <var_91:Iterator[MModule]> */
+RET_LABEL94:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#files_to_copy (var_compiler) on <var_compiler:AbstractCompiler> */
+var97 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files_to_copy].val; /* _files_to_copy on <var_compiler:AbstractCompiler> */
+if (unlikely(var97 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files_to_copy");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 904);
+show_backtrace(1);
+}
+var95 = var97;
+RET_LABEL96:(void)0;
+}
+}
+var_98 = var95;
+{
+var99 = array__AbstractArrayRead__iterator(var_98);
+}
+var_100 = var99;
+for(;;) {
+{
+var101 = array__ArrayIterator__is_ok(var_100);
+}
+if (var101){
+{
+var102 = array__ArrayIterator__item(var_100);
+}
+var_src = var102;
+if (varonce103) {
+var104 = varonce103;
+} else {
+var105 = "";
+var106 = 0;
+var107 = string__NativeString__to_s_with_length(var105, var106);
+var104 = var107;
+varonce103 = var104;
+}
+{
+var108 = file__String__basename(var_src, var104);
+}
+var_basename = var108;
+if (varonce109) {
+var110 = varonce109;
+} else {
+var111 = "/";
+var112 = 1;
+var113 = string__NativeString__to_s_with_length(var111, var112);
+var110 = var113;
+varonce109 = var110;
+}
+var114 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var114 = array_instance Array[Object] */
+var115 = 3;
+var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var116)->values[0] = (val*) var_compile_dir;
+((struct instance_array__NativeArray*)var116)->values[1] = (val*) var110;
+((struct instance_array__NativeArray*)var116)->values[2] = (val*) var_basename;
+{
+((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
+}
+}
+{
+var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on <var114:Array[Object]>*/;
+}
+var_dst = var117;
+{
+file__String__file_copy_to(var_src, var_dst); /* Direct call file#String#file_copy_to on <var_src:String>*/
+}
+{
+array__ArrayIterator__next(var_100); /* Direct call array#ArrayIterator#next on <var_100:ArrayIterator[String]>*/
+}
+} else {
+goto BREAK_label118;
+}
+}
+BREAK_label118: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_100) on <var_100:ArrayIterator[String]> */
+RET_LABEL119:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
+var122 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
+if (unlikely(var122 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var120 = var122;
+RET_LABEL121:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#file (var120) on <var120:CodeWriter> */
+var125 = var120->attrs[COLOR_abstract_compiler__CodeWriter___file].val; /* _file on <var120:CodeWriter> */
+if (unlikely(var125 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1018);
+show_backtrace(1);
+}
+var123 = var125;
+RET_LABEL124:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeFile#name (var123) on <var123:CodeFile> */
+var128 = var123->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var123:CodeFile> */
+if (unlikely(var128 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1011);
+show_backtrace(1);
+}
+var126 = var128;
+RET_LABEL127:(void)0;
+}
+}
+if (varonce129) {
+var130 = varonce129;
+} else {
+var131 = ".h";
+var132 = 2;
+var133 = string__NativeString__to_s_with_length(var131, var132);
+var130 = var133;
+varonce129 = var130;
+}
+{
+var134 = string__FlatString___43d(var126, var130);
+}
+var_hfilename = var134;
+if (varonce135) {
+var136 = varonce135;
+} else {
+var137 = "/";
+var138 = 1;
+var139 = string__NativeString__to_s_with_length(var137, var138);
+var136 = var139;
+varonce135 = var136;
+}
+var140 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var140 = array_instance Array[Object] */
+var141 = 3;
+var142 = NEW_array__NativeArray(var141, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var142)->values[0] = (val*) var_compile_dir;
+((struct instance_array__NativeArray*)var142)->values[1] = (val*) var136;
+((struct instance_array__NativeArray*)var142)->values[2] = (val*) var_hfilename;
+{
+((void (*)(val*, val*, long))(var140->class->vft[COLOR_array__Array__with_native]))(var140, var142, var141) /* with_native on <var140:Array[Object]>*/;
+}
+}
+{
+var143 = ((val* (*)(val*))(var140->class->vft[COLOR_string__Object__to_s]))(var140) /* to_s on <var140:Array[Object]>*/;
+}
+var_hfilepath = var143;
+var144 = NEW_file__OFStream(&type_file__OFStream);
+{
+file__OFStream__open(var144, var_hfilepath); /* Direct call file#OFStream#open on <var144:OFStream>*/
+}
+var_h = var144;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
+var147 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
+if (unlikely(var147 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var145 = var147;
+RET_LABEL146:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#decl_lines (var145) on <var145:CodeWriter> */
+var150 = var145->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var145:CodeWriter> */
+if (unlikely(var150 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1020);
+show_backtrace(1);
+}
+var148 = var150;
+RET_LABEL149:(void)0;
+}
+}
+var_151 = var148;
+{
+var152 = list__List__iterator(var_151);
+}
+var_153 = var152;
+for(;;) {
+{
+var154 = list__ListIterator__is_ok(var_153);
+}
+if (var154){
+{
+var155 = list__ListIterator__item(var_153);
+}
+var_l = var155;
+{
+file__OFStream__write(var_h, var_l); /* Direct call file#OFStream#write on <var_h:OFStream>*/
+}
+if (varonce156) {
+var157 = varonce156;
+} else {
+var158 = "\n";
+var159 = 1;
+var160 = string__NativeString__to_s_with_length(var158, var159);
+var157 = var160;
+varonce156 = var157;
+}
+{
+file__OFStream__write(var_h, var157); /* Direct call file#OFStream#write on <var_h:OFStream>*/
+}
+{
+list__ListIterator__next(var_153); /* Direct call list#ListIterator#next on <var_153:ListIterator[String]>*/
+}
+} else {
+goto BREAK_label161;
+}
+}
+BREAK_label161: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_153) on <var_153:ListIterator[String]> */
+RET_LABEL162:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
+var165 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
+if (unlikely(var165 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var163 = var165;
+RET_LABEL164:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#lines (var163) on <var163:CodeWriter> */
+var168 = var163->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var163:CodeWriter> */
+if (unlikely(var168 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1019);
+show_backtrace(1);
+}
+var166 = var168;
+RET_LABEL167:(void)0;
+}
+}
+var_169 = var166;
+{
+var170 = list__List__iterator(var_169);
+}
+var_171 = var170;
+for(;;) {
+{
+var172 = list__ListIterator__is_ok(var_171);
+}
+if (var172){
+{
+var173 = list__ListIterator__item(var_171);
+}
+var_l174 = var173;
+{
+file__OFStream__write(var_h, var_l174); /* Direct call file#OFStream#write on <var_h:OFStream>*/
+}
+if (varonce175) {
+var176 = varonce175;
+} else {
+var177 = "\n";
+var178 = 1;
+var179 = string__NativeString__to_s_with_length(var177, var178);
+var176 = var179;
+varonce175 = var176;
+}
+{
+file__OFStream__write(var_h, var176); /* Direct call file#OFStream#write on <var_h:OFStream>*/
+}
+{
+list__ListIterator__next(var_171); /* Direct call list#ListIterator#next on <var_171:ListIterator[String]>*/
+}
+} else {
+goto BREAK_label180;
+}
+}
+BREAK_label180: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_171) on <var_171:ListIterator[String]> */
+RET_LABEL181:(void)0;
+}
+}
+{
+file__OFStream__close(var_h); /* Direct call file#OFStream#close on <var_h:OFStream>*/
+}
+{
+{ /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
+var184 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
+if (unlikely(var184 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 140);
+show_backtrace(1);
+}
+var182 = var184;
+RET_LABEL183:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#ToolContext#opt_max_c_lines (var182) on <var182:ToolContext> */
+var187 = var182->attrs[COLOR_abstract_compiler__ToolContext___opt_max_c_lines].val; /* _opt_max_c_lines on <var182:ToolContext> */
+if (unlikely(var187 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_max_c_lines");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 41);
+show_backtrace(1);
+}
+var185 = var187;
+RET_LABEL186:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var185) on <var185:OptionInt> */
+var190 = var185->attrs[COLOR_opts__Option___value].val; /* _value on <var185:OptionInt> */
+var188 = var190;
+RET_LABEL189:(void)0;
+}
+}
+var191 = ((struct instance_kernel__Int*)var188)->value; /* autounbox from nullable Object to Int */;
+var_max_c_lines = var191;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#files (var_compiler) on <var_compiler:AbstractCompiler> */
+var194 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___files].val; /* _files on <var_compiler:AbstractCompiler> */
+if (unlikely(var194 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 499);
+show_backtrace(1);
+}
+var192 = var194;
+RET_LABEL193:(void)0;
+}
+}
+var_195 = var192;
+{
+var196 = list__List__iterator(var_195);
+}
+var_197 = var196;
+for(;;) {
+{
+var198 = list__ListIterator__is_ok(var_197);
+}
+if (var198){
+{
+var199 = list__ListIterator__item(var_197);
+}
+var_f = var199;
+var200 = 0;
+var_i = var200;
+var201 = 0;
+var_count = var201;
+var202 = NULL;
+var_file = var202;
+{
+{ /* Inline abstract_compiler#CodeFile#writers (var_f) on <var_f:CodeFile> */
+var205 = var_f->attrs[COLOR_abstract_compiler__CodeFile___writers].val; /* _writers on <var_f:CodeFile> */
+if (unlikely(var205 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _writers");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1012);
+show_backtrace(1);
+}
+var203 = var205;
+RET_LABEL204:(void)0;
+}
+}
+var_206 = var203;
+{
+var207 = array__AbstractArrayRead__iterator(var_206);
+}
+var_208 = var207;
+for(;;) {
+{
+var209 = array__ArrayIterator__is_ok(var_208);
+}
+if (var209){
+{
+var210 = array__ArrayIterator__item(var_208);
+}
+var_vis = var210;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (var_compiler) on <var_compiler:AbstractCompiler> */
+var213 = var_compiler->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <var_compiler:AbstractCompiler> */
+if (unlikely(var213 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var211 = var213;
+RET_LABEL212:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var_vis,var211) on <var_vis:CodeWriter> */
+var_other = var211;
+{
+{ /* Inline kernel#Object#is_same_instance (var_vis,var_other) on <var_vis:CodeWriter> */
+var219 = var_vis == var_other;
+var217 = var219;
+goto RET_LABEL218;
+RET_LABEL218:(void)0;
+}
+}
+var215 = var217;
+goto RET_LABEL216;
+RET_LABEL216:(void)0;
+}
+var214 = var215;
+}
+if (var214){
+goto BREAK_label220;
+} else {
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#lines (var_vis) on <var_vis:CodeWriter> */
+var223 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___lines].val; /* _lines on <var_vis:CodeWriter> */
+if (unlikely(var223 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lines");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1019);
+show_backtrace(1);
+}
+var221 = var223;
+RET_LABEL222:(void)0;
+}
+}
+{
+var224 = list__List__length(var221);
+}
+{
+{ /* Inline abstract_compiler#CodeWriter#decl_lines (var_vis) on <var_vis:CodeWriter> */
+var227 = var_vis->attrs[COLOR_abstract_compiler__CodeWriter___decl_lines].val; /* _decl_lines on <var_vis:CodeWriter> */
+if (unlikely(var227 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _decl_lines");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1020);
+show_backtrace(1);
+}
+var225 = var227;
+RET_LABEL226:(void)0;
+}
+}
+{
+var228 = list__List__length(var225);
+}
+{
+{ /* Inline kernel#Int#+ (var224,var228) on <var224:Int> */
+/* Covariant cast for argument 0 (i) <var228:Int> isa OTHER */
+/* <var228:Int> isa OTHER */
+var231 = 1; /* easy <var228:Int> isa OTHER*/
+if (unlikely(!var231)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var232 = var224 + var228;
+var229 = var232;
+goto RET_LABEL230;
+RET_LABEL230:(void)0;
+}
+}
+var_total_lines = var229;
+var233 = 0;
+{
+{ /* Inline kernel#Int#== (var_total_lines,var233) on <var_total_lines:Int> */
+var237 = var_total_lines == var233;
+var235 = var237;
+goto RET_LABEL236;
+RET_LABEL236:(void)0;
+}
+var234 = var235;
+}
+if (var234){
+goto BREAK_label220;
+} else {
+}
+{
+{ /* Inline kernel#Int#+ (var_count,var_total_lines) on <var_count:Int> */
+/* Covariant cast for argument 0 (i) <var_total_lines:Int> isa OTHER */
+/* <var_total_lines:Int> isa OTHER */
+var240 = 1; /* easy <var_total_lines:Int> isa OTHER*/
+if (unlikely(!var240)) {
+var_class_name243 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name243);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var244 = var_count + var_total_lines;
+var238 = var244;
+goto RET_LABEL239;
+RET_LABEL239:(void)0;
+}
+}
+var_count = var238;
+var246 = NULL;
+if (var_file == NULL) {
+var247 = 1; /* is null */
+} else {
+var247 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_file,var246) on <var_file:nullable OFStream> */
+var_other = var246;
+{
+{ /* Inline kernel#Object#is_same_instance (var_file,var_other) on <var_file:nullable OFStream(OFStream)> */
+var252 = var_file == var_other;
+var250 = var252;
+goto RET_LABEL251;
+RET_LABEL251:(void)0;
+}
+}
+var248 = var250;
+goto RET_LABEL249;
+RET_LABEL249:(void)0;
+}
+var247 = var248;
+}
+var_253 = var247;
+if (var247){
+var245 = var_253;
+} else {
+{
+{ /* Inline kernel#Int#> (var_count,var_max_c_lines) on <var_count:Int> */
+/* Covariant cast for argument 0 (i) <var_max_c_lines:Int> isa OTHER */
+/* <var_max_c_lines:Int> isa OTHER */
+var257 = 1; /* easy <var_max_c_lines:Int> isa OTHER*/
+if (unlikely(!var257)) {
+var_class_name260 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name260);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
+show_backtrace(1);
+}
+var261 = var_count > var_max_c_lines;
+var255 = var261;
+goto RET_LABEL256;
+RET_LABEL256:(void)0;
+}
+}
+var_262 = var255;
+if (var255){
+var263 = 0;
+{
+{ /* Inline kernel#Int#> (var_max_c_lines,var263) on <var_max_c_lines:Int> */
+/* Covariant cast for argument 0 (i) <var263:Int> isa OTHER */
+/* <var263:Int> isa OTHER */
+var266 = 1; /* easy <var263:Int> isa OTHER*/
+if (unlikely(!var266)) {
+var_class_name269 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name269);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
+show_backtrace(1);
+}
+var270 = var_max_c_lines > var263;
+var264 = var270;
+goto RET_LABEL265;
+RET_LABEL265:(void)0;
+}
+}
+var254 = var264;
+} else {
+var254 = var_262;
+}
+var245 = var254;
+}
+if (var245){
+var271 = 1;
+{
+{ /* Inline kernel#Int#+ (var_i,var271) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var271:Int> isa OTHER */
+/* <var271:Int> isa OTHER */
+var274 = 1; /* easy <var271:Int> isa OTHER*/
+if (unlikely(!var274)) {
+var_class_name277 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name277);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var278 = var_i + var271;
+var272 = var278;
+goto RET_LABEL273;
+RET_LABEL273:(void)0;
+}
+}
+var_i = var272;
+var279 = NULL;
+if (var_file == NULL) {
+var280 = 0; /* is null */
+} else {
+var280 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_file,var279) on <var_file:nullable OFStream> */
+var_other283 = var279;
+{
+var285 = ((short int (*)(val*, val*))(var_file->class->vft[COLOR_kernel__Object___61d_61d]))(var_file, var_other283) /* == on <var_file:nullable OFStream(OFStream)>*/;
+var284 = var285;
+}
+var286 = !var284;
+var281 = var286;
+goto RET_LABEL282;
+RET_LABEL282:(void)0;
+}
+var280 = var281;
+}
+if (var280){
+{
+file__OFStream__close(var_file); /* Direct call file#OFStream#close on <var_file:nullable OFStream(OFStream)>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#CodeFile#name (var_f) on <var_f:CodeFile> */
+var289 = var_f->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
+if (unlikely(var289 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1011);
+show_backtrace(1);
+}
+var287 = var289;
+RET_LABEL288:(void)0;
+}
+}
+if (varonce290) {
+var291 = varonce290;
+} else {
+var292 = ".";
+var293 = 1;
+var294 = string__NativeString__to_s_with_length(var292, var293);
+var291 = var294;
+varonce290 = var291;
+}
+if (varonce295) {
+var296 = varonce295;
+} else {
+var297 = ".c";
+var298 = 2;
+var299 = string__NativeString__to_s_with_length(var297, var298);
+var296 = var299;
+varonce295 = var296;
+}
+var300 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var300 = array_instance Array[Object] */
+var301 = 4;
+var302 = NEW_array__NativeArray(var301, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var302)->values[0] = (val*) var287;
+((struct instance_array__NativeArray*)var302)->values[1] = (val*) var291;
+var303 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var302)->values[2] = (val*) var303;
+((struct instance_array__NativeArray*)var302)->values[3] = (val*) var296;
+{
+((void (*)(val*, val*, long))(var300->class->vft[COLOR_array__Array__with_native]))(var300, var302, var301) /* with_native on <var300:Array[Object]>*/;
+}
+}
+{
+var304 = ((val* (*)(val*))(var300->class->vft[COLOR_string__Object__to_s]))(var300) /* to_s on <var300:Array[Object]>*/;
+}
+var_cfilename = var304;
+if (varonce305) {
+var306 = varonce305;
+} else {
+var307 = "/";
+var308 = 1;
+var309 = string__NativeString__to_s_with_length(var307, var308);
+var306 = var309;
+varonce305 = var306;
+}
+var310 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var310 = array_instance Array[Object] */
+var311 = 3;
+var312 = NEW_array__NativeArray(var311, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var312)->values[0] = (val*) var_compile_dir;
+((struct instance_array__NativeArray*)var312)->values[1] = (val*) var306;
+((struct instance_array__NativeArray*)var312)->values[2] = (val*) var_cfilename;
+{
+((void (*)(val*, val*, long))(var310->class->vft[COLOR_array__Array__with_native]))(var310, var312, var311) /* with_native on <var310:Array[Object]>*/;
+}
+}
+{
+var313 = ((val* (*)(val*))(var310->class->vft[COLOR_string__Object__to_s]))(var310) /* to_s on <var310:Array[Object]>*/;
+}
+var_cfilepath = var313;
+{
+{ /* Inline abstract_compiler#Toolchain#toolcontext (self) on <self:MakefileToolchain> */
+var316 = self->attrs[COLOR_abstract_compiler__Toolchain___toolcontext].val; /* _toolcontext on <self:MakefileToolchain> */
+if (unlikely(var316 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 140);
+show_backtrace(1);
+}
+var314 = var316;
+RET_LABEL315:(void)0;
+}
+}
+if (varonce317) {
+var318 = varonce317;
+} else {
+var319 = "new C source files to compile: ";
+var320 = 31;
+var321 = string__NativeString__to_s_with_length(var319, var320);
+var318 = var321;
+varonce317 = var318;
+}
+var322 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var322 = array_instance Array[Object] */
+var323 = 2;
+var324 = NEW_array__NativeArray(var323, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var324)->values[0] = (val*) var318;
+((struct instance_array__NativeArray*)var324)->values[1] = (val*) var_cfilepath;
+{
+((void (*)(val*, val*, long))(var322->class->vft[COLOR_array__Array__with_native]))(var322, var324, var323) /* with_native on <var322:Array[Object]>*/;
+}
+}
+{
+var325 = ((val* (*)(val*))(var322->class->vft[COLOR_string__Object__to_s]))(var322) /* to_s on <var322:Array[Object]>*/;
+}
+var326 = 3;
+{
+toolcontext__ToolContext__info(var314, var325, var326); /* Direct call toolcontext#ToolContext#info on <var314:ToolContext>*/
+}
+{
+array__Array__add(var_cfiles, var_cfilename); /* Direct call array#Array#add on <var_cfiles:Array[String]>*/
+}
+var327 = NEW_file__OFStream(&type_file__OFStream);
+{
+file__OFStream__open(var327, var_cfilepath); /* Direct call file#OFStream#open on <var327:OFStream>*/
+}
+var_file = var327;
+if (varonce328) {
+var329 = varonce328;
+} else {
+var330 = "#include \"";
+var331 = 10;
+var332 = string__NativeString__to_s_with_length(var330, var331);
+var329 = var332;
+varonce328 = var329;
+}
+{
+{ /* Inline abstract_compiler#CodeFile#name (var_f) on <var_f:CodeFile> */
+var335 = var_f->attrs[COLOR_abstract_compiler__CodeFile___name].val; /* _name on <var_f:CodeFile> */
+if (unlikely(var335 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1011);
+show_backtrace(1);
+}
+var333 = var335;
+RET_LABEL334:(void)0;
+}
+}
+if (varonce336) {
+var337 = varonce336;
+} else {
+var338 = ".0.h\"\n";
+var339 = 6;
+var340 = string__NativeString__to_s_with_length(var338, var339);
+var337 = var340;
+varonce336 = var337;
+}
+var341 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var341 = array_instance Array[Object] */
+var342 = 3;
+var343 = NEW_array__NativeArray(var342, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var343)->values[0] = (val*) var329;
+((struct instance_array__NativeArray*)var343)->values[1] = (val*) var333;
+((struct instance_array__NativeArray*)var343)->values[2] = (val*) var337;
+{
+((void (*)(val*, val*, long))(var341->class->vft[COLOR_array__Array__with_native]))(var341, var343, var342) /* with_native on <var341:Array[Object]>*/;
+}
+}
+{
+var344 = ((val* (*)(val*))(var341->class->vft[COLOR_string__Object__to_s]))(var341) /* to_s on <var341:Array[Object]>*/;
+}
+{
+file__OFStream__write(var_file, var344); /* Direct call file#OFStream#write on <var_file:nullable OFStream(OFStream)>*/
+}
+var_count = var_total_lines;