c_src: regenerate
[nit.git] / c_src / nitc__separate_compiler.sep.1.c
diff --git a/c_src/nitc__separate_compiler.sep.1.c b/c_src/nitc__separate_compiler.sep.1.c
new file mode 100644 (file)
index 0000000..494a26d
--- /dev/null
@@ -0,0 +1,9607 @@
+#include "nitc__separate_compiler.sep.0.h"
+/* method separate_compiler#ToolContext#opt_separate for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_separate(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_separate].val; /* _opt_separate on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_separate");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 24);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_no_inline_intern for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_no_inline_intern(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 26);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_no_union_attribute for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_no_union_attribute(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 28);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_no_shortcut_equate for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_no_shortcut_equate(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 30);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_no_tag_primitives for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_no_tag_primitives(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_colors_are_symbols for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_colors_are_symbols(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colors_are_symbols].val; /* _opt_colors_are_symbols on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colors_are_symbols");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 35);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_trampoline_call for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_trampoline_call(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_trampoline_call].val; /* _opt_trampoline_call on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_trampoline_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 37);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_guard_call for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_guard_call(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_guard_call].val; /* _opt_guard_call on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_guard_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 39);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_substitute_monomorph for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_substitute_monomorph(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_substitute_monomorph].val; /* _opt_substitute_monomorph on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_substitute_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 41);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_link_boost for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_link_boost(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_link_boost].val; /* _opt_link_boost on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_link_boost");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 43);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_inline_coloring_numbers for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_inline_coloring_numbers(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_coloring_numbers].val; /* _opt_inline_coloring_numbers on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_coloring_numbers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 46);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_inline_some_methods for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_inline_some_methods(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 48);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_direct_call_monomorph for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_direct_call_monomorph(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 50);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_direct_call_monomorph0 for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_direct_call_monomorph0(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph0].val; /* _opt_direct_call_monomorph0 on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph0");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 52);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_skip_dead_methods for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_skip_dead_methods(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_skip_dead_methods].val; /* _opt_skip_dead_methods on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_skip_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 54);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_semi_global for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_semi_global(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_semi_global].val; /* _opt_semi_global on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_semi_global");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 56);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_colo_dead_methods for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_colo_dead_methods(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colo_dead_methods].val; /* _opt_colo_dead_methods on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colo_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 58);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_tables_metrics for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_tables_metrics(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_tables_metrics].val; /* _opt_tables_metrics on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_tables_metrics");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 60);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#opt_type_poset for (self: ToolContext): OptionBool */
+val* nitc__separate_compiler___ToolContext___opt_type_poset(val* self) {
+val* var /* : OptionBool */;
+val* var1 /* : OptionBool */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_type_poset].val; /* _opt_type_poset on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_type_poset");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 62);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ToolContext#init for (self: ToolContext) */
+void nitc__separate_compiler___ToolContext___core__kernel__Object__init(val* self) {
+val* var /* : OptionContext */;
+val* var2 /* : OptionContext */;
+val* var3 /* : OptionBool */;
+val* var5 /* : OptionBool */;
+val* var6 /* : Array[Option] */;
+val* var7 /* : NativeArray[Option] */;
+val* var8 /* : OptionContext */;
+val* var10 /* : OptionContext */;
+val* var11 /* : OptionBool */;
+val* var13 /* : OptionBool */;
+val* var14 /* : Array[Option] */;
+val* var15 /* : NativeArray[Option] */;
+val* var16 /* : OptionContext */;
+val* var18 /* : OptionContext */;
+val* var19 /* : OptionBool */;
+val* var21 /* : OptionBool */;
+val* var22 /* : Array[Option] */;
+val* var23 /* : NativeArray[Option] */;
+val* var24 /* : OptionContext */;
+val* var26 /* : OptionContext */;
+val* var27 /* : OptionBool */;
+val* var29 /* : OptionBool */;
+val* var30 /* : Array[Option] */;
+val* var31 /* : NativeArray[Option] */;
+val* var32 /* : OptionContext */;
+val* var34 /* : OptionContext */;
+val* var35 /* : OptionBool */;
+val* var37 /* : OptionBool */;
+val* var38 /* : Array[Option] */;
+val* var39 /* : NativeArray[Option] */;
+val* var40 /* : OptionContext */;
+val* var42 /* : OptionContext */;
+val* var43 /* : OptionBool */;
+val* var45 /* : OptionBool */;
+val* var46 /* : OptionBool */;
+val* var48 /* : OptionBool */;
+val* var49 /* : OptionBool */;
+val* var51 /* : OptionBool */;
+val* var52 /* : OptionBool */;
+val* var54 /* : OptionBool */;
+val* var55 /* : OptionBool */;
+val* var57 /* : OptionBool */;
+val* var58 /* : OptionBool */;
+val* var60 /* : OptionBool */;
+val* var61 /* : Array[Option] */;
+val* var62 /* : NativeArray[Option] */;
+val* var63 /* : OptionContext */;
+val* var65 /* : OptionContext */;
+val* var66 /* : OptionBool */;
+val* var68 /* : OptionBool */;
+val* var69 /* : OptionBool */;
+val* var71 /* : OptionBool */;
+val* var72 /* : OptionBool */;
+val* var74 /* : OptionBool */;
+val* var75 /* : OptionBool */;
+val* var77 /* : OptionBool */;
+val* var78 /* : OptionBool */;
+val* var80 /* : OptionBool */;
+val* var81 /* : Array[Option] */;
+val* var82 /* : NativeArray[Option] */;
+val* var83 /* : OptionContext */;
+val* var85 /* : OptionContext */;
+val* var86 /* : OptionBool */;
+val* var88 /* : OptionBool */;
+val* var89 /* : Array[Option] */;
+val* var90 /* : NativeArray[Option] */;
+val* var91 /* : OptionContext */;
+val* var93 /* : OptionContext */;
+val* var94 /* : OptionBool */;
+val* var96 /* : OptionBool */;
+val* var97 /* : Array[Option] */;
+val* var98 /* : NativeArray[Option] */;
+val* var99 /* : OptionContext */;
+val* var101 /* : OptionContext */;
+val* var102 /* : OptionBool */;
+val* var104 /* : OptionBool */;
+val* var105 /* : Array[Option] */;
+val* var106 /* : NativeArray[Option] */;
+{
+((void(*)(val* self))(self->class->vft[COLOR_nitc__separate_compiler___ToolContext___core__kernel__Object__init]))(self); /* init on <self:ToolContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var2 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_separate (self) on <self:ToolContext> */
+var5 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_separate].val; /* _opt_separate on <self:ToolContext> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_separate");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 24);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+var6 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var6 = array_instance Array[Option] */
+var7 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var7)->values[0] = (val*) var3;
+{
+((void(*)(val* self, val* p0, long p1))(var6->class->vft[COLOR_core__array__Array__with_native]))(var6, var7, 1l); /* with_native on <var6:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var, var6); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var10 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_inline_intern (self) on <self:ToolContext> */
+var13 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on <self:ToolContext> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 26);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var14 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var14 = array_instance Array[Option] */
+var15 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var15)->values[0] = (val*) var11;
+{
+((void(*)(val* self, val* p0, long p1))(var14->class->vft[COLOR_core__array__Array__with_native]))(var14, var15, 1l); /* with_native on <var14:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var8, var14); /* Direct call opts#OptionContext#add_option on <var8:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var18 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_union_attribute (self) on <self:ToolContext> */
+var21 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <self:ToolContext> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 28);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+var22 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var22 = array_instance Array[Option] */
+var23 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var23)->values[0] = (val*) var19;
+{
+((void(*)(val* self, val* p0, long p1))(var22->class->vft[COLOR_core__array__Array__with_native]))(var22, var23, 1l); /* with_native on <var22:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var16, var22); /* Direct call opts#OptionContext#add_option on <var16:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var26 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_shortcut_equate (self) on <self:ToolContext> */
+var29 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on <self:ToolContext> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 30);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+var30 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var30 = array_instance Array[Option] */
+var31 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var31)->values[0] = (val*) var27;
+{
+((void(*)(val* self, val* p0, long p1))(var30->class->vft[COLOR_core__array__Array__with_native]))(var30, var31, 1l); /* with_native on <var30:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var24, var30); /* Direct call opts#OptionContext#add_option on <var24:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var34 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_tag_primitives (self) on <self:ToolContext> */
+var37 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <self:ToolContext> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
+fatal_exit(1);
+}
+var35 = var37;
+RET_LABEL36:(void)0;
+}
+}
+var38 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var38 = array_instance Array[Option] */
+var39 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var39)->values[0] = (val*) var35;
+{
+((void(*)(val* self, val* p0, long p1))(var38->class->vft[COLOR_core__array__Array__with_native]))(var38, var39, 1l); /* with_native on <var38:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var32, var38); /* Direct call opts#OptionContext#add_option on <var32:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var42 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_colors_are_symbols (self) on <self:ToolContext> */
+var45 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colors_are_symbols].val; /* _opt_colors_are_symbols on <self:ToolContext> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colors_are_symbols");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 35);
+fatal_exit(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_trampoline_call (self) on <self:ToolContext> */
+var48 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_trampoline_call].val; /* _opt_trampoline_call on <self:ToolContext> */
+if (unlikely(var48 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_trampoline_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 37);
+fatal_exit(1);
+}
+var46 = var48;
+RET_LABEL47:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_guard_call (self) on <self:ToolContext> */
+var51 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_guard_call].val; /* _opt_guard_call on <self:ToolContext> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_guard_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 39);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph0 (self) on <self:ToolContext> */
+var54 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph0].val; /* _opt_direct_call_monomorph0 on <self:ToolContext> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph0");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 52);
+fatal_exit(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_substitute_monomorph (self) on <self:ToolContext> */
+var57 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_substitute_monomorph].val; /* _opt_substitute_monomorph on <self:ToolContext> */
+if (unlikely(var57 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_substitute_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 41);
+fatal_exit(1);
+}
+var55 = var57;
+RET_LABEL56:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_link_boost (self) on <self:ToolContext> */
+var60 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_link_boost].val; /* _opt_link_boost on <self:ToolContext> */
+if (unlikely(var60 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_link_boost");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 43);
+fatal_exit(1);
+}
+var58 = var60;
+RET_LABEL59:(void)0;
+}
+}
+var61 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var61 = array_instance Array[Option] */
+var62 = NEW_core__NativeArray(6l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var62)->values[0] = (val*) var43;
+((struct instance_core__NativeArray*)var62)->values[1] = (val*) var46;
+((struct instance_core__NativeArray*)var62)->values[2] = (val*) var49;
+((struct instance_core__NativeArray*)var62)->values[3] = (val*) var52;
+((struct instance_core__NativeArray*)var62)->values[4] = (val*) var55;
+((struct instance_core__NativeArray*)var62)->values[5] = (val*) var58;
+{
+((void(*)(val* self, val* p0, long p1))(var61->class->vft[COLOR_core__array__Array__with_native]))(var61, var62, 6l); /* with_native on <var61:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var40, var61); /* Direct call opts#OptionContext#add_option on <var40:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var65 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var65 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var63 = var65;
+RET_LABEL64:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_inline_coloring_numbers (self) on <self:ToolContext> */
+var68 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_coloring_numbers].val; /* _opt_inline_coloring_numbers on <self:ToolContext> */
+if (unlikely(var68 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_coloring_numbers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 46);
+fatal_exit(1);
+}
+var66 = var68;
+RET_LABEL67:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_inline_some_methods (self) on <self:ToolContext> */
+var71 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <self:ToolContext> */
+if (unlikely(var71 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 48);
+fatal_exit(1);
+}
+var69 = var71;
+RET_LABEL70:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (self) on <self:ToolContext> */
+var74 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <self:ToolContext> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 50);
+fatal_exit(1);
+}
+var72 = var74;
+RET_LABEL73:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_skip_dead_methods (self) on <self:ToolContext> */
+var77 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_skip_dead_methods].val; /* _opt_skip_dead_methods on <self:ToolContext> */
+if (unlikely(var77 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_skip_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 54);
+fatal_exit(1);
+}
+var75 = var77;
+RET_LABEL76:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_semi_global (self) on <self:ToolContext> */
+var80 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_semi_global].val; /* _opt_semi_global on <self:ToolContext> */
+if (unlikely(var80 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_semi_global");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 56);
+fatal_exit(1);
+}
+var78 = var80;
+RET_LABEL79:(void)0;
+}
+}
+var81 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var81 = array_instance Array[Option] */
+var82 = NEW_core__NativeArray(5l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var82)->values[0] = (val*) var66;
+((struct instance_core__NativeArray*)var82)->values[1] = (val*) var69;
+((struct instance_core__NativeArray*)var82)->values[2] = (val*) var72;
+((struct instance_core__NativeArray*)var82)->values[3] = (val*) var75;
+((struct instance_core__NativeArray*)var82)->values[4] = (val*) var78;
+{
+((void(*)(val* self, val* p0, long p1))(var81->class->vft[COLOR_core__array__Array__with_native]))(var81, var82, 5l); /* with_native on <var81:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var63, var81); /* Direct call opts#OptionContext#add_option on <var63:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var85 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var85 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var83 = var85;
+RET_LABEL84:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_colo_dead_methods (self) on <self:ToolContext> */
+var88 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colo_dead_methods].val; /* _opt_colo_dead_methods on <self:ToolContext> */
+if (unlikely(var88 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colo_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 58);
+fatal_exit(1);
+}
+var86 = var88;
+RET_LABEL87:(void)0;
+}
+}
+var89 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var89 = array_instance Array[Option] */
+var90 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var90)->values[0] = (val*) var86;
+{
+((void(*)(val* self, val* p0, long p1))(var89->class->vft[COLOR_core__array__Array__with_native]))(var89, var90, 1l); /* with_native on <var89:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var83, var89); /* Direct call opts#OptionContext#add_option on <var83:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var93 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var93 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var91 = var93;
+RET_LABEL92:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_tables_metrics (self) on <self:ToolContext> */
+var96 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_tables_metrics].val; /* _opt_tables_metrics on <self:ToolContext> */
+if (unlikely(var96 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_tables_metrics");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 60);
+fatal_exit(1);
+}
+var94 = var96;
+RET_LABEL95:(void)0;
+}
+}
+var97 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var97 = array_instance Array[Option] */
+var98 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var98)->values[0] = (val*) var94;
+{
+((void(*)(val* self, val* p0, long p1))(var97->class->vft[COLOR_core__array__Array__with_native]))(var97, var98, 1l); /* with_native on <var97:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var91, var97); /* Direct call opts#OptionContext#add_option on <var91:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var101 = self->attrs[COLOR_nitc__toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var101 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__toolcontext, 342);
+fatal_exit(1);
+}
+var99 = var101;
+RET_LABEL100:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_type_poset (self) on <self:ToolContext> */
+var104 = self->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_type_poset].val; /* _opt_type_poset on <self:ToolContext> */
+if (unlikely(var104 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_type_poset");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 62);
+fatal_exit(1);
+}
+var102 = var104;
+RET_LABEL103:(void)0;
+}
+}
+var105 = NEW_core__Array(&type_core__Array__opts__Option);
+{ /* var105 = array_instance Array[Option] */
+var106 = NEW_core__NativeArray(1l, &type_core__NativeArray__opts__Option);
+((struct instance_core__NativeArray*)var106)->values[0] = (val*) var102;
+{
+((void(*)(val* self, val* p0, long p1))(var105->class->vft[COLOR_core__array__Array__with_native]))(var105, var106, 1l); /* with_native on <var105:Array[Option]>*/
+}
+}
+{
+opts___opts__OptionContext___add_option(var99, var105); /* Direct call opts#OptionContext#add_option on <var99:OptionContext>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
+void nitc__separate_compiler___ToolContext___process_options(val* self, val* p0) {
+val* var_args /* var args: Sequence[String] */;
+val* var_tc /* var tc: ToolContext */;
+val* var /* : OptionBool */;
+val* var2 /* : OptionBool */;
+val* var3 /* : nullable Object */;
+val* var5 /* : nullable Object */;
+short int var6 /* : Bool */;
+val* var7 /* : OptionBool */;
+val* var9 /* : OptionBool */;
+short int var11 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var12 /* : nullable Object */;
+val* var13 /* : OptionBool */;
+val* var15 /* : OptionBool */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+const struct type* type_struct20;
+const char* var_class_name21;
+val* var22 /* : nullable Object */;
+val* var23 /* : OptionBool */;
+val* var25 /* : OptionBool */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+const struct type* type_struct30;
+const char* var_class_name31;
+val* var32 /* : nullable Object */;
+val* var33 /* : OptionBool */;
+val* var35 /* : OptionBool */;
+short int var37 /* : Bool */;
+int cltype38;
+int idtype39;
+const struct type* type_struct40;
+const char* var_class_name41;
+val* var42 /* : nullable Object */;
+val* var43 /* : OptionBool */;
+val* var45 /* : OptionBool */;
+val* var46 /* : nullable Object */;
+val* var48 /* : nullable Object */;
+short int var49 /* : Bool */;
+val* var50 /* : OptionBool */;
+val* var52 /* : OptionBool */;
+short int var54 /* : Bool */;
+int cltype55;
+int idtype56;
+const struct type* type_struct57;
+const char* var_class_name58;
+val* var59 /* : nullable Object */;
+val* var60 /* : OptionBool */;
+val* var62 /* : OptionBool */;
+short int var64 /* : Bool */;
+int cltype65;
+int idtype66;
+const struct type* type_struct67;
+const char* var_class_name68;
+val* var69 /* : nullable Object */;
+val* var70 /* : OptionBool */;
+val* var72 /* : OptionBool */;
+val* var73 /* : nullable Object */;
+val* var75 /* : nullable Object */;
+short int var76 /* : Bool */;
+val* var77 /* : OptionBool */;
+val* var79 /* : OptionBool */;
+short int var81 /* : Bool */;
+int cltype82;
+int idtype83;
+const struct type* type_struct84;
+const char* var_class_name85;
+val* var86 /* : nullable Object */;
+var_args = p0;
+{
+((void(*)(val* self, val* p0))(self->class->vft[COLOR_nitc__separate_compiler___ToolContext___process_options]))(self, p0); /* process_options on <self:ToolContext>*/
+}
+var_tc = self;
+{
+{ /* Inline separate_compiler#ToolContext#opt_semi_global (var_tc) on <var_tc:ToolContext> */
+var2 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_semi_global].val; /* _opt_semi_global on <var_tc:ToolContext> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_semi_global");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 56);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var) on <var:OptionBool> */
+var5 = var->attrs[COLOR_opts__Option___value].val; /* _value on <var:OptionBool> */
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+var6 = (short int)((long)(var3)>>2);
+if (var6){
+{
+{ /* Inline separate_compiler#ToolContext#opt_inline_coloring_numbers (var_tc) on <var_tc:ToolContext> */
+var9 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_coloring_numbers].val; /* _opt_inline_coloring_numbers on <var_tc:ToolContext> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_coloring_numbers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 46);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var7,1) on <var7:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct = var7->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (&type_core__Bool)->table_size) {
+var11 = 0;
+} else {
+var11 = (&type_core__Bool)->type_table[cltype] == idtype;
+}
+if (unlikely(!var11)) {
+var_class_name = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var12 = (val*)((long)(1)<<2|3);
+var7->attrs[COLOR_opts__Option___value].val = var12; /* _value on <var7:OptionBool> */
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_inline_some_methods (var_tc) on <var_tc:ToolContext> */
+var15 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <var_tc:ToolContext> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 48);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var13,1) on <var13:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct20 = var13->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype18 = type_struct20->color;
+idtype19 = type_struct20->id;
+if(cltype18 >= (&type_core__Bool)->table_size) {
+var17 = 0;
+} else {
+var17 = (&type_core__Bool)->type_table[cltype18] == idtype19;
+}
+if (unlikely(!var17)) {
+var_class_name21 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name21);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var22 = (val*)((long)(1)<<2|3);
+var13->attrs[COLOR_opts__Option___value].val = var22; /* _value on <var13:OptionBool> */
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (var_tc) on <var_tc:ToolContext> */
+var25 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <var_tc:ToolContext> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 50);
+fatal_exit(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var23,1) on <var23:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct30 = var23->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype28 = type_struct30->color;
+idtype29 = type_struct30->id;
+if(cltype28 >= (&type_core__Bool)->table_size) {
+var27 = 0;
+} else {
+var27 = (&type_core__Bool)->type_table[cltype28] == idtype29;
+}
+if (unlikely(!var27)) {
+var_class_name31 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name31);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var32 = (val*)((long)(1)<<2|3);
+var23->attrs[COLOR_opts__Option___value].val = var32; /* _value on <var23:OptionBool> */
+RET_LABEL26:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_skip_dead_methods (var_tc) on <var_tc:ToolContext> */
+var35 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_skip_dead_methods].val; /* _opt_skip_dead_methods on <var_tc:ToolContext> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_skip_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 54);
+fatal_exit(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var33,1) on <var33:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct40 = var33->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype38 = type_struct40->color;
+idtype39 = type_struct40->id;
+if(cltype38 >= (&type_core__Bool)->table_size) {
+var37 = 0;
+} else {
+var37 = (&type_core__Bool)->type_table[cltype38] == idtype39;
+}
+if (unlikely(!var37)) {
+var_class_name41 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name41);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var42 = (val*)((long)(1)<<2|3);
+var33->attrs[COLOR_opts__Option___value].val = var42; /* _value on <var33:OptionBool> */
+RET_LABEL36:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_link_boost (var_tc) on <var_tc:ToolContext> */
+var45 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_link_boost].val; /* _opt_link_boost on <var_tc:ToolContext> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_link_boost");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 43);
+fatal_exit(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var43) on <var43:OptionBool> */
+var48 = var43->attrs[COLOR_opts__Option___value].val; /* _value on <var43:OptionBool> */
+var46 = var48;
+RET_LABEL47:(void)0;
+}
+}
+var49 = (short int)((long)(var46)>>2);
+if (var49){
+{
+{ /* Inline separate_compiler#ToolContext#opt_colors_are_symbols (var_tc) on <var_tc:ToolContext> */
+var52 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colors_are_symbols].val; /* _opt_colors_are_symbols on <var_tc:ToolContext> */
+if (unlikely(var52 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colors_are_symbols");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 35);
+fatal_exit(1);
+}
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var50,1) on <var50:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct57 = var50->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype55 = type_struct57->color;
+idtype56 = type_struct57->id;
+if(cltype55 >= (&type_core__Bool)->table_size) {
+var54 = 0;
+} else {
+var54 = (&type_core__Bool)->type_table[cltype55] == idtype56;
+}
+if (unlikely(!var54)) {
+var_class_name58 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name58);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var59 = (val*)((long)(1)<<2|3);
+var50->attrs[COLOR_opts__Option___value].val = var59; /* _value on <var50:OptionBool> */
+RET_LABEL53:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_substitute_monomorph (var_tc) on <var_tc:ToolContext> */
+var62 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_substitute_monomorph].val; /* _opt_substitute_monomorph on <var_tc:ToolContext> */
+if (unlikely(var62 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_substitute_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 41);
+fatal_exit(1);
+}
+var60 = var62;
+RET_LABEL61:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var60,1) on <var60:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct67 = var60->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype65 = type_struct67->color;
+idtype66 = type_struct67->id;
+if(cltype65 >= (&type_core__Bool)->table_size) {
+var64 = 0;
+} else {
+var64 = (&type_core__Bool)->type_table[cltype65] == idtype66;
+}
+if (unlikely(!var64)) {
+var_class_name68 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name68);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var69 = (val*)((long)(1)<<2|3);
+var60->attrs[COLOR_opts__Option___value].val = var69; /* _value on <var60:OptionBool> */
+RET_LABEL63:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_substitute_monomorph (var_tc) on <var_tc:ToolContext> */
+var72 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_substitute_monomorph].val; /* _opt_substitute_monomorph on <var_tc:ToolContext> */
+if (unlikely(var72 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_substitute_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 41);
+fatal_exit(1);
+}
+var70 = var72;
+RET_LABEL71:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var70) on <var70:OptionBool> */
+var75 = var70->attrs[COLOR_opts__Option___value].val; /* _value on <var70:OptionBool> */
+var73 = var75;
+RET_LABEL74:(void)0;
+}
+}
+var76 = (short int)((long)(var73)>>2);
+if (var76){
+{
+{ /* Inline separate_compiler#ToolContext#opt_trampoline_call (var_tc) on <var_tc:ToolContext> */
+var79 = var_tc->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_trampoline_call].val; /* _opt_trampoline_call on <var_tc:ToolContext> */
+if (unlikely(var79 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_trampoline_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 37);
+fatal_exit(1);
+}
+var77 = var79;
+RET_LABEL78:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value= (var77,1) on <var77:OptionBool> */
+/* Covariant cast for argument 0 (value) <1:Bool> isa VALUE */
+/* <1:Bool> isa VALUE */
+type_struct84 = var77->type->resolution_table->types[COLOR_opts__Option__VALUE];
+cltype82 = type_struct84->color;
+idtype83 = type_struct84->id;
+if(cltype82 >= (&type_core__Bool)->table_size) {
+var81 = 0;
+} else {
+var81 = (&type_core__Bool)->type_table[cltype82] == idtype83;
+}
+if (unlikely(!var81)) {
+var_class_name85 = type_core__Bool.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name85);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
+fatal_exit(1);
+}
+var86 = (val*)((long)(1)<<2|3);
+var77->attrs[COLOR_opts__Option___value].val = var86; /* _value on <var77:OptionBool> */
+RET_LABEL80:(void)0;
+}
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompilerPhase#process_mainmodule for (self: SeparateCompilerPhase, MModule, SequenceRead[MModule]) */
+void nitc___nitc__SeparateCompilerPhase___nitc__modelbuilder__Phase__process_mainmodule(val* self, val* p0, val* p1) {
+val* var_mainmodule /* var mainmodule: MModule */;
+val* var_given_mmodules /* var given_mmodules: SequenceRead[MModule] */;
+val* var /* : ToolContext */;
+val* var2 /* : ToolContext */;
+val* var3 /* : OptionBool */;
+val* var5 /* : OptionBool */;
+val* var6 /* : nullable Object */;
+val* var8 /* : nullable Object */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : ToolContext */;
+val* var13 /* : ToolContext */;
+val* var14 /* : ModelBuilder */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var15 /* : RapidTypeAnalysis */;
+val* var_analysis /* var analysis: RapidTypeAnalysis */;
+var_mainmodule = p0;
+var_given_mmodules = p1;
+{
+{ /* Inline phase#Phase#toolcontext (self) on <self:SeparateCompilerPhase> */
+var2 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:SeparateCompilerPhase> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_separate (var) on <var:ToolContext> */
+var5 = var->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_separate].val; /* _opt_separate on <var:ToolContext> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_separate");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 24);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var3) on <var3:OptionBool> */
+var8 = var3->attrs[COLOR_opts__Option___value].val; /* _value on <var3:OptionBool> */
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+var9 = (short int)((long)(var6)>>2);
+var10 = !var9;
+if (var10){
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline phase#Phase#toolcontext (self) on <self:SeparateCompilerPhase> */
+var13 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:SeparateCompilerPhase> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+var14 = nitc__modelbuilder_base___ToolContext___modelbuilder(var11);
+}
+var_modelbuilder = var14;
+{
+var15 = nitc__rapid_type_analysis___ModelBuilder___do_rapid_type_analysis(var_modelbuilder, var_mainmodule);
+}
+var_analysis = var15;
+{
+nitc__separate_compiler___ModelBuilder___run_separate_compiler(var_modelbuilder, var_mainmodule, var_analysis); /* Direct call separate_compiler#ModelBuilder#run_separate_compiler on <var_modelbuilder:ModelBuilder>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#ModelBuilder#run_separate_compiler for (self: ModelBuilder, MModule, nullable RapidTypeAnalysis) */
+void nitc__separate_compiler___ModelBuilder___run_separate_compiler(val* self, val* p0, val* p1) {
+val* var_mainmodule /* var mainmodule: MModule */;
+val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
+val* var /* : Sys */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+long var_time0 /* var time0: Int */;
+val* var4 /* : ToolContext */;
+val* var6 /* : ToolContext */;
+static val* varonce;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : String */;
+val* var10 /* : SeparateCompiler */;
+val* var_compiler /* var compiler: SeparateCompiler */;
+val* var11 /* : Sys */;
+long var12 /* : Int */;
+long var14 /* : Int */;
+long var_time1 /* var time1: Int */;
+val* var15 /* : ToolContext */;
+val* var17 /* : ToolContext */;
+val* var19 /* : NativeArray[String] */;
+static val* varonce18;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : NativeString */;
+val* var23 /* : String */;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+val* var27 /* : String */;
+long var28 /* : Int */;
+short int var30 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var31 /* : Int */;
+val* var32 /* : String */;
+val* var33 /* : String */;
+var_mainmodule = p0;
+var_runtime_type_analysis = p1;
+var = glob_sys;
+{
+{ /* Inline time#Sys#get_time (var) on <var:Sys> */
+struct nitni_instance* var_for_c_0;
+var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
+var_for_c_0->value = var;
+var3 = time___Sys_get_time___impl(var_for_c_0);
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+var_time0 = var1;
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var6 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var7 = varonce;
+} else {
+var8 = "*** GENERATING C ***";
+var9 = core__flat___NativeString___to_s_full(var8, 20l, 20l);
+var7 = var9;
+varonce = var7;
+}
+{
+nitc___nitc__ToolContext___info(var4, var7, 1l); /* Direct call toolcontext#ToolContext#info on <var4:ToolContext>*/
+}
+var10 = NEW_nitc__SeparateCompiler(&type_nitc__SeparateCompiler);
+{
+((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__mainmodule_61d]))(var10, var_mainmodule); /* mainmodule= on <var10:SeparateCompiler>*/
+}
+{
+((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__modelbuilder_61d]))(var10, self); /* modelbuilder= on <var10:SeparateCompiler>*/
+}
+{
+((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nitc__separate_compiler__SeparateCompiler__runtime_type_analysis_61d]))(var10, var_runtime_type_analysis); /* runtime_type_analysis= on <var10:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))(var10->class->vft[COLOR_core__kernel__Object__init]))(var10); /* init on <var10:SeparateCompiler>*/
+}
+var_compiler = var10;
+{
+nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__do_compilation(var_compiler); /* Direct call separate_compiler#SeparateCompiler#do_compilation on <var_compiler:SeparateCompiler>*/
+}
+{
+nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__display_stats(var_compiler); /* Direct call separate_compiler#SeparateCompiler#display_stats on <var_compiler:SeparateCompiler>*/
+}
+var11 = glob_sys;
+{
+{ /* Inline time#Sys#get_time (var11) on <var11:Sys> */
+struct nitni_instance* var_for_c_0;
+var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
+var_for_c_0->value = var11;
+var14 = time___Sys_get_time___impl(var_for_c_0);
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+var_time1 = var12;
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var17 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(varonce18==NULL)) {
+var19 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
+} else {
+var22 = "*** END GENERATING C: ";
+var23 = core__flat___NativeString___to_s_full(var22, 22l, 22l);
+var21 = var23;
+varonce20 = var21;
+}
+((struct instance_core__NativeArray*)var19)->values[0]=var21;
+if (likely(varonce24!=NULL)) {
+var25 = varonce24;
+} else {
+var26 = " ***";
+var27 = core__flat___NativeString___to_s_full(var26, 4l, 4l);
+var25 = var27;
+varonce24 = var25;
+}
+((struct instance_core__NativeArray*)var19)->values[2]=var25;
+} else {
+var19 = varonce18;
+varonce18 = NULL;
+}
+{
+{ /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
+/* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
+/* <var_time0:Int> isa OTHER */
+var30 = 1; /* easy <var_time0:Int> isa OTHER*/
+if (unlikely(!var30)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+fatal_exit(1);
+}
+var31 = var_time1 - var_time0;
+var28 = var31;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+}
+var32 = core__flat___Int___core__abstract_text__Object__to_s(var28);
+((struct instance_core__NativeArray*)var19)->values[1]=var32;
+{
+var33 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
+}
+varonce18 = var19;
+{
+nitc___nitc__ToolContext___info(var15, var33, 2l); /* Direct call toolcontext#ToolContext#info on <var15:ToolContext>*/
+}
+{
+nitc__abstract_compiler___ModelBuilder___write_and_make(self, var_compiler); /* Direct call abstract_compiler#ModelBuilder#write_and_make on <self:ModelBuilder>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_tables for (self: ModelBuilder): Int */
+long nitc__separate_compiler___ModelBuilder___nb_invok_by_tables(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <self:ModelBuilder> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_tables= for (self: ModelBuilder, Int) */
+void nitc__separate_compiler___ModelBuilder___nb_invok_by_tables_61d(val* self, long p0) {
+self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_tables].l = p0; /* _nb_invok_by_tables on <self:ModelBuilder> */
+RET_LABEL:;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_direct for (self: ModelBuilder): Int */
+long nitc__separate_compiler___ModelBuilder___nb_invok_by_direct(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <self:ModelBuilder> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_direct= for (self: ModelBuilder, Int) */
+void nitc__separate_compiler___ModelBuilder___nb_invok_by_direct_61d(val* self, long p0) {
+self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_direct].l = p0; /* _nb_invok_by_direct on <self:ModelBuilder> */
+RET_LABEL:;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_inline for (self: ModelBuilder): Int */
+long nitc__separate_compiler___ModelBuilder___nb_invok_by_inline(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <self:ModelBuilder> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#ModelBuilder#nb_invok_by_inline= for (self: ModelBuilder, Int) */
+void nitc__separate_compiler___ModelBuilder___nb_invok_by_inline_61d(val* self, long p0) {
+self->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_inline].l = p0; /* _nb_invok_by_inline on <self:ModelBuilder> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#runtime_type_analysis for (self: SeparateCompiler): nullable RapidTypeAnalysis */
+val* nitc___nitc__SeparateCompiler___runtime_type_analysis(val* self) {
+val* var /* : nullable RapidTypeAnalysis */;
+val* var1 /* : nullable RapidTypeAnalysis */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#runtime_type_analysis= for (self: SeparateCompiler, nullable RapidTypeAnalysis) */
+void nitc___nitc__SeparateCompiler___runtime_type_analysis_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val = p0; /* _runtime_type_analysis on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#undead_types for (self: SeparateCompiler): Set[MType] */
+val* nitc___nitc__SeparateCompiler___undead_types(val* self) {
+val* var /* : Set[MType] */;
+val* var1 /* : Set[MType] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 146);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#live_unresolved_types for (self: SeparateCompiler): Map[MClassDef, Set[MType]] */
+val* nitc___nitc__SeparateCompiler___live_unresolved_types(val* self) {
+val* var /* : Map[MClassDef, Set[MType]] */;
+val* var1 /* : Map[MClassDef, Set[MType]] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 147);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_ids for (self: SeparateCompiler): Map[MType, Int] */
+val* nitc___nitc__SeparateCompiler___type_ids(val* self) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_ids= for (self: SeparateCompiler, Map[MType, Int]) */
+void nitc___nitc__SeparateCompiler___type_ids_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val = p0; /* _type_ids on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#type_colors for (self: SeparateCompiler): Map[MType, Int] */
+val* nitc___nitc__SeparateCompiler___type_colors(val* self) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val; /* _type_colors on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 150);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_colors= for (self: SeparateCompiler, Map[MType, Int]) */
+void nitc___nitc__SeparateCompiler___type_colors_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val = p0; /* _type_colors on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#opentype_colors for (self: SeparateCompiler): Map[MType, Int] */
+val* nitc___nitc__SeparateCompiler___opentype_colors(val* self) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val; /* _opentype_colors on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opentype_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 151);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#opentype_colors= for (self: SeparateCompiler, Map[MType, Int]) */
+void nitc___nitc__SeparateCompiler___opentype_colors_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val = p0; /* _opentype_colors on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#init for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___core__kernel__Object__init(val* self) {
+static val* varonce;
+val* var /* : String */;
+char* var1 /* : NativeString */;
+val* var2 /* : String */;
+val* var3 /* : CodeFile */;
+val* var_file /* var file: CodeFile */;
+val* var4 /* : CodeWriter */;
+{
+((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__SeparateCompiler___core__kernel__Object__init]))(self); /* init on <self:SeparateCompiler>*/
+}
+if (likely(varonce!=NULL)) {
+var = varonce;
+} else {
+var1 = "nit.common";
+var2 = core__flat___NativeString___to_s_full(var1, 10l, 10l);
+var = var2;
+varonce = var;
+}
+{
+var3 = nitc___nitc__AbstractCompiler___new_file(self, var);
+}
+var_file = var3;
+var4 = NEW_nitc__CodeWriter(&type_nitc__CodeWriter);
+{
+((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nitc__abstract_compiler__CodeWriter__file_61d]))(var4, var_file); /* file= on <var4:CodeWriter>*/
+}
+{
+((void(*)(val* self))(var4->class->vft[COLOR_core__kernel__Object__init]))(var4); /* init on <var4:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header= (self,var4) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val = var4; /* _header on <self:SeparateCompiler> */
+RET_LABEL5:(void)0;
+}
+}
+{
+nitc___nitc__SeparateCompiler___compile_box_kinds(self); /* Direct call separate_compiler#SeparateCompiler#compile_box_kinds on <self:SeparateCompiler>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#do_compilation for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__do_compilation(val* self) {
+val* var_compiler /* var compiler: SeparateCompiler */;
+val* var /* : MModule */;
+val* var2 /* : MModule */;
+val* var3 /* : String */;
+val* var_c_name /* var c_name: String */;
+val* var4 /* : ModelBuilder */;
+val* var6 /* : ModelBuilder */;
+val* var7 /* : ToolContext */;
+val* var9 /* : ToolContext */;
+static val* varonce;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : String */;
+val* var14 /* : NativeArray[String] */;
+static val* varonce13;
+static val* varonce15;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+val* var18 /* : String */;
+val* var19 /* : String */;
+val* var20 /* : CodeFile */;
+val* var21 /* : MModule */;
+val* var23 /* : MModule */;
+val* var24 /* : POSetElement[MModule] */;
+val* var26 /* : POSetElement[MModule] */;
+val* var27 /* : Collection[nullable Object] */;
+val* var_ /* var : Collection[MModule] */;
+val* var28 /* : Iterator[nullable Object] */;
+val* var_29 /* var : Iterator[MModule] */;
+short int var30 /* : Bool */;
+val* var31 /* : nullable Object */;
+val* var_m /* var m: MModule */;
+val* var32 /* : Array[MClass] */;
+val* var34 /* : Array[MClass] */;
+val* var_35 /* var : Array[MClass] */;
+val* var36 /* : IndexedIterator[nullable Object] */;
+val* var_37 /* var : IndexedIterator[MClass] */;
+short int var38 /* : Bool */;
+val* var40 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var42 /* : NativeArray[String] */;
+static val* varonce41;
+static val* varonce43;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+val* var46 /* : String */;
+val* var47 /* : String */;
+val* var48 /* : CodeFile */;
+val* var49 /* : MModule */;
+val* var51 /* : MModule */;
+val* var52 /* : POSetElement[MModule] */;
+val* var54 /* : POSetElement[MModule] */;
+val* var55 /* : Collection[nullable Object] */;
+val* var_56 /* var : Collection[MModule] */;
+val* var57 /* : Iterator[nullable Object] */;
+val* var_58 /* var : Iterator[MModule] */;
+short int var59 /* : Bool */;
+val* var61 /* : nullable Object */;
+val* var_m62 /* var m: MModule */;
+val* var63 /* : ModelBuilder */;
+val* var65 /* : ModelBuilder */;
+val* var66 /* : ToolContext */;
+val* var68 /* : ToolContext */;
+val* var70 /* : NativeArray[String] */;
+static val* varonce69;
+static val* varonce71;
+val* var72 /* : String */;
+char* var73 /* : NativeString */;
+val* var74 /* : String */;
+val* var75 /* : String */;
+val* var76 /* : String */;
+val* var78 /* : NativeArray[String] */;
+static val* varonce77;
+static val* varonce79;
+val* var80 /* : String */;
+char* var81 /* : NativeString */;
+val* var82 /* : String */;
+val* var83 /* : String */;
+val* var84 /* : String */;
+val* var85 /* : CodeFile */;
+val* var86 /* : ModelBuilder */;
+val* var88 /* : ModelBuilder */;
+val* var89 /* : ToolContext */;
+val* var91 /* : ToolContext */;
+static val* varonce92;
+val* var93 /* : String */;
+char* var94 /* : NativeString */;
+val* var95 /* : String */;
+val* var97 /* : NativeArray[String] */;
+static val* varonce96;
+static val* varonce98;
+val* var99 /* : String */;
+char* var100 /* : NativeString */;
+val* var101 /* : String */;
+val* var102 /* : String */;
+val* var103 /* : CodeFile */;
+var_compiler = self;
+{
+nitc___nitc__AbstractCompiler___compile_header(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_header on <var_compiler:SeparateCompiler>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var);
+}
+var_c_name = var3;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var6 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var4) on <var4:ModelBuilder> */
+var9 = var4->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var4:ModelBuilder> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var10 = varonce;
+} else {
+var11 = "Property coloring";
+var12 = core__flat___NativeString___to_s_full(var11, 17l, 17l);
+var10 = var12;
+varonce = var10;
+}
+{
+nitc___nitc__ToolContext___info(var7, var10, 2l); /* Direct call toolcontext#ToolContext#info on <var7:ToolContext>*/
+}
+if (unlikely(varonce13==NULL)) {
+var14 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce15!=NULL)) {
+var16 = varonce15;
+} else {
+var17 = ".classes";
+var18 = core__flat___NativeString___to_s_full(var17, 8l, 8l);
+var16 = var18;
+varonce15 = var16;
+}
+((struct instance_core__NativeArray*)var14)->values[1]=var16;
+} else {
+var14 = varonce13;
+varonce13 = NULL;
+}
+((struct instance_core__NativeArray*)var14)->values[0]=var_c_name;
+{
+var19 = ((val*(*)(val* self))(var14->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
+}
+varonce13 = var14;
+{
+var20 = nitc___nitc__AbstractCompiler___new_file(var_compiler, var19);
+}
+{
+nitc___nitc__SeparateCompiler___do_property_coloring(var_compiler); /* Direct call separate_compiler#SeparateCompiler#do_property_coloring on <var_compiler:SeparateCompiler>*/
+}
+{
+nitc___nitc__SeparateCompiler___compile_class_infos(var_compiler); /* Direct call separate_compiler#SeparateCompiler#compile_class_infos on <var_compiler:SeparateCompiler>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var23 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var21) on <var21:MModule> */
+var26 = var21->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var21:MModule> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 104);
+fatal_exit(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+var27 = poset___poset__POSetElement___greaters(var24);
+}
+var_ = var27;
+{
+var28 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[MModule]>*/
+}
+var_29 = var28;
+for(;;) {
+{
+var30 = ((short int(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_29); /* is_ok on <var_29:Iterator[MModule]>*/
+}
+if (var30){
+} else {
+goto BREAK_label;
+}
+{
+var31 = ((val*(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_29); /* item on <var_29:Iterator[MModule]>*/
+}
+var_m = var31;
+{
+{ /* Inline model#MModule#intro_mclasses (var_m) on <var_m:MModule> */
+var34 = var_m->attrs[COLOR_nitc__model__MModule___intro_mclasses].val; /* _intro_mclasses on <var_m:MModule> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclasses");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 138);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+var_35 = var32;
+{
+var36 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_35);
+}
+var_37 = var36;
+for(;;) {
+{
+var38 = ((short int(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_37); /* is_ok on <var_37:IndexedIterator[MClass]>*/
+}
+if (var38){
+} else {
+goto BREAK_label39;
+}
+{
+var40 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_37); /* item on <var_37:IndexedIterator[MClass]>*/
+}
+var_mclass = var40;
+{
+((void(*)(val* self, val* p0))(var_compiler->class->vft[COLOR_nitc__separate_compiler__SeparateCompiler__compile_class_to_c]))(var_compiler, var_mclass); /* compile_class_to_c on <var_compiler:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_37); /* next on <var_37:IndexedIterator[MClass]>*/
+}
+}
+BREAK_label39: (void)0;
+{
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_37); /* finish on <var_37:IndexedIterator[MClass]>*/
+}
+{
+((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_29); /* next on <var_29:Iterator[MModule]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_29); /* finish on <var_29:Iterator[MModule]>*/
+}
+if (unlikely(varonce41==NULL)) {
+var42 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce43!=NULL)) {
+var44 = varonce43;
+} else {
+var45 = ".main";
+var46 = core__flat___NativeString___to_s_full(var45, 5l, 5l);
+var44 = var46;
+varonce43 = var44;
+}
+((struct instance_core__NativeArray*)var42)->values[1]=var44;
+} else {
+var42 = varonce41;
+varonce41 = NULL;
+}
+((struct instance_core__NativeArray*)var42)->values[0]=var_c_name;
+{
+var47 = ((val*(*)(val* self))(var42->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var42); /* native_to_s on <var42:NativeArray[String]>*/
+}
+varonce41 = var42;
+{
+var48 = nitc___nitc__AbstractCompiler___new_file(var_compiler, var47);
+}
+{
+nitc___nitc__AbstractCompiler___compile_nitni_global_ref_functions(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_nitni_global_ref_functions on <var_compiler:SeparateCompiler>*/
+}
+{
+nitc___nitc__AbstractCompiler___compile_main_function(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_main_function on <var_compiler:SeparateCompiler>*/
+}
+{
+nitc___nitc__AbstractCompiler___compile_finalizer_function(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_finalizer_function on <var_compiler:SeparateCompiler>*/
+}
+{
+nitc___nitc__SeparateCompiler___link_mmethods(var_compiler); /* Direct call separate_compiler#SeparateCompiler#link_mmethods on <var_compiler:SeparateCompiler>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var51 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var49) on <var49:MModule> */
+var54 = var49->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var49:MModule> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 104);
+fatal_exit(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+{
+var55 = poset___poset__POSetElement___greaters(var52);
+}
+var_56 = var55;
+{
+var57 = ((val*(*)(val* self))((((long)var_56&3)?class_info[((long)var_56&3)]:var_56->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_56); /* iterator on <var_56:Collection[MModule]>*/
+}
+var_58 = var57;
+for(;;) {
+{
+var59 = ((short int(*)(val* self))((((long)var_58&3)?class_info[((long)var_58&3)]:var_58->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_58); /* is_ok on <var_58:Iterator[MModule]>*/
+}
+if (var59){
+} else {
+goto BREAK_label60;
+}
+{
+var61 = ((val*(*)(val* self))((((long)var_58&3)?class_info[((long)var_58&3)]:var_58->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_58); /* item on <var_58:Iterator[MModule]>*/
+}
+var_m62 = var61;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var65 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var65 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var63 = var65;
+RET_LABEL64:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var63) on <var63:ModelBuilder> */
+var68 = var63->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var63:ModelBuilder> */
+if (unlikely(var68 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var66 = var68;
+RET_LABEL67:(void)0;
+}
+}
+if (unlikely(varonce69==NULL)) {
+var70 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce71!=NULL)) {
+var72 = varonce71;
+} else {
+var73 = "Generate C for module ";
+var74 = core__flat___NativeString___to_s_full(var73, 22l, 22l);
+var72 = var74;
+varonce71 = var72;
+}
+((struct instance_core__NativeArray*)var70)->values[0]=var72;
+} else {
+var70 = varonce69;
+varonce69 = NULL;
+}
+{
+var75 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var_m62);
+}
+((struct instance_core__NativeArray*)var70)->values[1]=var75;
+{
+var76 = ((val*(*)(val* self))(var70->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var70); /* native_to_s on <var70:NativeArray[String]>*/
+}
+varonce69 = var70;
+{
+nitc___nitc__ToolContext___info(var66, var76, 2l); /* Direct call toolcontext#ToolContext#info on <var66:ToolContext>*/
+}
+if (unlikely(varonce77==NULL)) {
+var78 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce79!=NULL)) {
+var80 = varonce79;
+} else {
+var81 = ".sep";
+var82 = core__flat___NativeString___to_s_full(var81, 4l, 4l);
+var80 = var82;
+varonce79 = var80;
+}
+((struct instance_core__NativeArray*)var78)->values[1]=var80;
+} else {
+var78 = varonce77;
+varonce77 = NULL;
+}
+{
+var83 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_m62);
+}
+((struct instance_core__NativeArray*)var78)->values[0]=var83;
+{
+var84 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
+}
+varonce77 = var78;
+{
+var85 = nitc___nitc__AbstractCompiler___new_file(var_compiler, var84);
+}
+{
+nitc___nitc__SeparateCompiler___compile_module_to_c(var_compiler, var_m62); /* Direct call separate_compiler#SeparateCompiler#compile_module_to_c on <var_compiler:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))((((long)var_58&3)?class_info[((long)var_58&3)]:var_58->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_58); /* next on <var_58:Iterator[MModule]>*/
+}
+}
+BREAK_label60: (void)0;
+{
+((void(*)(val* self))((((long)var_58&3)?class_info[((long)var_58&3)]:var_58->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_58); /* finish on <var_58:Iterator[MModule]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var88 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var88 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var86 = var88;
+RET_LABEL87:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var86) on <var86:ModelBuilder> */
+var91 = var86->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var86:ModelBuilder> */
+if (unlikely(var91 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var89 = var91;
+RET_LABEL90:(void)0;
+}
+}
+if (likely(varonce92!=NULL)) {
+var93 = varonce92;
+} else {
+var94 = "Type coloring";
+var95 = core__flat___NativeString___to_s_full(var94, 13l, 13l);
+var93 = var95;
+varonce92 = var93;
+}
+{
+nitc___nitc__ToolContext___info(var89, var93, 2l); /* Direct call toolcontext#ToolContext#info on <var89:ToolContext>*/
+}
+if (unlikely(varonce96==NULL)) {
+var97 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce98!=NULL)) {
+var99 = varonce98;
+} else {
+var100 = ".types";
+var101 = core__flat___NativeString___to_s_full(var100, 6l, 6l);
+var99 = var101;
+varonce98 = var99;
+}
+((struct instance_core__NativeArray*)var97)->values[1]=var99;
+} else {
+var97 = varonce96;
+varonce96 = NULL;
+}
+((struct instance_core__NativeArray*)var97)->values[0]=var_c_name;
+{
+var102 = ((val*(*)(val* self))(var97->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var97); /* native_to_s on <var97:NativeArray[String]>*/
+}
+varonce96 = var97;
+{
+var103 = nitc___nitc__AbstractCompiler___new_file(var_compiler, var102);
+}
+{
+((void(*)(val* self))(var_compiler->class->vft[COLOR_nitc__separate_compiler__SeparateCompiler__compile_types]))(var_compiler); /* compile_types on <var_compiler:SeparateCompiler>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_types for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___compile_types(val* self) {
+val* var_compiler /* var compiler: SeparateCompiler */;
+val* var /* : Collection[MType] */;
+val* var_mtypes /* var mtypes: Collection[MType] */;
+val* var_ /* var : Collection[MType] */;
+val* var1 /* : Iterator[nullable Object] */;
+val* var_2 /* var : Iterator[MType] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_t /* var t: MType */;
+val* var5 /* : Set[MType] */;
+val* var7 /* : Set[MType] */;
+val* var_8 /* var : Set[MType] */;
+val* var9 /* : Iterator[nullable Object] */;
+val* var_10 /* var : Iterator[MType] */;
+short int var11 /* : Bool */;
+val* var13 /* : nullable Object */;
+val* var_t14 /* var t: MType */;
+short int var15 /* : Bool */;
+var_compiler = self;
+{
+var = nitc___nitc__SeparateCompiler___do_type_coloring(var_compiler);
+}
+var_mtypes = var;
+var_ = var_mtypes;
+{
+var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[MType]>*/
+}
+var_2 = var1;
+for(;;) {
+{
+var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[MType]>*/
+}
+if (var3){
+} else {
+goto BREAK_label;
+}
+{
+var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[MType]>*/
+}
+var_t = var4;
+{
+nitc___nitc__SeparateCompiler___compile_type_to_c(var_compiler, var_t); /* Direct call separate_compiler#SeparateCompiler#compile_type_to_c on <var_compiler:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[MType]>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on <var_compiler:SeparateCompiler> */
+var7 = var_compiler->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var_compiler:SeparateCompiler> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 146);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+var_8 = var5;
+{
+var9 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_8); /* iterator on <var_8:Set[MType]>*/
+}
+var_10 = var9;
+for(;;) {
+{
+var11 = ((short int(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_10); /* is_ok on <var_10:Iterator[MType]>*/
+}
+if (var11){
+} else {
+goto BREAK_label12;
+}
+{
+var13 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_10); /* item on <var_10:Iterator[MType]>*/
+}
+var_t14 = var13;
+{
+var15 = ((short int(*)(val* self, val* p0))((((long)var_mtypes&3)?class_info[((long)var_mtypes&3)]:var_mtypes->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var_mtypes, var_t14); /* has on <var_mtypes:Collection[MType]>*/
+}
+if (var15){
+goto BREAK_label16;
+} else {
+}
+{
+nitc___nitc__SeparateCompiler___compile_type_to_c(var_compiler, var_t14); /* Direct call separate_compiler#SeparateCompiler#compile_type_to_c on <var_compiler:SeparateCompiler>*/
+}
+BREAK_label16: (void)0;
+{
+((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_10); /* next on <var_10:Iterator[MType]>*/
+}
+}
+BREAK_label12: (void)0;
+{
+((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_10); /* finish on <var_10:Iterator[MType]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_header_structs for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___nitc__abstract_compiler__AbstractCompiler__compile_header_structs(val* self) {
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+static val* varonce;
+val* var3 /* : String */;
+char* var4 /* : NativeString */;
+val* var5 /* : String */;
+val* var6 /* : CodeWriter */;
+val* var8 /* : CodeWriter */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : String */;
+val* var13 /* : CodeWriter */;
+val* var15 /* : CodeWriter */;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+val* var19 /* : String */;
+val* var20 /* : CodeWriter */;
+val* var22 /* : CodeWriter */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+val* var26 /* : String */;
+val* var27 /* : CodeWriter */;
+val* var29 /* : CodeWriter */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+val* var33 /* : String */;
+val* var34 /* : CodeWriter */;
+val* var36 /* : CodeWriter */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+val* var40 /* : String */;
+val* var41 /* : ModelBuilder */;
+val* var43 /* : ModelBuilder */;
+val* var44 /* : ToolContext */;
+val* var46 /* : ToolContext */;
+val* var47 /* : OptionBool */;
+val* var49 /* : OptionBool */;
+val* var50 /* : nullable Object */;
+val* var52 /* : nullable Object */;
+short int var53 /* : Bool */;
+short int var54 /* : Bool */;
+val* var55 /* : CodeWriter */;
+val* var57 /* : CodeWriter */;
+static val* varonce58;
+val* var59 /* : String */;
+char* var60 /* : NativeString */;
+val* var61 /* : String */;
+val* var62 /* : CodeWriter */;
+val* var64 /* : CodeWriter */;
+static val* varonce65;
+val* var66 /* : String */;
+char* var67 /* : NativeString */;
+val* var68 /* : String */;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var3 = varonce;
+} else {
+var4 = "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
+var5 = core__flat___NativeString___to_s_full(var4, 81l, 81l);
+var3 = var5;
+varonce = var3;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var, var3); /* Direct call abstract_compiler#CodeWriter#add_decl on <var:CodeWriter>*/
+}
+{
+nitc___nitc__SeparateCompiler___compile_header_attribute_structs(self); /* Direct call separate_compiler#SeparateCompiler#compile_header_attribute_structs on <self:SeparateCompiler>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var8 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
+} else {
+var11 = "struct class { int box_kind; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
+var12 = core__flat___NativeString___to_s_full(var11, 97l, 97l);
+var10 = var12;
+varonce9 = var10;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var6, var10); /* Direct call abstract_compiler#CodeWriter#add_decl on <var6:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var15 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+if (likely(varonce16!=NULL)) {
+var17 = varonce16;
+} else {
+var18 = "struct type { int id; const char *name; int color; short int is_nullable; const struct types *resolution_table; int table_size; int type_table[]; }; /* general C type representing a Nit type. */";
+var19 = core__flat___NativeString___to_s_full(var18, 194l, 194l);
+var17 = var19;
+varonce16 = var17;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var13, var17); /* Direct call abstract_compiler#CodeWriter#add_decl on <var13:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var22 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
+} else {
+var25 = "struct instance { const struct type *type; const struct class *class; nitattribute_t attrs[]; }; /* general C type representing a Nit instance. */";
+var26 = core__flat___NativeString___to_s_full(var25, 146l, 146l);
+var24 = var26;
+varonce23 = var24;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var20, var24); /* Direct call abstract_compiler#CodeWriter#add_decl on <var20:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var29 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+if (likely(varonce30!=NULL)) {
+var31 = varonce30;
+} else {
+var32 = "struct types { int dummy; const struct type *types[]; }; /* a list types (used for vts, fts and unresolved lists). */";
+var33 = core__flat___NativeString___to_s_full(var32, 117l, 117l);
+var31 = var33;
+varonce30 = var31;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var27, var31); /* Direct call abstract_compiler#CodeWriter#add_decl on <var27:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var36 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var36 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+if (likely(varonce37!=NULL)) {
+var38 = varonce37;
+} else {
+var39 = "typedef struct instance val; /* general C type representing a Nit instance. */";
+var40 = core__flat___NativeString___to_s_full(var39, 78l, 78l);
+var38 = var40;
+varonce37 = var38;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var34, var38); /* Direct call abstract_compiler#CodeWriter#add_decl on <var34:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var43 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var43 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var41 = var43;
+RET_LABEL42:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var41) on <var41:ModelBuilder> */
+var46 = var41->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var41:ModelBuilder> */
+if (unlikely(var46 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var44 = var46;
+RET_LABEL45:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_tag_primitives (var44) on <var44:ToolContext> */
+var49 = var44->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <var44:ToolContext> */
+if (unlikely(var49 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
+fatal_exit(1);
+}
+var47 = var49;
+RET_LABEL48:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var47) on <var47:OptionBool> */
+var52 = var47->attrs[COLOR_opts__Option___value].val; /* _value on <var47:OptionBool> */
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+var53 = (short int)((long)(var50)>>2);
+var54 = !var53;
+if (var54){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var57 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var57 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var55 = var57;
+RET_LABEL56:(void)0;
+}
+}
+if (likely(varonce58!=NULL)) {
+var59 = varonce58;
+} else {
+var60 = "extern const struct class *class_info[];";
+var61 = core__flat___NativeString___to_s_full(var60, 40l, 40l);
+var59 = var61;
+varonce58 = var59;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var55, var59); /* Direct call abstract_compiler#CodeWriter#add_decl on <var55:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var64 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var64 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+if (likely(varonce65!=NULL)) {
+var66 = varonce65;
+} else {
+var67 = "extern const struct type *type_info[];";
+var68 = core__flat___NativeString___to_s_full(var67, 38l, 38l);
+var66 = var68;
+varonce65 = var66;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var62, var66); /* Direct call abstract_compiler#CodeWriter#add_decl on <var62:CodeWriter>*/
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_header_attribute_structs for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___compile_header_attribute_structs(val* self) {
+val* var /* : ModelBuilder */;
+val* var2 /* : ModelBuilder */;
+val* var3 /* : ToolContext */;
+val* var5 /* : ToolContext */;
+val* var6 /* : OptionBool */;
+val* var8 /* : OptionBool */;
+val* var9 /* : nullable Object */;
+val* var11 /* : nullable Object */;
+short int var12 /* : Bool */;
+val* var13 /* : CodeWriter */;
+val* var15 /* : CodeWriter */;
+static val* varonce;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+val* var18 /* : String */;
+val* var19 /* : CodeWriter */;
+val* var21 /* : CodeWriter */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+val* var25 /* : String */;
+val* var26 /* : CodeWriter */;
+val* var28 /* : CodeWriter */;
+static val* varonce29;
+val* var30 /* : String */;
+char* var31 /* : NativeString */;
+val* var32 /* : String */;
+val* var33 /* : HashMap[MClass, Int] */;
+val* var35 /* : HashMap[MClass, Int] */;
+val* var_ /* var : HashMap[MClass, Int] */;
+val* var36 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_37 /* var : MapIterator[MClass, Int] */;
+short int var38 /* : Bool */;
+val* var39 /* : nullable Object */;
+val* var_c /* var c: MClass */;
+val* var40 /* : nullable Object */;
+long var41 /* : Int */;
+long var_v /* var v: Int */;
+val* var42 /* : MClassType */;
+val* var44 /* : MClassType */;
+val* var_t /* var t: MClassType */;
+val* var45 /* : MClass */;
+val* var47 /* : MClass */;
+val* var48 /* : String */;
+val* var50 /* : String */;
+static val* varonce51;
+val* var52 /* : String */;
+char* var53 /* : NativeString */;
+val* var54 /* : String */;
+short int var55 /* : Bool */;
+val* var57 /* : CodeWriter */;
+val* var59 /* : CodeWriter */;
+val* var61 /* : NativeArray[String] */;
+static val* varonce60;
+static val* varonce62;
+val* var63 /* : String */;
+char* var64 /* : NativeString */;
+val* var65 /* : String */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+val* var69 /* : String */;
+val* var70 /* : String */;
+val* var71 /* : String */;
+val* var72 /* : String */;
+val* var74 /* : CodeWriter */;
+val* var76 /* : CodeWriter */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+val* var80 /* : String */;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var) on <var:ModelBuilder> */
+var5 = var->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var:ModelBuilder> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var3) on <var3:ToolContext> */
+var8 = var3->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var3:ToolContext> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 28);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var6) on <var6:OptionBool> */
+var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionBool> */
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+var12 = (short int)((long)(var9)>>2);
+if (var12){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var15 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var16 = varonce;
+} else {
+var17 = "typedef void* nitattribute_t; /* general C type representing a Nit attribute. */";
+var18 = core__flat___NativeString___to_s_full(var17, 80l, 80l);
+var16 = var18;
+varonce = var16;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var13, var16); /* Direct call abstract_compiler#CodeWriter#add_decl on <var13:CodeWriter>*/
+}
+} else {
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var21 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+if (likely(varonce22!=NULL)) {
+var23 = varonce22;
+} else {
+var24 = "typedef union {";
+var25 = core__flat___NativeString___to_s_full(var24, 15l, 15l);
+var23 = var25;
+varonce22 = var23;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var19, var23); /* Direct call abstract_compiler#CodeWriter#add_decl on <var19:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var28 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+if (likely(varonce29!=NULL)) {
+var30 = varonce29;
+} else {
+var31 = "void* val;";
+var32 = core__flat___NativeString___to_s_full(var31, 10l, 10l);
+var30 = var32;
+varonce29 = var30;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var26, var30); /* Direct call abstract_compiler#CodeWriter#add_decl on <var26:CodeWriter>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
+var35 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+var_ = var33;
+{
+var36 = core___core__HashMap___core__abstract_collection__MapRead__iterator(var_);
+}
+var_37 = var36;
+for(;;) {
+{
+var38 = ((short int(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_37); /* is_ok on <var_37:MapIterator[MClass, Int]>*/
+}
+if (var38){
+} else {
+goto BREAK_label;
+}
+{
+var39 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_37); /* key on <var_37:MapIterator[MClass, Int]>*/
+}
+var_c = var39;
+{
+var40 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_37); /* item on <var_37:MapIterator[MClass, Int]>*/
+}
+var41 = (long)(var40)>>2;
+var_v = var41;
+{
+{ /* Inline model#MClass#mclass_type (var_c) on <var_c:MClass> */
+var44 = var_c->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var_c:MClass> */
+if (unlikely(var44 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 507);
+fatal_exit(1);
+}
+var42 = var44;
+RET_LABEL43:(void)0;
+}
+}
+var_t = var42;
+{
+{ /* Inline model#MClassType#mclass (var_t) on <var_t:MClassType> */
+var47 = var_t->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_t:MClassType> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#name (var45) on <var45:MClass> */
+var50 = var45->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var45:MClass> */
+if (unlikely(var50 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 385);
+fatal_exit(1);
+}
+var48 = var50;
+RET_LABEL49:(void)0;
+}
+}
+if (likely(varonce51!=NULL)) {
+var52 = varonce51;
+} else {
+var53 = "Pointer";
+var54 = core__flat___NativeString___to_s_full(var53, 7l, 7l);
+var52 = var54;
+varonce51 = var52;
+}
+{
+var55 = ((short int(*)(val* self, val* p0))(var48->class->vft[COLOR_core__kernel__Object___61d_61d]))(var48, var52); /* == on <var48:String>*/
+}
+if (var55){
+goto BREAK_label56;
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var59 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var59 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var57 = var59;
+RET_LABEL58:(void)0;
+}
+}
+if (unlikely(varonce60==NULL)) {
+var61 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
+if (likely(varonce62!=NULL)) {
+var63 = varonce62;
+} else {
+var64 = " ";
+var65 = core__flat___NativeString___to_s_full(var64, 1l, 1l);
+var63 = var65;
+varonce62 = var63;
+}
+((struct instance_core__NativeArray*)var61)->values[1]=var63;
+if (likely(varonce66!=NULL)) {
+var67 = varonce66;
+} else {
+var68 = ";";
+var69 = core__flat___NativeString___to_s_full(var68, 1l, 1l);
+var67 = var69;
+varonce66 = var67;
+}
+((struct instance_core__NativeArray*)var61)->values[3]=var67;
+} else {
+var61 = varonce60;
+varonce60 = NULL;
+}
+{
+var70 = nitc__abstract_compiler___MClassType___MType__ctype_extern(var_t);
+}
+((struct instance_core__NativeArray*)var61)->values[0]=var70;
+{
+var71 = nitc__abstract_compiler___MClassType___MType__ctypename(var_t);
+}
+((struct instance_core__NativeArray*)var61)->values[2]=var71;
+{
+var72 = ((val*(*)(val* self))(var61->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var61); /* native_to_s on <var61:NativeArray[String]>*/
+}
+varonce60 = var61;
+{
+nitc___nitc__CodeWriter___add_decl(var57, var72); /* Direct call abstract_compiler#CodeWriter#add_decl on <var57:CodeWriter>*/
+}
+BREAK_label56: (void)0;
+{
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_37); /* next on <var_37:MapIterator[MClass, Int]>*/
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_37) on <var_37:MapIterator[MClass, Int]> */
+RET_LABEL73:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var76 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var76 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 585);
+fatal_exit(1);
+}
+var74 = var76;
+RET_LABEL75:(void)0;
+}
+}
+if (likely(varonce77!=NULL)) {
+var78 = varonce77;
+} else {
+var79 = "} nitattribute_t; /* general C type representing a Nit attribute. */";
+var80 = core__flat___NativeString___to_s_full(var79, 68l, 68l);
+var78 = var80;
+varonce77 = var78;
+}
+{
+nitc___nitc__CodeWriter___add_decl(var74, var78); /* Direct call abstract_compiler#CodeWriter#add_decl on <var74:CodeWriter>*/
+}
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_box_kinds for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___compile_box_kinds(val* self) {
+val* var /* : Array[String] */;
+val* var_ /* var : Array[String] */;
+static val* varonce;
+val* var1 /* : String */;
+char* var2 /* : NativeString */;
+val* var3 /* : String */;
+static val* varonce4;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+val* var7 /* : String */;
+static val* varonce8;
+val* var9 /* : String */;
+char* var10 /* : NativeString */;
+val* var11 /* : String */;
+static val* varonce12;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+val* var15 /* : String */;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+val* var19 /* : String */;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : NativeString */;
+val* var23 /* : String */;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+val* var27 /* : String */;
+static val* varonce28;
+val* var29 /* : String */;
+char* var30 /* : NativeString */;
+val* var31 /* : String */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+val* var35 /* : String */;
+static val* varonce36;
+val* var37 /* : String */;
+char* var38 /* : NativeString */;
+val* var39 /* : String */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+val* var43 /* : String */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+val* var47 /* : String */;
+val* var_48 /* var : Array[String] */;
+val* var49 /* : IndexedIterator[nullable Object] */;
+val* var_50 /* var : IndexedIterator[String] */;
+short int var51 /* : Bool */;
+val* var52 /* : nullable Object */;
+val* var_classname /* var classname: String */;
+val* var53 /* : MModule */;
+val* var55 /* : MModule */;
+val* var56 /* : Model */;
+val* var58 /* : Model */;
+val* var59 /* : nullable Array[MClass] */;
+val* var_classes /* var classes: nullable Array[MClass] */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+long var63 /* : Int */;
+long var65 /* : Int */;
+short int var66 /* : Bool */;
+short int var68 /* : Bool */;
+val* var69 /* : Sys */;
+static val* varonce70;
+val* var71 /* : String */;
+char* var72 /* : NativeString */;
+val* var73 /* : String */;
+val* var74 /* : String */;
+val* var75 /* : HashMap[MClass, Int] */;
+val* var77 /* : HashMap[MClass, Int] */;
+val* var78 /* : nullable Object */;
+val* var79 /* : HashMap[MClass, Int] */;
+val* var81 /* : HashMap[MClass, Int] */;
+long var82 /* : Int */;
+long var83 /* : Int */;
+short int var85 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var86 /* : Int */;
+val* var87 /* : nullable Object */;
+var = NEW_core__Array(&type_core__Array__core__String);
+{
+core___core__Array___with_capacity(var, 12l); /* Direct call array#Array#with_capacity on <var:Array[String]>*/
+}
+var_ = var;
+if (likely(varonce!=NULL)) {
+var1 = varonce;
+} else {
+var2 = "Int";
+var3 = core__flat___NativeString___to_s_full(var2, 3l, 3l);
+var1 = var3;
+varonce = var1;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var1); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce4!=NULL)) {
+var5 = varonce4;
+} else {
+var6 = "Bool";
+var7 = core__flat___NativeString___to_s_full(var6, 4l, 4l);
+var5 = var7;
+varonce4 = var5;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var5); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce8!=NULL)) {
+var9 = varonce8;
+} else {
+var10 = "Byte";
+var11 = core__flat___NativeString___to_s_full(var10, 4l, 4l);
+var9 = var11;
+varonce8 = var9;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var9); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce12!=NULL)) {
+var13 = varonce12;
+} else {
+var14 = "Char";
+var15 = core__flat___NativeString___to_s_full(var14, 4l, 4l);
+var13 = var15;
+varonce12 = var13;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var13); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce16!=NULL)) {
+var17 = varonce16;
+} else {
+var18 = "Float";
+var19 = core__flat___NativeString___to_s_full(var18, 5l, 5l);
+var17 = var19;
+varonce16 = var17;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var17); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
+} else {
+var22 = "NativeString";
+var23 = core__flat___NativeString___to_s_full(var22, 12l, 12l);
+var21 = var23;
+varonce20 = var21;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var21); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce24!=NULL)) {
+var25 = varonce24;
+} else {
+var26 = "Pointer";
+var27 = core__flat___NativeString___to_s_full(var26, 7l, 7l);
+var25 = var27;
+varonce24 = var25;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var25); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
+} else {
+var30 = "Int8";
+var31 = core__flat___NativeString___to_s_full(var30, 4l, 4l);
+var29 = var31;
+varonce28 = var29;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var29); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce32!=NULL)) {
+var33 = varonce32;
+} else {
+var34 = "Int16";
+var35 = core__flat___NativeString___to_s_full(var34, 5l, 5l);
+var33 = var35;
+varonce32 = var33;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var33); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce36!=NULL)) {
+var37 = varonce36;
+} else {
+var38 = "UInt16";
+var39 = core__flat___NativeString___to_s_full(var38, 6l, 6l);
+var37 = var39;
+varonce36 = var37;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var37); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce40!=NULL)) {
+var41 = varonce40;
+} else {
+var42 = "Int32";
+var43 = core__flat___NativeString___to_s_full(var42, 5l, 5l);
+var41 = var43;
+varonce40 = var41;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var41); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+if (likely(varonce44!=NULL)) {
+var45 = varonce44;
+} else {
+var46 = "UInt32";
+var47 = core__flat___NativeString___to_s_full(var46, 6l, 6l);
+var45 = var47;
+varonce44 = var45;
+}
+{
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var45); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+}
+var_48 = var_;
+{
+var49 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_48);
+}
+var_50 = var49;
+for(;;) {
+{
+var51 = ((short int(*)(val* self))((((long)var_50&3)?class_info[((long)var_50&3)]:var_50->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_50); /* is_ok on <var_50:IndexedIterator[String]>*/
+}
+if (var51){
+} else {
+goto BREAK_label;
+}
+{
+var52 = ((val*(*)(val* self))((((long)var_50&3)?class_info[((long)var_50&3)]:var_50->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_50); /* item on <var_50:IndexedIterator[String]>*/
+}
+var_classname = var52;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var55 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var55 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var53 = var55;
+RET_LABEL54:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#model (var53) on <var53:MModule> */
+var58 = var53->attrs[COLOR_nitc__mmodule__MModule___model].val; /* _model on <var53:MModule> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 78);
+fatal_exit(1);
+}
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+{
+var59 = nitc__model___Model___get_mclasses_by_name(var56, var_classname);
+}
+var_classes = var59;
+if (var_classes == NULL) {
+var60 = 1; /* is null */
+} else {
+var60 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var61 = core___core__Array___core__kernel__Object___61d_61d(var_classes, ((val*)NULL));
+var60 = var61;
+}
+if (var60){
+goto BREAK_label62;
+} else {
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var_classes) on <var_classes:nullable Array[MClass](Array[MClass])> */
+var65 = var_classes->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_classes:nullable Array[MClass](Array[MClass])> */
+var63 = var65;
+RET_LABEL64:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var63,1l) on <var63:Int> */
+var68 = var63 == 1l;
+var66 = var68;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
+}
+}
+if (unlikely(!var66)) {
+var69 = glob_sys;
+if (likely(varonce70!=NULL)) {
+var71 = varonce70;
+} else {
+var72 = ", ";
+var73 = core__flat___NativeString___to_s_full(var72, 2l, 2l);
+var71 = var73;
+varonce70 = var71;
+}
+{
+var74 = core__abstract_text___Collection___join(var_classes, var71);
+}
+{
+core__file___Sys___print(var69, var74); /* Direct call file#Sys#print on <var69:Sys>*/
+}
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 259);
+fatal_exit(1);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
+var77 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var77 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var75 = var77;
+RET_LABEL76:(void)0;
+}
+}
+{
+var78 = core___core__SequenceRead___Collection__first(var_classes);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
+var81 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var81 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var79 = var81;
+RET_LABEL80:(void)0;
+}
+}
+{
+var82 = core___core__HashMap___core__abstract_collection__MapRead__length(var79);
+}
+{
+{ /* Inline kernel#Int#+ (var82,1l) on <var82:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var85 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var85)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var86 = var82 + 1l;
+var83 = var86;
+goto RET_LABEL84;
+RET_LABEL84:(void)0;
+}
+}
+{
+var87 = (val*)(var83<<2|1);
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var75, var78, var87); /* Direct call hash_collection#HashMap#[]= on <var75:HashMap[MClass, Int]>*/
+}
+BREAK_label62: (void)0;
+{
+((void(*)(val* self))((((long)var_50&3)?class_info[((long)var_50&3)]:var_50->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_50); /* next on <var_50:IndexedIterator[String]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_50&3)?class_info[((long)var_50&3)]:var_50->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_50); /* finish on <var_50:IndexedIterator[String]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#box_kinds for (self: SeparateCompiler): HashMap[MClass, Int] */
+val* nitc___nitc__SeparateCompiler___box_kinds(val* self) {
+val* var /* : HashMap[MClass, Int] */;
+val* var1 /* : HashMap[MClass, Int] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#box_kind_of for (self: SeparateCompiler, MClass): Int */
+long nitc___nitc__SeparateCompiler___box_kind_of(val* self, val* p0) {
+long var /* : Int */;
+val* var_mclass /* var mclass: MClass */;
+val* var1 /* : MClassType */;
+val* var3 /* : MClassType */;
+val* var4 /* : String */;
+static val* varonce;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+val* var7 /* : String */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : MClassKind */;
+val* var12 /* : MClassKind */;
+val* var13 /* : Sys */;
+val* var14 /* : MClassKind */;
+short int var15 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var17 /* : Bool */;
+short int var19 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var20 /* : String */;
+val* var22 /* : String */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+val* var26 /* : String */;
+short int var27 /* : Bool */;
+val* var_other29 /* var other: nullable Object */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+val* var32 /* : HashMap[MClass, Int] */;
+val* var34 /* : HashMap[MClass, Int] */;
+val* var35 /* : MModule */;
+val* var37 /* : MModule */;
+val* var38 /* : MClassType */;
+val* var39 /* : MClass */;
+val* var41 /* : MClass */;
+val* var42 /* : nullable Object */;
+long var43 /* : Int */;
+val* var44 /* : HashMap[MClass, Int] */;
+val* var46 /* : HashMap[MClass, Int] */;
+val* var47 /* : nullable Object */;
+long var48 /* : Int */;
+var_mclass = p0;
+{
+{ /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:MClass> */
+var3 = var_mclass->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:MClass> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 507);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = nitc__abstract_compiler___MClassType___MType__ctype_extern(var1);
+}
+if (likely(varonce!=NULL)) {
+var5 = varonce;
+} else {
+var6 = "val*";
+var7 = core__flat___NativeString___to_s_full(var6, 4l, 4l);
+var5 = var7;
+varonce = var5;
+}
+{
+var8 = ((short int(*)(val* self, val* p0))(var4->class->vft[COLOR_core__kernel__Object___61d_61d]))(var4, var5); /* == on <var4:String>*/
+}
+if (var8){
+var = 0l;
+goto RET_LABEL;
+} else {
+{
+{ /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
+var12 = var_mclass->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var_mclass:MClass> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var13 = glob_sys;
+{
+var14 = nitc__model___core__Sys___extern_kind(var13);
+}
+{
+{ /* Inline kernel#Object#== (var10,var14) on <var10:MClassKind> */
+var_other = var14;
+{
+{ /* Inline kernel#Object#is_same_instance (var10,var_other) on <var10:MClassKind> */
+var19 = var10 == var_other;
+var17 = var19;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
+}
+}
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+var_ = var15;
+if (var15){
+{
+{ /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
+var22 = var_mclass->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var_mclass:MClass> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 385);
+fatal_exit(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
+} else {
+var25 = "NativeString";
+var26 = core__flat___NativeString___to_s_full(var25, 12l, 12l);
+var24 = var26;
+varonce23 = var24;
+}
+{
+{ /* Inline kernel#Object#!= (var20,var24) on <var20:String> */
+var_other29 = var24;
+{
+var30 = ((short int(*)(val* self, val* p0))(var20->class->vft[COLOR_core__kernel__Object___61d_61d]))(var20, var_other29); /* == on <var20:String>*/
+}
+var31 = !var30;
+var27 = var31;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
+}
+}
+var9 = var27;
+} else {
+var9 = var_;
+}
+if (var9){
+{
+{ /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
+var34 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var37 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var35 = var37;
+RET_LABEL36:(void)0;
+}
+}
+{
+var38 = nitc__model___MModule___pointer_type(var35);
+}
+{
+{ /* Inline model#MClassType#mclass (var38) on <var38:MClassType> */
+var41 = var38->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var38:MClassType> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var39 = var41;
+RET_LABEL40:(void)0;
+}
+}
+{
+var42 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var32, var39);
+}
+var43 = (long)(var42)>>2;
+var = var43;
+goto RET_LABEL;
+} else {
+{
+{ /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
+var46 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
+if (unlikely(var46 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 264);
+fatal_exit(1);
+}
+var44 = var46;
+RET_LABEL45:(void)0;
+}
+}
+{
+var47 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var44, var_mclass);
+}
+var48 = (long)(var47)>>2;
+var = var48;
+goto RET_LABEL;
+}
+}
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#compile_color_consts for (self: SeparateCompiler, Map[Object, Int]) */
+void nitc___nitc__SeparateCompiler___compile_color_consts(val* self, val* p0) {
+val* var_colors /* var colors: Map[Object, Int] */;
+val* var /* : AbstractCompilerVisitor */;
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var_ /* var : Map[Object, Int] */;
+val* var1 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_2 /* var : MapIterator[Object, Int] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_m /* var m: Object */;
+val* var5 /* : nullable Object */;
+long var6 /* : Int */;
+long var_c /* var c: Int */;
+var_colors = p0;
+{
+var = ((val*(*)(val* self))(self->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
+}
+var_v = var;
+var_ = var_colors;
+{
+var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:Map[Object, Int]>*/
+}
+var_2 = var1;
+for(;;) {
+{
+var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_2); /* is_ok on <var_2:MapIterator[Object, Int]>*/
+}
+if (var3){
+} else {
+goto BREAK_label;
+}
+{
+var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_2); /* key on <var_2:MapIterator[Object, Int]>*/
+}
+var_m = var4;
+{
+var5 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_2); /* item on <var_2:MapIterator[Object, Int]>*/
+}
+var6 = (long)(var5)>>2;
+var_c = var6;
+{
+nitc___nitc__SeparateCompiler___compile_color_const(self, var_v, var_m, var_c); /* Direct call separate_compiler#SeparateCompiler#compile_color_const on <self:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_2); /* next on <var_2:MapIterator[Object, Int]>*/
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_2) on <var_2:MapIterator[Object, Int]> */
+RET_LABEL7:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_color_const for (self: SeparateCompiler, SeparateCompilerVisitor, Object, Int) */
+void nitc___nitc__SeparateCompiler___compile_color_const(val* self, val* p0, val* p1, long p2) {
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var_m /* var m: Object */;
+long var_color /* var color: Int */;
+val* var /* : HashSet[Object] */;
+val* var2 /* : HashSet[Object] */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : ModelBuilder */;
+val* var7 /* : ModelBuilder */;
+val* var8 /* : ToolContext */;
+val* var10 /* : ToolContext */;
+val* var11 /* : OptionBool */;
+val* var13 /* : OptionBool */;
+val* var14 /* : nullable Object */;
+val* var16 /* : nullable Object */;
+short int var17 /* : Bool */;
+val* var18 /* : String */;
+val* var19 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : NativeString */;
+val* var23 /* : String */;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+val* var27 /* : String */;
+val* var28 /* : String */;
+val* var29 /* : String */;
+val* var30 /* : String */;
+short int var31 /* : Bool */;
+val* var32 /* : ModelBuilder */;
+val* var34 /* : ModelBuilder */;
+val* var35 /* : ToolContext */;
+val* var37 /* : ToolContext */;
+val* var38 /* : OptionBool */;
+val* var40 /* : OptionBool */;
+val* var41 /* : nullable Object */;
+val* var43 /* : nullable Object */;
+short int var44 /* : Bool */;
+short int var45 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var46 /* : AbstractCompiler */;
+val* var48 /* : AbstractCompiler */;
+val* var49 /* : Platform */;
+val* var51 /* : Platform */;
+short int var52 /* : Bool */;
+short int var53 /* : Bool */;
+val* var54 /* : String */;
+val* var56 /* : NativeArray[String] */;
+static val* varonce55;
+static val* varonce57;
+val* var58 /* : String */;
+char* var59 /* : NativeString */;
+val* var60 /* : String */;
+static val* varonce61;
+val* var62 /* : String */;
+char* var63 /* : NativeString */;
+val* var64 /* : String */;
+val* var65 /* : String */;
+val* var66 /* : String */;
+val* var68 /* : NativeArray[String] */;
+static val* varonce67;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+val* var72 /* : String */;
+static val* varonce73;
+val* var74 /* : String */;
+char* var75 /* : NativeString */;
+val* var76 /* : String */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+val* var80 /* : String */;
+val* var81 /* : String */;
+val* var82 /* : String */;
+val* var83 /* : String */;
+val* var84 /* : String */;
+val* var86 /* : NativeArray[String] */;
+static val* varonce85;
+static val* varonce87;
+val* var88 /* : String */;
+char* var89 /* : NativeString */;
+val* var90 /* : String */;
+static val* varonce91;
+val* var92 /* : String */;
+char* var93 /* : NativeString */;
+val* var94 /* : String */;
+static val* varonce95;
+val* var96 /* : String */;
+char* var97 /* : NativeString */;
+val* var98 /* : String */;
+static val* varonce99;
+val* var100 /* : String */;
+char* var101 /* : NativeString */;
+val* var102 /* : String */;
+val* var103 /* : String */;
+val* var104 /* : String */;
+val* var105 /* : String */;
+val* var106 /* : String */;
+long var107 /* : Int */;
+long var109 /* : Int */;
+short int var110 /* : Bool */;
+short int var112 /* : Bool */;
+val* var113 /* : Array[String] */;
+val* var115 /* : Array[String] */;
+val* var117 /* : NativeArray[String] */;
+static val* varonce116;
+static val* varonce118;
+val* var119 /* : String */;
+char* var120 /* : NativeString */;
+val* var121 /* : String */;
+static val* varonce122;
+val* var123 /* : String */;
+char* var124 /* : NativeString */;
+val* var125 /* : String */;
+static val* varonce126;
+val* var127 /* : String */;
+char* var128 /* : NativeString */;
+val* var129 /* : String */;
+val* var130 /* : String */;
+val* var131 /* : String */;
+val* var132 /* : String */;
+val* var133 /* : HashSet[Object] */;
+val* var135 /* : HashSet[Object] */;
+var_v = p0;
+var_m = p1;
+var_color = p2;
+{
+{ /* Inline separate_compiler#SeparateCompiler#color_consts_done (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___color_consts_done].val; /* _color_consts_done on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _color_consts_done");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 308);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = core___core__HashSet___core__abstract_collection__Collection__has(var, var_m);
+}
+if (var3){
+goto RET_LABEL;
+} else {
+}
+/* <var_m:Object> isa MEntity */
+cltype = type_nitc__MEntity.color;
+idtype = type_nitc__MEntity.id;
+if(cltype >= (((long)var_m&3)?type_info[((long)var_m&3)]:var_m->type)->table_size) {
+var4 = 0;
+} else {
+var4 = (((long)var_m&3)?type_info[((long)var_m&3)]:var_m->type)->type_table[cltype] == idtype;
+}
+if (var4){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var7 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var5) on <var5:ModelBuilder> */
+var10 = var5->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var5:ModelBuilder> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_inline_coloring_numbers (var8) on <var8:ToolContext> */
+var13 = var8->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_coloring_numbers].val; /* _opt_inline_coloring_numbers on <var8:ToolContext> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_coloring_numbers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 46);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var11) on <var11:OptionBool> */
+var16 = var11->attrs[COLOR_opts__Option___value].val; /* _value on <var11:OptionBool> */
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+var17 = (short int)((long)(var14)>>2);
+if (var17){
+{
+var18 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+if (unlikely(varonce==NULL)) {
+var19 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
+} else {
+var22 = "#define ";
+var23 = core__flat___NativeString___to_s_full(var22, 8l, 8l);
+var21 = var23;
+varonce20 = var21;
+}
+((struct instance_core__NativeArray*)var19)->values[0]=var21;
+if (likely(varonce24!=NULL)) {
+var25 = varonce24;
+} else {
+var26 = " ";
+var27 = core__flat___NativeString___to_s_full(var26, 1l, 1l);
+var25 = var27;
+varonce24 = var25;
+}
+((struct instance_core__NativeArray*)var19)->values[2]=var25;
+} else {
+var19 = varonce;
+varonce = NULL;
+}
+{
+var28 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var19)->values[1]=var28;
+var29 = core__flat___Int___core__abstract_text__Object__to_s(var_color);
+((struct instance_core__NativeArray*)var19)->values[3]=var29;
+{
+var30 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
+}
+varonce = var19;
+{
+nitc___nitc__AbstractCompiler___provide_declaration(self, var18, var30); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+} else {
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var34 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var32) on <var32:ModelBuilder> */
+var37 = var32->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var32:ModelBuilder> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var35 = var37;
+RET_LABEL36:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_colors_are_symbols (var35) on <var35:ToolContext> */
+var40 = var35->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_colors_are_symbols].val; /* _opt_colors_are_symbols on <var35:ToolContext> */
+if (unlikely(var40 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_colors_are_symbols");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 35);
+fatal_exit(1);
+}
+var38 = var40;
+RET_LABEL39:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var38) on <var38:OptionBool> */
+var43 = var38->attrs[COLOR_opts__Option___value].val; /* _value on <var38:OptionBool> */
+var41 = var43;
+RET_LABEL42:(void)0;
+}
+}
+var44 = (short int)((long)(var41)>>2);
+var45 = !var44;
+var_ = var45;
+if (var45){
+var31 = var_;
+} else {
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:SeparateCompilerVisitor> */
+var48 = var_v->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:SeparateCompilerVisitor> */
+if (unlikely(var48 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
+fatal_exit(1);
+}
+var46 = var48;
+RET_LABEL47:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#target_platform (var46) on <var46:AbstractCompiler(SeparateCompiler)> */
+var51 = var46->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___target_platform].val; /* _target_platform on <var46:AbstractCompiler(SeparateCompiler)> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _target_platform");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 549);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+var52 = nitc___nitc__Platform___supports_linker_script(var49);
+}
+var53 = !var52;
+var31 = var53;
+}
+if (var31){
+{
+var54 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+if (unlikely(varonce55==NULL)) {
+var56 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce57!=NULL)) {
+var58 = varonce57;
+} else {
+var59 = "extern const int ";
+var60 = core__flat___NativeString___to_s_full(var59, 17l, 17l);
+var58 = var60;
+varonce57 = var58;
+}
+((struct instance_core__NativeArray*)var56)->values[0]=var58;
+if (likely(varonce61!=NULL)) {
+var62 = varonce61;
+} else {
+var63 = ";";
+var64 = core__flat___NativeString___to_s_full(var63, 1l, 1l);
+var62 = var64;
+varonce61 = var62;
+}
+((struct instance_core__NativeArray*)var56)->values[2]=var62;
+} else {
+var56 = varonce55;
+varonce55 = NULL;
+}
+{
+var65 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var56)->values[1]=var65;
+{
+var66 = ((val*(*)(val* self))(var56->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var56); /* native_to_s on <var56:NativeArray[String]>*/
+}
+varonce55 = var56;
+{
+nitc___nitc__AbstractCompiler___provide_declaration(self, var54, var66); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (unlikely(varonce67==NULL)) {
+var68 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
+if (likely(varonce69!=NULL)) {
+var70 = varonce69;
+} else {
+var71 = "const int ";
+var72 = core__flat___NativeString___to_s_full(var71, 10l, 10l);
+var70 = var72;
+varonce69 = var70;
+}
+((struct instance_core__NativeArray*)var68)->values[0]=var70;
+if (likely(varonce73!=NULL)) {
+var74 = varonce73;
+} else {
+var75 = " = ";
+var76 = core__flat___NativeString___to_s_full(var75, 3l, 3l);
+var74 = var76;
+varonce73 = var74;
+}
+((struct instance_core__NativeArray*)var68)->values[2]=var74;
+if (likely(varonce77!=NULL)) {
+var78 = varonce77;
+} else {
+var79 = ";";
+var80 = core__flat___NativeString___to_s_full(var79, 1l, 1l);
+var78 = var80;
+varonce77 = var78;
+}
+((struct instance_core__NativeArray*)var68)->values[4]=var78;
+} else {
+var68 = varonce67;
+varonce67 = NULL;
+}
+{
+var81 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var68)->values[1]=var81;
+var82 = core__flat___Int___core__abstract_text__Object__to_s(var_color);
+((struct instance_core__NativeArray*)var68)->values[3]=var82;
+{
+var83 = ((val*(*)(val* self))(var68->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var68); /* native_to_s on <var68:NativeArray[String]>*/
+}
+varonce67 = var68;
+{
+nitc___nitc__AbstractCompilerVisitor___add(var_v, var83); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+{
+var84 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+if (unlikely(varonce85==NULL)) {
+var86 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
+if (likely(varonce87!=NULL)) {
+var88 = varonce87;
+} else {
+var89 = "#define ";
+var90 = core__flat___NativeString___to_s_full(var89, 8l, 8l);
+var88 = var90;
+varonce87 = var88;
+}
+((struct instance_core__NativeArray*)var86)->values[0]=var88;
+if (likely(varonce91!=NULL)) {
+var92 = varonce91;
+} else {
+var93 = " ((long)&X";
+var94 = core__flat___NativeString___to_s_full(var93, 10l, 10l);
+var92 = var94;
+varonce91 = var92;
+}
+((struct instance_core__NativeArray*)var86)->values[2]=var92;
+if (likely(varonce95!=NULL)) {
+var96 = varonce95;
+} else {
+var97 = ")\nextern const void X";
+var98 = core__flat___NativeString___to_s_full(var97, 21l, 21l);
+var96 = var98;
+varonce95 = var96;
+}
+((struct instance_core__NativeArray*)var86)->values[4]=var96;
+if (likely(varonce99!=NULL)) {
+var100 = varonce99;
+} else {
+var101 = ";";
+var102 = core__flat___NativeString___to_s_full(var101, 1l, 1l);
+var100 = var102;
+varonce99 = var100;
+}
+((struct instance_core__NativeArray*)var86)->values[6]=var100;
+} else {
+var86 = varonce85;
+varonce85 = NULL;
+}
+{
+var103 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var86)->values[1]=var103;
+{
+var104 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var86)->values[3]=var104;
+{
+var105 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var86)->values[5]=var105;
+{
+var106 = ((val*(*)(val* self))(var86->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var86); /* native_to_s on <var86:NativeArray[String]>*/
+}
+varonce85 = var86;
+{
+nitc___nitc__AbstractCompiler___provide_declaration(self, var84, var106); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var109 = -1l;
+var107 = var109;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var_color,var107) on <var_color:Int> */
+var112 = var_color == var107;
+var110 = var112;
+goto RET_LABEL111;
+RET_LABEL111:(void)0;
+}
+}
+if (var110){
+var_color = 0l;
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#linker_script (self) on <self:SeparateCompiler> */
+var115 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___linker_script].val; /* _linker_script on <self:SeparateCompiler> */
+if (unlikely(var115 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _linker_script");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 588);
+fatal_exit(1);
+}
+var113 = var115;
+RET_LABEL114:(void)0;
+}
+}
+if (unlikely(varonce116==NULL)) {
+var117 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
+if (likely(varonce118!=NULL)) {
+var119 = varonce118;
+} else {
+var120 = "X";
+var121 = core__flat___NativeString___to_s_full(var120, 1l, 1l);
+var119 = var121;
+varonce118 = var119;
+}
+((struct instance_core__NativeArray*)var117)->values[0]=var119;
+if (likely(varonce122!=NULL)) {
+var123 = varonce122;
+} else {
+var124 = " = ";
+var125 = core__flat___NativeString___to_s_full(var124, 3l, 3l);
+var123 = var125;
+varonce122 = var123;
+}
+((struct instance_core__NativeArray*)var117)->values[2]=var123;
+if (likely(varonce126!=NULL)) {
+var127 = varonce126;
+} else {
+var128 = ";";
+var129 = core__flat___NativeString___to_s_full(var128, 1l, 1l);
+var127 = var129;
+varonce126 = var127;
+}
+((struct instance_core__NativeArray*)var117)->values[4]=var127;
+} else {
+var117 = varonce116;
+varonce116 = NULL;
+}
+{
+var130 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+((struct instance_core__NativeArray*)var117)->values[1]=var130;
+var131 = core__flat___Int___core__abstract_text__Object__to_s(var_color);
+((struct instance_core__NativeArray*)var117)->values[3]=var131;
+{
+var132 = ((val*(*)(val* self))(var117->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var117); /* native_to_s on <var117:NativeArray[String]>*/
+}
+varonce116 = var117;
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var113, var132); /* Direct call array#Array#add on <var113:Array[String]>*/
+}
+}
+}
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 303);
+fatal_exit(1);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#color_consts_done (self) on <self:SeparateCompiler> */
+var135 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___color_consts_done].val; /* _color_consts_done on <self:SeparateCompiler> */
+if (unlikely(var135 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _color_consts_done");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 308);
+fatal_exit(1);
+}
+var133 = var135;
+RET_LABEL134:(void)0;
+}
+}
+{
+core___core__HashSet___core__abstract_collection__SimpleCollection__add(var133, var_m); /* Direct call hash_collection#HashSet#add on <var133:HashSet[Object]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#color_consts_done for (self: SeparateCompiler): HashSet[Object] */
+val* nitc___nitc__SeparateCompiler___color_consts_done(val* self) {
+val* var /* : HashSet[Object] */;
+val* var1 /* : HashSet[Object] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___color_consts_done].val; /* _color_consts_done on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _color_consts_done");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 308);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#class_conflict_graph for (self: SeparateCompiler): POSetConflictGraph[MClass] */
+val* nitc___nitc__SeparateCompiler___class_conflict_graph(val* self) {
+val* var /* : POSetConflictGraph[MClass] */;
+val* var1 /* : POSetConflictGraph[MClass] */;
+var1 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val; /* _class_conflict_graph on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_conflict_graph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 310);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#class_conflict_graph= for (self: SeparateCompiler, POSetConflictGraph[MClass]) */
+void nitc___nitc__SeparateCompiler___class_conflict_graph_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val = p0; /* _class_conflict_graph on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#do_property_coloring for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___do_property_coloring(val* self) {
+val* var /* : nullable RapidTypeAnalysis */;
+val* var2 /* : nullable RapidTypeAnalysis */;
+val* var_rta /* var rta: nullable RapidTypeAnalysis */;
+val* var3 /* : MModule */;
+val* var5 /* : MModule */;
+val* var6 /* : POSet[MClass] */;
+val* var_mclasses /* var mclasses: POSet[MClass] */;
+val* var7 /* : POSetConflictGraph[nullable Object] */;
+val* var9 /* : HashMap[MClass, Set[PropertyLayoutElement]] */;
+val* var_mmethods /* var mmethods: HashMap[MClass, Set[PropertyLayoutElement]] */;
+val* var10 /* : HashMap[MClass, Set[MAttribute]] */;
+val* var_mattributes /* var mattributes: HashMap[MClass, Set[MAttribute]] */;
+val* var11 /* : Array[PropertyLayoutElement] */;
+val* var_dead_methods /* var dead_methods: Array[PropertyLayoutElement] */;
+val* var_ /* var : POSet[MClass] */;
+val* var12 /* : Iterator[nullable Object] */;
+val* var_13 /* var : Iterator[MClass] */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var16 /* : HashSet[PropertyLayoutElement] */;
+val* var17 /* : HashSet[MAttribute] */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+val* var23 /* : HashSet[MMethod] */;
+val* var25 /* : HashSet[MMethod] */;
+val* var_26 /* var : HashSet[MMethod] */;
+val* var27 /* : Iterator[nullable Object] */;
+val* var_28 /* var : Iterator[MMethod] */;
+short int var29 /* : Bool */;
+val* var31 /* : nullable Object */;
+val* var_m /* var m: MMethod */;
+val* var32 /* : MClassDef */;
+val* var34 /* : MClassDef */;
+val* var35 /* : MClass */;
+val* var37 /* : MClass */;
+val* var38 /* : nullable Object */;
+val* var39 /* : HashSet[MMethodDef] */;
+val* var41 /* : HashSet[MMethodDef] */;
+val* var_42 /* var : HashSet[MMethodDef] */;
+val* var43 /* : Iterator[nullable Object] */;
+val* var_44 /* var : Iterator[MMethodDef] */;
+short int var45 /* : Bool */;
+val* var47 /* : nullable Object */;
+val* var_m48 /* var m: MMethodDef */;
+val* var49 /* : MClassDef */;
+val* var51 /* : MClassDef */;
+val* var52 /* : MClass */;
+val* var54 /* : MClass */;
+val* var_mclass55 /* var mclass: MClass */;
+val* var56 /* : nullable Object */;
+val* var57 /* : MModule */;
+val* var59 /* : MModule */;
+val* var60 /* : POSetElement[MModule] */;
+val* var62 /* : POSetElement[MModule] */;
+val* var63 /* : Collection[nullable Object] */;
+val* var_64 /* var : Collection[MModule] */;
+val* var65 /* : Iterator[nullable Object] */;
+val* var_66 /* var : Iterator[MModule] */;
+short int var67 /* : Bool */;
+val* var69 /* : nullable Object */;
+val* var_m70 /* var m: MModule */;
+val* var71 /* : Array[MClassDef] */;
+val* var73 /* : Array[MClassDef] */;
+val* var_74 /* var : Array[MClassDef] */;
+val* var75 /* : IndexedIterator[nullable Object] */;
+val* var_76 /* var : IndexedIterator[MClassDef] */;
+short int var77 /* : Bool */;
+val* var79 /* : nullable Object */;
+val* var_cd /* var cd: MClassDef */;
+val* var80 /* : MClass */;
+val* var82 /* : MClass */;
+val* var_mclass83 /* var mclass: MClass */;
+val* var84 /* : Array[MProperty] */;
+val* var86 /* : Array[MProperty] */;
+val* var_87 /* var : Array[MProperty] */;
+val* var88 /* : IndexedIterator[nullable Object] */;
+val* var_89 /* var : IndexedIterator[MProperty] */;
+short int var90 /* : Bool */;
+val* var92 /* : nullable Object */;
+val* var_p /* var p: MProperty */;
+short int var93 /* : Bool */;
+int cltype;
+int idtype;
+short int var94 /* : Bool */;
+short int var95 /* : Bool */;
+val* var_other97 /* var other: nullable Object */;
+short int var98 /* : Bool */;
+short int var100 /* : Bool */;
+val* var101 /* : nullable Object */;
+val* var102 /* : HashSet[MMethod] */;
+val* var104 /* : HashSet[MMethod] */;
+short int var105 /* : Bool */;
+short int var106 /* : Bool */;
+short int var107 /* : Bool */;
+int cltype108;
+int idtype109;
+val* var110 /* : nullable Object */;
+val* var111 /* : Array[MPropDef] */;
+val* var113 /* : Array[MPropDef] */;
+val* var_114 /* var : Array[MPropDef] */;
+val* var115 /* : IndexedIterator[nullable Object] */;
+val* var_116 /* var : IndexedIterator[MPropDef] */;
+short int var117 /* : Bool */;
+val* var119 /* : nullable Object */;
+val* var_mpropdef /* var mpropdef: MPropDef */;
+short int var120 /* : Bool */;
+int cltype121;
+int idtype122;
+short int var123 /* : Bool */;
+short int var125 /* : Bool */;
+short int var127 /* : Bool */;
+short int var128 /* : Bool */;
+short int var129 /* : Bool */;
+short int var131 /* : Bool */;
+short int var133 /* : Bool */;
+val* var134 /* : nullable Object */;
+val* var135 /* : HashSet[MMethodDef] */;
+val* var137 /* : HashSet[MMethodDef] */;
+short int var138 /* : Bool */;
+short int var139 /* : Bool */;
+val* var140 /* : POSetGroupColorer[MClass, PropertyLayoutElement] */;
+val* var141 /* : POSetConflictGraph[MClass] */;
+val* var143 /* : POSetConflictGraph[MClass] */;
+val* var_meth_colorer /* var meth_colorer: POSetGroupColorer[MClass, PropertyLayoutElement] */;
+val* var144 /* : Map[Object, Int] */;
+val* var_method_colors /* var method_colors: Map[PropertyLayoutElement, Int] */;
+val* var_145 /* var : Array[PropertyLayoutElement] */;
+val* var146 /* : IndexedIterator[nullable Object] */;
+val* var_147 /* var : IndexedIterator[PropertyLayoutElement] */;
+short int var148 /* : Bool */;
+val* var150 /* : nullable Object */;
+val* var_mproperty /* var mproperty: PropertyLayoutElement */;
+val* var151 /* : AbstractCompilerVisitor */;
+long var152 /* : Int */;
+long var154 /* : Int */;
+val* var155 /* : POSetGroupColorer[MClass, MAttribute] */;
+val* var156 /* : POSetConflictGraph[MClass] */;
+val* var158 /* : POSetConflictGraph[MClass] */;
+val* var_attr_colorer /* var attr_colorer: POSetGroupColorer[MClass, MAttribute] */;
+val* var159 /* : Map[Object, Int] */;
+val* var_attr_colors /* var attr_colors: Map[MAttribute, Int] */;
+val* var160 /* : HashMap[MClass, Array[nullable MPropDef]] */;
+val* var162 /* : HashMap[MClass, Array[nullable MProperty]] */;
+val* var_164 /* var : POSet[MClass] */;
+val* var165 /* : Iterator[nullable Object] */;
+val* var_166 /* var : Iterator[MClass] */;
+short int var167 /* : Bool */;
+val* var169 /* : nullable Object */;
+val* var_mclass170 /* var mclass: MClass */;
+short int var171 /* : Bool */;
+short int var172 /* : Bool */;
+short int var174 /* : Bool */;
+short int var175 /* : Bool */;
+short int var_176 /* var : Bool */;
+short int var177 /* : Bool */;
+val* var178 /* : MClassKind */;
+val* var180 /* : MClassKind */;
+val* var181 /* : Sys */;
+val* var182 /* : MClassKind */;
+short int var183 /* : Bool */;
+short int var185 /* : Bool */;
+short int var187 /* : Bool */;
+short int var_188 /* var : Bool */;
+val* var189 /* : MClassKind */;
+val* var191 /* : MClassKind */;
+val* var192 /* : Sys */;
+val* var193 /* : MClassKind */;
+short int var194 /* : Bool */;
+short int var196 /* : Bool */;
+short int var198 /* : Bool */;
+short int var200 /* : Bool */;
+short int var201 /* : Bool */;
+short int var202 /* : Bool */;
+short int var204 /* : Bool */;
+short int var205 /* : Bool */;
+short int var_206 /* var : Bool */;
+val* var207 /* : HashSet[MClass] */;
+val* var209 /* : HashSet[MClass] */;
+short int var210 /* : Bool */;
+short int var211 /* : Bool */;
+val* var212 /* : MClassDef */;
+val* var214 /* : MClassDef */;
+val* var215 /* : MClassType */;
+val* var217 /* : MClassType */;
+val* var_mtype /* var mtype: MClassType */;
+val* var218 /* : Array[nullable Object] */;
+val* var_meth_layout /* var meth_layout: Array[nullable PropertyLayoutElement] */;
+val* var219 /* : Array[nullable MPropDef] */;
+long var220 /* : Int */;
+long var222 /* : Int */;
+val* var_meth_table /* var meth_table: Array[nullable MPropDef] */;
+val* var223 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var225 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var_226 /* var : Array[nullable PropertyLayoutElement] */;
+val* var227 /* : IndexedIterator[nullable Object] */;
+val* var_228 /* var : IndexedIterator[nullable PropertyLayoutElement] */;
+short int var229 /* : Bool */;
+val* var231 /* : nullable Object */;
+val* var_e /* var e: nullable PropertyLayoutElement */;
+short int var232 /* : Bool */;
+short int var233 /* : Bool */;
+short int var235 /* : Bool */;
+short int var237 /* : Bool */;
+short int var238 /* : Bool */;
+int cltype239;
+int idtype240;
+val* var241 /* : MModule */;
+val* var243 /* : MModule */;
+val* var244 /* : MPropDef */;
+short int var245 /* : Bool */;
+int cltype246;
+int idtype247;
+val* var248 /* : MModule */;
+val* var250 /* : MModule */;
+val* var251 /* : MPropDef */;
+val* var252 /* : Map[MClass, Array[nullable MProperty]] */;
+val* var254 /* : Map[MClass, Array[nullable MProperty]] */;
+val* var255 /* : Array[nullable Object] */;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var_rta = var;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var5 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+var6 = nitc__model___MModule___flatten_mclass_hierarchy(var3);
+}
+var_mclasses = var6;
+{
+var7 = nitc__coloring___poset__POSet___to_conflict_graph(var_mclasses);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#class_conflict_graph= (self,var7) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val = var7; /* _class_conflict_graph on <self:SeparateCompiler> */
+RET_LABEL8:(void)0;
+}
+}
+var9 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Set__nitc__PropertyLayoutElement);
+{
+core___core__HashMap___core__kernel__Object__init(var9); /* Direct call hash_collection#HashMap#init on <var9:HashMap[MClass, Set[PropertyLayoutElement]]>*/
+}
+var_mmethods = var9;
+var10 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Set__nitc__MAttribute);
+{
+core___core__HashMap___core__kernel__Object__init(var10); /* Direct call hash_collection#HashMap#init on <var10:HashMap[MClass, Set[MAttribute]]>*/
+}
+var_mattributes = var10;
+var11 = NEW_core__Array(&type_core__Array__nitc__PropertyLayoutElement);
+{
+core___core__Array___core__kernel__Object__init(var11); /* Direct call array#Array#init on <var11:Array[PropertyLayoutElement]>*/
+}
+var_dead_methods = var11;
+var_ = var_mclasses;
+{
+var12 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
+}
+var_13 = var12;
+for(;;) {
+{
+var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:Iterator[MClass]>*/
+}
+if (var14){
+} else {
+goto BREAK_label;
+}
+{
+var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:Iterator[MClass]>*/
+}
+var_mclass = var15;
+var16 = NEW_core__HashSet(&type_core__HashSet__nitc__PropertyLayoutElement);
+{
+core___core__HashSet___core__kernel__Object__init(var16); /* Direct call hash_collection#HashSet#init on <var16:HashSet[PropertyLayoutElement]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_mmethods, var_mclass, var16); /* Direct call hash_collection#HashMap#[]= on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/
+}
+var17 = NEW_core__HashSet(&type_core__HashSet__nitc__MAttribute);
+{
+core___core__HashSet___core__kernel__Object__init(var17); /* Direct call hash_collection#HashSet#init on <var17:HashSet[MAttribute]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_mattributes, var_mclass, var17); /* Direct call hash_collection#HashMap#[]= on <var_mattributes:HashMap[MClass, Set[MAttribute]]>*/
+}
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:Iterator[MClass]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:Iterator[MClass]>*/
+}
+if (var_rta == NULL) {
+var18 = 0; /* is null */
+} else {
+var18 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other = ((val*)NULL);
+{
+var21 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
+}
+var22 = !var21;
+var19 = var22;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
+}
+var18 = var19;
+}
+if (var18){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var25 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 82);
+fatal_exit(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+var_26 = var23;
+{
+var27 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_26);
+}
+var_28 = var27;
+for(;;) {
+{
+var29 = ((short int(*)(val* self))((((long)var_28&3)?class_info[((long)var_28&3)]:var_28->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_28); /* is_ok on <var_28:Iterator[MMethod]>*/
+}
+if (var29){
+} else {
+goto BREAK_label30;
+}
+{
+var31 = ((val*(*)(val* self))((((long)var_28&3)?class_info[((long)var_28&3)]:var_28->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_28); /* item on <var_28:Iterator[MMethod]>*/
+}
+var_m = var31;
+{
+{ /* Inline model#MProperty#intro_mclassdef (var_m) on <var_m:MMethod> */
+var34 = var_m->attrs[COLOR_nitc__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_m:MMethod> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1946);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var32) on <var32:MClassDef> */
+var37 = var32->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var32:MClassDef> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 576);
+fatal_exit(1);
+}
+var35 = var37;
+RET_LABEL36:(void)0;
+}
+}
+{
+var38 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mmethods, var35);
+}
+{
+((void(*)(val* self, val* p0))((((long)var38&3)?class_info[((long)var38&3)]:var38->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var38, var_m); /* add on <var38:nullable Object(Set[PropertyLayoutElement])>*/
+}
+{
+((void(*)(val* self))((((long)var_28&3)?class_info[((long)var_28&3)]:var_28->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_28); /* next on <var_28:Iterator[MMethod]>*/
+}
+}
+BREAK_label30: (void)0;
+{
+((void(*)(val* self))((((long)var_28&3)?class_info[((long)var_28&3)]:var_28->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_28); /* finish on <var_28:Iterator[MMethod]>*/
+}
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var41 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 118);
+fatal_exit(1);
+}
+var39 = var41;
+RET_LABEL40:(void)0;
+}
+}
+var_42 = var39;
+{
+var43 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_42);
+}
+var_44 = var43;
+for(;;) {
+{
+var45 = ((short int(*)(val* self))((((long)var_44&3)?class_info[((long)var_44&3)]:var_44->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_44); /* is_ok on <var_44:Iterator[MMethodDef]>*/
+}
+if (var45){
+} else {
+goto BREAK_label46;
+}
+{
+var47 = ((val*(*)(val* self))((((long)var_44&3)?class_info[((long)var_44&3)]:var_44->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_44); /* item on <var_44:Iterator[MMethodDef]>*/
+}
+var_m48 = var47;
+{
+{ /* Inline model#MPropDef#mclassdef (var_m48) on <var_m48:MMethodDef> */
+var51 = var_m48->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m48:MMethodDef> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var49) on <var49:MClassDef> */
+var54 = var49->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var49:MClassDef> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 576);
+fatal_exit(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+var_mclass55 = var52;
+{
+var56 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mmethods, var_mclass55);
+}
+{
+((void(*)(val* self, val* p0))((((long)var56&3)?class_info[((long)var56&3)]:var56->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var56, var_m48); /* add on <var56:nullable Object(Set[PropertyLayoutElement])>*/
+}
+{
+((void(*)(val* self))((((long)var_44&3)?class_info[((long)var_44&3)]:var_44->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_44); /* next on <var_44:Iterator[MMethodDef]>*/
+}
+}
+BREAK_label46: (void)0;
+{
+((void(*)(val* self))((((long)var_44&3)?class_info[((long)var_44&3)]:var_44->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_44); /* finish on <var_44:Iterator[MMethodDef]>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var59 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var59 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var57 = var59;
+RET_LABEL58:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var57) on <var57:MModule> */
+var62 = var57->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var57:MModule> */
+if (unlikely(var62 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 104);
+fatal_exit(1);
+}
+var60 = var62;
+RET_LABEL61:(void)0;
+}
+}
+{
+var63 = poset___poset__POSetElement___greaters(var60);
+}
+var_64 = var63;
+{
+var65 = ((val*(*)(val* self))((((long)var_64&3)?class_info[((long)var_64&3)]:var_64->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_64); /* iterator on <var_64:Collection[MModule]>*/
+}
+var_66 = var65;
+for(;;) {
+{
+var67 = ((short int(*)(val* self))((((long)var_66&3)?class_info[((long)var_66&3)]:var_66->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_66); /* is_ok on <var_66:Iterator[MModule]>*/
+}
+if (var67){
+} else {
+goto BREAK_label68;
+}
+{
+var69 = ((val*(*)(val* self))((((long)var_66&3)?class_info[((long)var_66&3)]:var_66->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_66); /* item on <var_66:Iterator[MModule]>*/
+}
+var_m70 = var69;
+{
+{ /* Inline model#MModule#mclassdefs (var_m70) on <var_m70:MModule> */
+var73 = var_m70->attrs[COLOR_nitc__model__MModule___mclassdefs].val; /* _mclassdefs on <var_m70:MModule> */
+if (unlikely(var73 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 141);
+fatal_exit(1);
+}
+var71 = var73;
+RET_LABEL72:(void)0;
+}
+}
+var_74 = var71;
+{
+var75 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_74);
+}
+var_76 = var75;
+for(;;) {
+{
+var77 = ((short int(*)(val* self))((((long)var_76&3)?class_info[((long)var_76&3)]:var_76->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_76); /* is_ok on <var_76:IndexedIterator[MClassDef]>*/
+}
+if (var77){
+} else {
+goto BREAK_label78;
+}
+{
+var79 = ((val*(*)(val* self))((((long)var_76&3)?class_info[((long)var_76&3)]:var_76->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_76); /* item on <var_76:IndexedIterator[MClassDef]>*/
+}
+var_cd = var79;
+{
+{ /* Inline model#MClassDef#mclass (var_cd) on <var_cd:MClassDef> */
+var82 = var_cd->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var_cd:MClassDef> */
+if (unlikely(var82 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 576);
+fatal_exit(1);
+}
+var80 = var82;
+RET_LABEL81:(void)0;
+}
+}
+var_mclass83 = var80;
+{
+{ /* Inline model#MClassDef#intro_mproperties (var_cd) on <var_cd:MClassDef> */
+var86 = var_cd->attrs[COLOR_nitc__model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var_cd:MClassDef> */
+if (unlikely(var86 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 704);
+fatal_exit(1);
+}
+var84 = var86;
+RET_LABEL85:(void)0;
+}
+}
+var_87 = var84;
+{
+var88 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_87);
+}
+var_89 = var88;
+for(;;) {
+{
+var90 = ((short int(*)(val* self))((((long)var_89&3)?class_info[((long)var_89&3)]:var_89->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_89); /* is_ok on <var_89:IndexedIterator[MProperty]>*/
+}
+if (var90){
+} else {
+goto BREAK_label91;
+}
+{
+var92 = ((val*(*)(val* self))((((long)var_89&3)?class_info[((long)var_89&3)]:var_89->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_89); /* item on <var_89:IndexedIterator[MProperty]>*/
+}
+var_p = var92;
+/* <var_p:MProperty> isa MMethod */
+cltype = type_nitc__MMethod.color;
+idtype = type_nitc__MMethod.id;
+if(cltype >= var_p->type->table_size) {
+var93 = 0;
+} else {
+var93 = var_p->type->type_table[cltype] == idtype;
+}
+if (var93){
+if (var_rta == NULL) {
+var94 = 1; /* is null */
+} else {
+var94 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other97 = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_rta,var_other97) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var100 = var_rta == var_other97;
+var98 = var100;
+goto RET_LABEL99;
+RET_LABEL99:(void)0;
+}
+}
+var95 = var98;
+goto RET_LABEL96;
+RET_LABEL96:(void)0;
+}
+var94 = var95;
+}
+if (var94){
+{
+var101 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mmethods, var_mclass83);
+}
+{
+((void(*)(val* self, val* p0))((((long)var101&3)?class_info[((long)var101&3)]:var101->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var101, var_p); /* add on <var101:nullable Object(Set[PropertyLayoutElement])>*/
+}
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methods (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var104 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_methods].val; /* _live_methods on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var104 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 82);
+fatal_exit(1);
+}
+var102 = var104;
+RET_LABEL103:(void)0;
+}
+}
+{
+var105 = core___core__HashSet___core__abstract_collection__Collection__has(var102, var_p);
+}
+var106 = !var105;
+if (var106){
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_dead_methods, var_p); /* Direct call array#Array#add on <var_dead_methods:Array[PropertyLayoutElement]>*/
+}
+} else {
+}
+}
+} else {
+/* <var_p:MProperty> isa MAttribute */
+cltype108 = type_nitc__MAttribute.color;
+idtype109 = type_nitc__MAttribute.id;
+if(cltype108 >= var_p->type->table_size) {
+var107 = 0;
+} else {
+var107 = var_p->type->type_table[cltype108] == idtype109;
+}
+if (var107){
+{
+var110 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mattributes, var_mclass83);
+}
+{
+((void(*)(val* self, val* p0))((((long)var110&3)?class_info[((long)var110&3)]:var110->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var110, var_p); /* add on <var110:nullable Object(Set[MAttribute])>*/
+}
+} else {
+}
+}
+{
+((void(*)(val* self))((((long)var_89&3)?class_info[((long)var_89&3)]:var_89->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_89); /* next on <var_89:IndexedIterator[MProperty]>*/
+}
+}
+BREAK_label91: (void)0;
+{
+((void(*)(val* self))((((long)var_89&3)?class_info[((long)var_89&3)]:var_89->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_89); /* finish on <var_89:IndexedIterator[MProperty]>*/
+}
+{
+{ /* Inline model#MClassDef#mpropdefs (var_cd) on <var_cd:MClassDef> */
+var113 = var_cd->attrs[COLOR_nitc__model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_cd:MClassDef> */
+if (unlikely(var113 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 707);
+fatal_exit(1);
+}
+var111 = var113;
+RET_LABEL112:(void)0;
+}
+}
+var_114 = var111;
+{
+var115 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_114);
+}
+var_116 = var115;
+for(;;) {
+{
+var117 = ((short int(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_116); /* is_ok on <var_116:IndexedIterator[MPropDef]>*/
+}
+if (var117){
+} else {
+goto BREAK_label118;
+}
+{
+var119 = ((val*(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_116); /* item on <var_116:IndexedIterator[MPropDef]>*/
+}
+var_mpropdef = var119;
+/* <var_mpropdef:MPropDef> isa MMethodDef */
+cltype121 = type_nitc__MMethodDef.color;
+idtype122 = type_nitc__MMethodDef.id;
+if(cltype121 >= var_mpropdef->type->table_size) {
+var120 = 0;
+} else {
+var120 = var_mpropdef->type->type_table[cltype121] == idtype122;
+}
+var123 = !var120;
+if (var123){
+goto BREAK_label124;
+} else {
+}
+{
+{ /* Inline modelize_property#MPropDef#has_supercall (var_mpropdef) on <var_mpropdef:MPropDef(MMethodDef)> */
+var127 = var_mpropdef->attrs[COLOR_nitc__modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <var_mpropdef:MPropDef(MMethodDef)> */
+var125 = var127;
+RET_LABEL126:(void)0;
+}
+}
+if (var125){
+if (var_rta == NULL) {
+var128 = 1; /* is null */
+} else {
+var128 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other97 = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_rta,var_other97) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var133 = var_rta == var_other97;
+var131 = var133;
+goto RET_LABEL132;
+RET_LABEL132:(void)0;
+}
+}
+var129 = var131;
+goto RET_LABEL130;
+RET_LABEL130:(void)0;
+}
+var128 = var129;
+}
+if (var128){
+{
+var134 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mmethods, var_mclass83);
+}
+{
+((void(*)(val* self, val* p0))((((long)var134&3)?class_info[((long)var134&3)]:var134->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var134, var_mpropdef); /* add on <var134:nullable Object(Set[PropertyLayoutElement])>*/
+}
+} else {
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_super_sends (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var137 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_super_sends].val; /* _live_super_sends on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var137 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_super_sends");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 118);
+fatal_exit(1);
+}
+var135 = var137;
+RET_LABEL136:(void)0;
+}
+}
+{
+var138 = core___core__HashSet___core__abstract_collection__Collection__has(var135, var_mpropdef);
+}
+var139 = !var138;
+if (var139){
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_dead_methods, var_mpropdef); /* Direct call array#Array#add on <var_dead_methods:Array[PropertyLayoutElement]>*/
+}
+} else {
+}
+}
+} else {
+}
+BREAK_label124: (void)0;
+{
+((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_116); /* next on <var_116:IndexedIterator[MPropDef]>*/
+}
+}
+BREAK_label118: (void)0;
+{
+((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_116); /* finish on <var_116:IndexedIterator[MPropDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_76&3)?class_info[((long)var_76&3)]:var_76->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_76); /* next on <var_76:IndexedIterator[MClassDef]>*/
+}
+}
+BREAK_label78: (void)0;
+{
+((void(*)(val* self))((((long)var_76&3)?class_info[((long)var_76&3)]:var_76->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_76); /* finish on <var_76:IndexedIterator[MClassDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_66&3)?class_info[((long)var_66&3)]:var_66->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_66); /* next on <var_66:Iterator[MModule]>*/
+}
+}
+BREAK_label68: (void)0;
+{
+((void(*)(val* self))((((long)var_66&3)?class_info[((long)var_66&3)]:var_66->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_66); /* finish on <var_66:Iterator[MModule]>*/
+}
+var140 = NEW_nitc__POSetGroupColorer(&type_nitc__POSetGroupColorer__nitc__MClass__nitc__PropertyLayoutElement);
+{
+{ /* Inline separate_compiler#SeparateCompiler#class_conflict_graph (self) on <self:SeparateCompiler> */
+var143 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val; /* _class_conflict_graph on <self:SeparateCompiler> */
+if (unlikely(var143 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_conflict_graph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 310);
+fatal_exit(1);
+}
+var141 = var143;
+RET_LABEL142:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0))(var140->class->vft[COLOR_nitc__coloring__POSetGroupColorer__graph_61d]))(var140, var141); /* graph= on <var140:POSetGroupColorer[MClass, PropertyLayoutElement]>*/
+}
+{
+((void(*)(val* self, val* p0))(var140->class->vft[COLOR_nitc__coloring__POSetGroupColorer__buckets_61d]))(var140, var_mmethods); /* buckets= on <var140:POSetGroupColorer[MClass, PropertyLayoutElement]>*/
+}
+{
+((void(*)(val* self))(var140->class->vft[COLOR_core__kernel__Object__init]))(var140); /* init on <var140:POSetGroupColorer[MClass, PropertyLayoutElement]>*/
+}
+var_meth_colorer = var140;
+{
+var144 = nitc___nitc__POSetGroupColorer___colors(var_meth_colorer);
+}
+var_method_colors = var144;
+{
+nitc___nitc__SeparateCompiler___compile_color_consts(self, var_method_colors); /* Direct call separate_compiler#SeparateCompiler#compile_color_consts on <self:SeparateCompiler>*/
+}
+var_145 = var_dead_methods;
+{
+var146 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_145);
+}
+var_147 = var146;
+for(;;) {
+{
+var148 = ((short int(*)(val* self))((((long)var_147&3)?class_info[((long)var_147&3)]:var_147->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_147); /* is_ok on <var_147:IndexedIterator[PropertyLayoutElement]>*/
+}
+if (var148){
+} else {
+goto BREAK_label149;
+}
+{
+var150 = ((val*(*)(val* self))((((long)var_147&3)?class_info[((long)var_147&3)]:var_147->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_147); /* item on <var_147:IndexedIterator[PropertyLayoutElement]>*/
+}
+var_mproperty = var150;
+{
+var151 = ((val*(*)(val* self))(self->class->vft[COLOR_nitc__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
+}
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var154 = -1l;
+var152 = var154;
+goto RET_LABEL153;
+RET_LABEL153:(void)0;
+}
+}
+{
+nitc___nitc__SeparateCompiler___compile_color_const(self, var151, var_mproperty, var152); /* Direct call separate_compiler#SeparateCompiler#compile_color_const on <self:SeparateCompiler>*/
+}
+{
+((void(*)(val* self))((((long)var_147&3)?class_info[((long)var_147&3)]:var_147->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_147); /* next on <var_147:IndexedIterator[PropertyLayoutElement]>*/
+}
+}
+BREAK_label149: (void)0;
+{
+((void(*)(val* self))((((long)var_147&3)?class_info[((long)var_147&3)]:var_147->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_147); /* finish on <var_147:IndexedIterator[PropertyLayoutElement]>*/
+}
+var155 = NEW_nitc__POSetGroupColorer(&type_nitc__POSetGroupColorer__nitc__MClass__nitc__MAttribute);
+{
+{ /* Inline separate_compiler#SeparateCompiler#class_conflict_graph (self) on <self:SeparateCompiler> */
+var158 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val; /* _class_conflict_graph on <self:SeparateCompiler> */
+if (unlikely(var158 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_conflict_graph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 310);
+fatal_exit(1);
+}
+var156 = var158;
+RET_LABEL157:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0))(var155->class->vft[COLOR_nitc__coloring__POSetGroupColorer__graph_61d]))(var155, var156); /* graph= on <var155:POSetGroupColorer[MClass, MAttribute]>*/
+}
+{
+((void(*)(val* self, val* p0))(var155->class->vft[COLOR_nitc__coloring__POSetGroupColorer__buckets_61d]))(var155, var_mattributes); /* buckets= on <var155:POSetGroupColorer[MClass, MAttribute]>*/
+}
+{
+((void(*)(val* self))(var155->class->vft[COLOR_core__kernel__Object__init]))(var155); /* init on <var155:POSetGroupColorer[MClass, MAttribute]>*/
+}
+var_attr_colorer = var155;
+{
+var159 = nitc___nitc__POSetGroupColorer___colors(var_attr_colorer);
+}
+var_attr_colors = var159;
+{
+nitc___nitc__SeparateCompiler___compile_color_consts(self, var_attr_colors); /* Direct call separate_compiler#SeparateCompiler#compile_color_consts on <self:SeparateCompiler>*/
+}
+var160 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Array__nullable__nitc__MPropDef);
+{
+core___core__HashMap___core__kernel__Object__init(var160); /* Direct call hash_collection#HashMap#init on <var160:HashMap[MClass, Array[nullable MPropDef]]>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#method_tables= (self,var160) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___method_tables].val = var160; /* _method_tables on <self:SeparateCompiler> */
+RET_LABEL161:(void)0;
+}
+}
+var162 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Array__nullable__nitc__MProperty);
+{
+core___core__HashMap___core__kernel__Object__init(var162); /* Direct call hash_collection#HashMap#init on <var162:HashMap[MClass, Array[nullable MProperty]]>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables= (self,var162) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___attr_tables].val = var162; /* _attr_tables on <self:SeparateCompiler> */
+RET_LABEL163:(void)0;
+}
+}
+var_164 = var_mclasses;
+{
+var165 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_164);
+}
+var_166 = var165;
+for(;;) {
+{
+var167 = ((short int(*)(val* self))((((long)var_166&3)?class_info[((long)var_166&3)]:var_166->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_166); /* is_ok on <var_166:Iterator[MClass]>*/
+}
+if (var167){
+} else {
+goto BREAK_label168;
+}
+{
+var169 = ((val*(*)(val* self))((((long)var_166&3)?class_info[((long)var_166&3)]:var_166->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_166); /* item on <var_166:Iterator[MClass]>*/
+}
+var_mclass170 = var169;
+{
+{ /* Inline model#MClass#has_new_factory (var_mclass170) on <var_mclass170:MClass> */
+var174 = var_mclass170->attrs[COLOR_nitc__model__MClass___has_new_factory].s; /* _has_new_factory on <var_mclass170:MClass> */
+var172 = var174;
+RET_LABEL173:(void)0;
+}
+}
+var175 = !var172;
+var_176 = var175;
+if (var175){
+{
+{ /* Inline model#MClass#kind (var_mclass170) on <var_mclass170:MClass> */
+var180 = var_mclass170->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var_mclass170:MClass> */
+if (unlikely(var180 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
+fatal_exit(1);
+}
+var178 = var180;
+RET_LABEL179:(void)0;
+}
+}
+var181 = glob_sys;
+{
+var182 = nitc__model___core__Sys___abstract_kind(var181);
+}
+{
+{ /* Inline kernel#Object#== (var178,var182) on <var178:MClassKind> */
+var_other97 = var182;
+{
+{ /* Inline kernel#Object#is_same_instance (var178,var_other97) on <var178:MClassKind> */
+var187 = var178 == var_other97;
+var185 = var187;
+goto RET_LABEL186;
+RET_LABEL186:(void)0;
+}
+}
+var183 = var185;
+goto RET_LABEL184;
+RET_LABEL184:(void)0;
+}
+}
+var_188 = var183;
+if (var183){
+var177 = var_188;
+} else {
+{
+{ /* Inline model#MClass#kind (var_mclass170) on <var_mclass170:MClass> */
+var191 = var_mclass170->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var_mclass170:MClass> */
+if (unlikely(var191 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
+fatal_exit(1);
+}
+var189 = var191;
+RET_LABEL190:(void)0;
+}
+}
+var192 = glob_sys;
+{
+var193 = nitc__model___core__Sys___interface_kind(var192);
+}
+{
+{ /* Inline kernel#Object#== (var189,var193) on <var189:MClassKind> */
+var_other97 = var193;
+{
+{ /* Inline kernel#Object#is_same_instance (var189,var_other97) on <var189:MClassKind> */
+var198 = var189 == var_other97;
+var196 = var198;
+goto RET_LABEL197;
+RET_LABEL197:(void)0;
+}
+}
+var194 = var196;
+goto RET_LABEL195;
+RET_LABEL195:(void)0;
+}
+}
+var177 = var194;
+}
+var171 = var177;
+} else {
+var171 = var_176;
+}
+if (var171){
+goto BREAK_label199;
+} else {
+}
+if (var_rta == NULL) {
+var201 = 0; /* is null */
+} else {
+var201 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other = ((val*)NULL);
+{
+var204 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
+}
+var205 = !var204;
+var202 = var205;
+goto RET_LABEL203;
+RET_LABEL203:(void)0;
+}
+var201 = var202;
+}
+var_206 = var201;
+if (var201){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var209 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var209 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 69);
+fatal_exit(1);
+}
+var207 = var209;
+RET_LABEL208:(void)0;
+}
+}
+{
+var210 = core___core__HashSet___core__abstract_collection__Collection__has(var207, var_mclass170);
+}
+var211 = !var210;
+var200 = var211;
+} else {
+var200 = var_206;
+}
+if (var200){
+goto BREAK_label199;
+} else {
+}
+{
+{ /* Inline model#MClass#intro (var_mclass170) on <var_mclass170:MClass> */
+var214 = var_mclass170->attrs[COLOR_nitc__model__MClass___intro].val; /* _intro on <var_mclass170:MClass> */
+if (unlikely(var214 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 483);
+fatal_exit(1);
+}
+var212 = var214;
+RET_LABEL213:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var212) on <var212:MClassDef> */
+var217 = var212->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var212:MClassDef> */
+if (unlikely(var217 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
+fatal_exit(1);
+}
+var215 = var217;
+RET_LABEL216:(void)0;
+}
+}
+var_mtype = var215;
+{
+var218 = nitc___nitc__POSetGroupColorer___build_layout(var_meth_colorer, var_mclass170);
+}
+var_meth_layout = var218;
+var219 = NEW_core__Array(&type_core__Array__nullable__nitc__MPropDef);
+{
+{ /* Inline array#AbstractArrayRead#length (var_meth_layout) on <var_meth_layout:Array[nullable PropertyLayoutElement]> */
+var222 = var_meth_layout->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_meth_layout:Array[nullable PropertyLayoutElement]> */
+var220 = var222;
+RET_LABEL221:(void)0;
+}
+}
+{
+core___core__Array___with_capacity(var219, var220); /* Direct call array#Array#with_capacity on <var219:Array[nullable MPropDef]>*/
+}
+var_meth_table = var219;
+{
+{ /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateCompiler> */
+var225 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
+if (unlikely(var225 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1067);
+fatal_exit(1);
+}
+var223 = var225;
+RET_LABEL224:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0, val* p1))((((long)var223&3)?class_info[((long)var223&3)]:var223->class)->vft[COLOR_core__abstract_collection__Map___91d_93d_61d]))(var223, var_mclass170, var_meth_table); /* []= on <var223:Map[MClass, Array[nullable MPropDef]]>*/
+}
+var_226 = var_meth_layout;
+{
+var227 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_226);
+}
+var_228 = var227;
+for(;;) {
+{
+var229 = ((short int(*)(val* self))((((long)var_228&3)?class_info[((long)var_228&3)]:var_228->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_228); /* is_ok on <var_228:IndexedIterator[nullable PropertyLayoutElement]>*/
+}
+if (var229){
+} else {
+goto BREAK_label230;
+}
+{
+var231 = ((val*(*)(val* self))((((long)var_228&3)?class_info[((long)var_228&3)]:var_228->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_228); /* item on <var_228:IndexedIterator[nullable PropertyLayoutElement]>*/
+}
+var_e = var231;
+if (var_e == NULL) {
+var232 = 1; /* is null */
+} else {
+var232 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_e,((val*)NULL)) on <var_e:nullable PropertyLayoutElement> */
+var_other97 = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_e,var_other97) on <var_e:nullable PropertyLayoutElement(PropertyLayoutElement)> */
+var237 = var_e == var_other97 || (var_other97 != NULL && (!((long)var_e&3)) && (!((long)var_other97&3)) && var_e->class == var_other97->class && ((var_e->class->box_kind == 3 && ((struct instance_core__Byte*)var_e)->value == ((struct instance_core__Byte*)var_other97)->value) || (var_e->class->box_kind == 5 && ((struct instance_core__Float*)var_e)->value == ((struct instance_core__Float*)var_other97)->value) || (var_e->class->box_kind == 6 && ((struct instance_core__NativeString*)var_e)->value == ((struct instance_core__NativeString*)var_other97)->value) || (var_e->class->box_kind == 7 && ((struct instance_core__Pointer*)var_e)->value == ((struct instance_core__Pointer*)var_other97)->value) || (var_e->class->box_kind == 8 && ((struct instance_core__Int8*)var_e)->value == ((struct instance_core__Int8*)var_other97)->value) || (var_e->class->box_kind == 9 && ((struct instance_core__Int16*)var_e)->value == ((struct instance_core__Int16*)var_other97)->value) || (var_e->class->box_kind == 10 && ((struct instance_core__UInt16*)var_e)->value == ((struct instance_core__UInt16*)var_other97)->value) || (var_e->class->box_kind == 11 && ((struct instance_core__Int32*)var_e)->value == ((struct instance_core__Int32*)var_other97)->value) || (var_e->class->box_kind == 12 && ((struct instance_core__UInt32*)var_e)->value == ((struct instance_core__UInt32*)var_other97)->value)));
+var235 = var237;
+goto RET_LABEL236;
+RET_LABEL236:(void)0;
+}
+}
+var233 = var235;
+goto RET_LABEL234;
+RET_LABEL234:(void)0;
+}
+var232 = var233;
+}
+if (var232){
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_meth_table, ((val*)NULL)); /* Direct call array#Array#add on <var_meth_table:Array[nullable MPropDef]>*/
+}
+} else {
+/* <var_e:nullable PropertyLayoutElement(PropertyLayoutElement)> isa MMethod */
+cltype239 = type_nitc__MMethod.color;
+idtype240 = type_nitc__MMethod.id;
+if(cltype239 >= (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->table_size) {
+var238 = 0;
+} else {
+var238 = (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->type_table[cltype239] == idtype240;
+}
+if (var238){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var243 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var243 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var241 = var243;
+RET_LABEL242:(void)0;
+}
+}
+{
+var244 = nitc___nitc__MProperty___lookup_first_definition(var_e, var241, var_mtype);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_meth_table, var244); /* Direct call array#Array#add on <var_meth_table:Array[nullable MPropDef]>*/
+}
+} else {
+/* <var_e:nullable PropertyLayoutElement(PropertyLayoutElement)> isa MMethodDef */
+cltype246 = type_nitc__MMethodDef.color;
+idtype247 = type_nitc__MMethodDef.id;
+if(cltype246 >= (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->table_size) {
+var245 = 0;
+} else {
+var245 = (((long)var_e&3)?type_info[((long)var_e&3)]:var_e->type)->type_table[cltype246] == idtype247;
+}
+if (var245){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var250 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var250 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var248 = var250;
+RET_LABEL249:(void)0;
+}
+}
+{
+var251 = nitc___nitc__MPropDef___lookup_next_definition(var_e, var248, var_mtype);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_meth_table, var251); /* Direct call array#Array#add on <var_meth_table:Array[nullable MPropDef]>*/
+}
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 409);
+fatal_exit(1);
+}
+}
+}
+{
+((void(*)(val* self))((((long)var_228&3)?class_info[((long)var_228&3)]:var_228->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_228); /* next on <var_228:IndexedIterator[nullable PropertyLayoutElement]>*/
+}
+}
+BREAK_label230: (void)0;
+{
+((void(*)(val* self))((((long)var_228&3)?class_info[((long)var_228&3)]:var_228->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_228); /* finish on <var_228:IndexedIterator[nullable PropertyLayoutElement]>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateCompiler> */
+var254 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
+if (unlikely(var254 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1068);
+fatal_exit(1);
+}
+var252 = var254;
+RET_LABEL253:(void)0;
+}
+}
+{
+var255 = nitc___nitc__POSetGroupColorer___build_layout(var_attr_colorer, var_mclass170);
+}
+{
+((void(*)(val* self, val* p0, val* p1))((((long)var252&3)?class_info[((long)var252&3)]:var252->class)->vft[COLOR_core__abstract_collection__Map___91d_93d_61d]))(var252, var_mclass170, var255); /* []= on <var252:Map[MClass, Array[nullable MProperty]]>*/
+}
+BREAK_label199: (void)0;
+{
+((void(*)(val* self))((((long)var_166&3)?class_info[((long)var_166&3)]:var_166->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_166); /* next on <var_166:Iterator[MClass]>*/
+}
+}
+BREAK_label168: (void)0;
+{
+((void(*)(val* self))((((long)var_166&3)?class_info[((long)var_166&3)]:var_166->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_166); /* finish on <var_166:Iterator[MClass]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#do_type_coloring for (self: SeparateCompiler): Collection[MType] */
+val* nitc___nitc__SeparateCompiler___do_type_coloring(val* self) {
+val* var /* : Collection[MType] */;
+val* var1 /* : nullable RapidTypeAnalysis */;
+val* var3 /* : nullable RapidTypeAnalysis */;
+val* var4 /* : HashSet[MClassType] */;
+val* var6 /* : HashSet[MClassType] */;
+val* var_live_types /* var live_types: HashSet[MClassType] */;
+val* var7 /* : nullable RapidTypeAnalysis */;
+val* var9 /* : nullable RapidTypeAnalysis */;
+val* var10 /* : HashSet[MType] */;
+val* var12 /* : HashSet[MType] */;
+val* var_live_cast_types /* var live_cast_types: HashSet[MType] */;
+val* var13 /* : HashSet[MType] */;
+val* var_res /* var res: HashSet[MType] */;
+val* var14 /* : ModelBuilder */;
+val* var16 /* : ModelBuilder */;
+val* var17 /* : ToolContext */;
+val* var19 /* : ToolContext */;
+val* var20 /* : OptionBool */;
+val* var22 /* : OptionBool */;
+val* var23 /* : nullable Object */;
+val* var25 /* : nullable Object */;
+short int var26 /* : Bool */;
+val* var27 /* : POSet[MType] */;
+val* var_poset /* var poset: POSet[MType] */;
+val* var28 /* : POSetColorer[MType] */;
+val* var_colorer /* var colorer: POSetColorer[MType] */;
+val* var30 /* : Map[Object, Int] */;
+val* var32 /* : Map[Object, Int] */;
+val* var34 /* : Map[MType, Array[nullable MType]] */;
+val* var36 /* : HashMap[MType, Int] */;
+val* var_ /* var : HashSet[MType] */;
+val* var38 /* : Iterator[nullable Object] */;
+val* var_39 /* var : Iterator[MType] */;
+short int var40 /* : Bool */;
+val* var41 /* : nullable Object */;
+val* var_x /* var x: MType */;
+val* var42 /* : Map[MType, Int] */;
+val* var44 /* : Map[MType, Int] */;
+val* var45 /* : Map[MType, Int] */;
+val* var47 /* : Map[MType, Int] */;
+long var48 /* : Int */;
+long var49 /* : Int */;
+short int var51 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var52 /* : Int */;
+val* var53 /* : nullable Object */;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var3 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+if (var1 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 423);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var1) on <var1:nullable RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var6 = var1->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var1:nullable RapidTypeAnalysis> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var_live_types = var4;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var9 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+if (var7 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 424);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (var7) on <var7:nullable RapidTypeAnalysis> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var12 = var7->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <var7:nullable RapidTypeAnalysis> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_live_cast_types = var10;
+var13 = NEW_core__HashSet(&type_core__HashSet__nitc__MType);
+{
+core___core__HashSet___core__kernel__Object__init(var13); /* Direct call hash_collection#HashSet#init on <var13:HashSet[MType]>*/
+}
+var_res = var13;
+{
+core___core__SimpleCollection___add_all(var_res, var_live_types); /* Direct call abstract_collection#SimpleCollection#add_all on <var_res:HashSet[MType]>*/
+}
+{
+core___core__SimpleCollection___add_all(var_res, var_live_cast_types); /* Direct call abstract_collection#SimpleCollection#add_all on <var_res:HashSet[MType]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var16 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var14) on <var14:ModelBuilder> */
+var19 = var14->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var14:ModelBuilder> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_type_poset (var17) on <var17:ToolContext> */
+var22 = var17->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_type_poset].val; /* _opt_type_poset on <var17:ToolContext> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_type_poset");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 62);
+fatal_exit(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var20) on <var20:OptionBool> */
+var25 = var20->attrs[COLOR_opts__Option___value].val; /* _value on <var20:OptionBool> */
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+var26 = (short int)((long)(var23)>>2);
+if (var26){
+{
+var27 = nitc___nitc__SeparateCompiler___poset_from_mtypes(self, var_live_types, var_live_cast_types);
+}
+var_poset = var27;
+var28 = NEW_nitc__POSetColorer(&type_nitc__POSetColorer__nitc__MType);
+{
+{ /* Inline kernel#Object#init (var28) on <var28:POSetColorer[MType]> */
+RET_LABEL29:(void)0;
+}
+}
+var_colorer = var28;
+{
+nitc___nitc__POSetColorer___colorize(var_colorer, var_poset); /* Direct call coloring#POSetColorer#colorize on <var_colorer:POSetColorer[MType]>*/
+}
+{
+var30 = nitc___nitc__POSetColorer___ids(var_colorer);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids= (self,var30) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val = var30; /* _type_ids on <self:SeparateCompiler> */
+RET_LABEL31:(void)0;
+}
+}
+{
+var32 = nitc___nitc__POSetColorer___colors(var_colorer);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_colors= (self,var32) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val = var32; /* _type_colors on <self:SeparateCompiler> */
+RET_LABEL33:(void)0;
+}
+}
+{
+var34 = nitc___nitc__SeparateCompiler___build_type_tables(self, var_poset);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_tables= (self,var34) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val = var34; /* _type_tables on <self:SeparateCompiler> */
+RET_LABEL35:(void)0;
+}
+}
+} else {
+{
+nitc___nitc__SeparateCompiler___compute_type_test_layouts(self, var_live_types, var_live_cast_types); /* Direct call separate_compiler#SeparateCompiler#compute_type_test_layouts on <self:SeparateCompiler>*/
+}
+var36 = NEW_core__HashMap(&type_core__HashMap__nitc__MType__core__Int);
+{
+core___core__HashMap___core__kernel__Object__init(var36); /* Direct call hash_collection#HashMap#init on <var36:HashMap[MType, Int]>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids= (self,var36) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val = var36; /* _type_ids on <self:SeparateCompiler> */
+RET_LABEL37:(void)0;
+}
+}
+var_ = var_res;
+{
+var38 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_);
+}
+var_39 = var38;
+for(;;) {
+{
+var40 = ((short int(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_39); /* is_ok on <var_39:Iterator[MType]>*/
+}
+if (var40){
+} else {
+goto BREAK_label;
+}
+{
+var41 = ((val*(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_39); /* item on <var_39:Iterator[MType]>*/
+}
+var_x = var41;
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
+var44 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
+if (unlikely(var44 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
+fatal_exit(1);
+}
+var42 = var44;
+RET_LABEL43:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
+var47 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
+fatal_exit(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+var48 = ((long(*)(val* self))((((long)var45&3)?class_info[((long)var45&3)]:var45->class)->vft[COLOR_core__abstract_collection__MapRead__length]))(var45); /* length on <var45:Map[MType, Int]>*/
+}
+{
+{ /* Inline kernel#Int#+ (var48,1l) on <var48:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var51 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var51)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var52 = var48 + 1l;
+var49 = var52;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
+}
+}
+{
+var53 = (val*)(var49<<2|1);
+((void(*)(val* self, val* p0, val* p1))((((long)var42&3)?class_info[((long)var42&3)]:var42->class)->vft[COLOR_core__abstract_collection__Map___91d_93d_61d]))(var42, var_x, var53); /* []= on <var42:Map[MType, Int]>*/
+}
+{
+((void(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_39); /* next on <var_39:Iterator[MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_39&3)?class_info[((long)var_39&3)]:var_39->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_39); /* finish on <var_39:Iterator[MType]>*/
+}
+}
+{
+nitc___nitc__SeparateCompiler___compute_resolution_tables(self, var_live_types); /* Direct call separate_compiler#SeparateCompiler#compute_resolution_tables on <self:SeparateCompiler>*/
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#poset_from_mtypes for (self: SeparateCompiler, Set[MType], Set[MType]): POSet[MType] */
+val* nitc___nitc__SeparateCompiler___poset_from_mtypes(val* self, val* p0, val* p1) {
+val* var /* : POSet[MType] */;
+val* var_mtypes /* var mtypes: Set[MType] */;
+val* var_cast_types /* var cast_types: Set[MType] */;
+val* var1 /* : POSet[MType] */;
+val* var_poset /* var poset: POSet[MType] */;
+val* var3 /* : MultiHashMap[MClass, MType] */;
+val* var_mtypes_by_class /* var mtypes_by_class: MultiHashMap[MClass, MType] */;
+val* var_ /* var : Set[MType] */;
+val* var4 /* : Iterator[nullable Object] */;
+val* var_5 /* var : Iterator[MType] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_e /* var e: MType */;
+val* var8 /* : MType */;
+short int var9 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+val* var10 /* : MClass */;
+val* var12 /* : MClass */;
+val* var_c /* var c: MClass */;
+val* var13 /* : nullable Object */;
+val* var14 /* : POSetElement[nullable Object] */;
+val* var15 /* : MultiHashMap[MClass, MType] */;
+val* var_casttypes_by_class /* var casttypes_by_class: MultiHashMap[MClass, MType] */;
+val* var_16 /* var : Set[MType] */;
+val* var17 /* : Iterator[nullable Object] */;
+val* var_18 /* var : Iterator[MType] */;
+short int var19 /* : Bool */;
+val* var21 /* : nullable Object */;
+val* var_e22 /* var e: MType */;
+val* var23 /* : MType */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+const char* var_class_name27;
+val* var28 /* : MClass */;
+val* var30 /* : MClass */;
+val* var_c31 /* var c: MClass */;
+val* var32 /* : nullable Object */;
+val* var33 /* : POSetElement[nullable Object] */;
+val* var_34 /* var : MultiHashMap[MClass, MType] */;
+val* var35 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_36 /* var : MapIterator[MClass, Array[MType]] */;
+short int var37 /* : Bool */;
+val* var39 /* : nullable Object */;
+val* var_c1 /* var c1: MClass */;
+val* var40 /* : nullable Object */;
+val* var_ts1 /* var ts1: Array[MType] */;
+val* var41 /* : MModule */;
+val* var43 /* : MModule */;
+val* var44 /* : POSetElement[MClass] */;
+val* var45 /* : Collection[nullable Object] */;
+val* var_46 /* var : Collection[MClass] */;
+val* var47 /* : Iterator[nullable Object] */;
+val* var_48 /* var : Iterator[MClass] */;
+short int var49 /* : Bool */;
+val* var51 /* : nullable Object */;
+val* var_c2 /* var c2: MClass */;
+val* var52 /* : nullable Object */;
+val* var_ts2 /* var ts2: Array[MType] */;
+val* var_53 /* var : Array[MType] */;
+val* var54 /* : IndexedIterator[nullable Object] */;
+val* var_55 /* var : IndexedIterator[MType] */;
+short int var56 /* : Bool */;
+val* var58 /* : nullable Object */;
+val* var_e59 /* var e: MType */;
+val* var_60 /* var : Array[MType] */;
+val* var61 /* : IndexedIterator[nullable Object] */;
+val* var_62 /* var : IndexedIterator[MType] */;
+short int var63 /* : Bool */;
+val* var65 /* : nullable Object */;
+val* var_o /* var o: MType */;
+short int var66 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var68 /* : Bool */;
+short int var70 /* : Bool */;
+val* var72 /* : MModule */;
+val* var74 /* : MModule */;
+short int var75 /* : Bool */;
+var_mtypes = p0;
+var_cast_types = p1;
+var1 = NEW_poset__POSet(&type_poset__POSet__nitc__MType);
+{
+{ /* Inline kernel#Object#init (var1) on <var1:POSet[MType]> */
+RET_LABEL2:(void)0;
+}
+}
+var_poset = var1;
+var3 = NEW_more_collections__MultiHashMap(&type_more_collections__MultiHashMap__nitc__MClass__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var3); /* Direct call hash_collection#HashMap#init on <var3:MultiHashMap[MClass, MType]>*/
+}
+var_mtypes_by_class = var3;
+var_ = var_mtypes;
+{
+var4 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[MType]>*/
+}
+var_5 = var4;
+for(;;) {
+{
+var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_5); /* is_ok on <var_5:Iterator[MType]>*/
+}
+if (var6){
+} else {
+goto BREAK_label;
+}
+{
+var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_5); /* item on <var_5:Iterator[MType]>*/
+}
+var_e = var7;
+{
+var8 = ((val*(*)(val* self))(var_e->class->vft[COLOR_nitc__model__MType__undecorate]))(var_e); /* undecorate on <var_e:MType>*/
+}
+/* <var8:MType> isa MClassType */
+cltype = type_nitc__MClassType.color;
+idtype = type_nitc__MClassType.id;
+if(cltype >= var8->type->table_size) {
+var9 = 0;
+} else {
+var9 = var8->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var9)) {
+var_class_name = var8 == NULL ? "null" : var8->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 462);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var8) on <var8:MType(MClassType)> */
+var12 = var8->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var8:MType(MClassType)> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_c = var10;
+{
+var13 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_mtypes_by_class, var_c);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var13, var_e); /* Direct call array#Array#add on <var13:nullable Object(Array[MType])>*/
+}
+{
+var14 = poset___poset__POSet___add_node(var_poset, var_e);
+}
+{
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_5); /* next on <var_5:Iterator[MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_5); /* finish on <var_5:Iterator[MType]>*/
+}
+var15 = NEW_more_collections__MultiHashMap(&type_more_collections__MultiHashMap__nitc__MClass__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var15); /* Direct call hash_collection#HashMap#init on <var15:MultiHashMap[MClass, MType]>*/
+}
+var_casttypes_by_class = var15;
+var_16 = var_cast_types;
+{
+var17 = ((val*(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_16); /* iterator on <var_16:Set[MType]>*/
+}
+var_18 = var17;
+for(;;) {
+{
+var19 = ((short int(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_18); /* is_ok on <var_18:Iterator[MType]>*/
+}
+if (var19){
+} else {
+goto BREAK_label20;
+}
+{
+var21 = ((val*(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_18); /* item on <var_18:Iterator[MType]>*/
+}
+var_e22 = var21;
+{
+var23 = ((val*(*)(val* self))(var_e22->class->vft[COLOR_nitc__model__MType__undecorate]))(var_e22); /* undecorate on <var_e22:MType>*/
+}
+/* <var23:MType> isa MClassType */
+cltype25 = type_nitc__MClassType.color;
+idtype26 = type_nitc__MClassType.id;
+if(cltype25 >= var23->type->table_size) {
+var24 = 0;
+} else {
+var24 = var23->type->type_table[cltype25] == idtype26;
+}
+if (unlikely(!var24)) {
+var_class_name27 = var23 == NULL ? "null" : var23->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name27);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 469);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var23) on <var23:MType(MClassType)> */
+var30 = var23->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var23:MType(MClassType)> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var28 = var30;
+RET_LABEL29:(void)0;
+}
+}
+var_c31 = var28;
+{
+var32 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_casttypes_by_class, var_c31);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var32, var_e22); /* Direct call array#Array#add on <var32:nullable Object(Array[MType])>*/
+}
+{
+var33 = poset___poset__POSet___add_node(var_poset, var_e22);
+}
+{
+((void(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_18); /* next on <var_18:Iterator[MType]>*/
+}
+}
+BREAK_label20: (void)0;
+{
+((void(*)(val* self))((((long)var_18&3)?class_info[((long)var_18&3)]:var_18->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_18); /* finish on <var_18:Iterator[MType]>*/
+}
+var_34 = var_mtypes_by_class;
+{
+var35 = core___core__HashMap___core__abstract_collection__MapRead__iterator(var_34);
+}
+var_36 = var35;
+for(;;) {
+{
+var37 = ((short int(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_36); /* is_ok on <var_36:MapIterator[MClass, Array[MType]]>*/
+}
+if (var37){
+} else {
+goto BREAK_label38;
+}
+{
+var39 = ((val*(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_36); /* key on <var_36:MapIterator[MClass, Array[MType]]>*/
+}
+var_c1 = var39;
+{
+var40 = ((val*(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_36); /* item on <var_36:MapIterator[MClass, Array[MType]]>*/
+}
+var_ts1 = var40;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var43 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var43 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var41 = var43;
+RET_LABEL42:(void)0;
+}
+}
+{
+var44 = nitc___nitc__MClass___in_hierarchy(var_c1, var41);
+}
+{
+var45 = poset___poset__POSetElement___greaters(var44);
+}
+var_46 = var45;
+{
+var47 = ((val*(*)(val* self))((((long)var_46&3)?class_info[((long)var_46&3)]:var_46->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_46); /* iterator on <var_46:Collection[MClass]>*/
+}
+var_48 = var47;
+for(;;) {
+{
+var49 = ((short int(*)(val* self))((((long)var_48&3)?class_info[((long)var_48&3)]:var_48->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_48); /* is_ok on <var_48:Iterator[MClass]>*/
+}
+if (var49){
+} else {
+goto BREAK_label50;
+}
+{
+var51 = ((val*(*)(val* self))((((long)var_48&3)?class_info[((long)var_48&3)]:var_48->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_48); /* item on <var_48:Iterator[MClass]>*/
+}
+var_c2 = var51;
+{
+var52 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_casttypes_by_class, var_c2);
+}
+var_ts2 = var52;
+var_53 = var_ts1;
+{
+var54 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_53);
+}
+var_55 = var54;
+for(;;) {
+{
+var56 = ((short int(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_55); /* is_ok on <var_55:IndexedIterator[MType]>*/
+}
+if (var56){
+} else {
+goto BREAK_label57;
+}
+{
+var58 = ((val*(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_55); /* item on <var_55:IndexedIterator[MType]>*/
+}
+var_e59 = var58;
+var_60 = var_ts2;
+{
+var61 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_60);
+}
+var_62 = var61;
+for(;;) {
+{
+var63 = ((short int(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_62); /* is_ok on <var_62:IndexedIterator[MType]>*/
+}
+if (var63){
+} else {
+goto BREAK_label64;
+}
+{
+var65 = ((val*(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_62); /* item on <var_62:IndexedIterator[MType]>*/
+}
+var_o = var65;
+{
+{ /* Inline kernel#Object#== (var_e59,var_o) on <var_e59:MType> */
+var_other = var_o;
+{
+{ /* Inline kernel#Object#is_same_instance (var_e59,var_other) on <var_e59:MType> */
+var70 = var_e59 == var_other;
+var68 = var70;
+goto RET_LABEL69;
+RET_LABEL69:(void)0;
+}
+}
+var66 = var68;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
+}
+}
+if (var66){
+goto BREAK_label71;
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var74 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var72 = var74;
+RET_LABEL73:(void)0;
+}
+}
+{
+var75 = nitc___nitc__MType___is_subtype(var_e59, var72, ((val*)NULL), var_o);
+}
+if (var75){
+{
+poset___poset__POSet___add_edge(var_poset, var_e59, var_o); /* Direct call poset#POSet#add_edge on <var_poset:POSet[MType]>*/
+}
+} else {
+}
+BREAK_label71: (void)0;
+{
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_62); /* next on <var_62:IndexedIterator[MType]>*/
+}
+}
+BREAK_label64: (void)0;
+{
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_62); /* finish on <var_62:IndexedIterator[MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_55); /* next on <var_55:IndexedIterator[MType]>*/
+}
+}
+BREAK_label57: (void)0;
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_55); /* finish on <var_55:IndexedIterator[MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_48&3)?class_info[((long)var_48&3)]:var_48->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_48); /* next on <var_48:Iterator[MClass]>*/
+}
+}
+BREAK_label50: (void)0;
+{
+((void(*)(val* self))((((long)var_48&3)?class_info[((long)var_48&3)]:var_48->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_48); /* finish on <var_48:Iterator[MClass]>*/
+}
+{
+((void(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_36); /* next on <var_36:MapIterator[MClass, Array[MType]]>*/
+}
+}
+BREAK_label38: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_36) on <var_36:MapIterator[MClass, Array[MType]]> */
+RET_LABEL76:(void)0;
+}
+}
+var = var_poset;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#build_type_tables for (self: SeparateCompiler, POSet[MType]): Map[MType, Array[nullable MType]] */
+val* nitc___nitc__SeparateCompiler___build_type_tables(val* self, val* p0) {
+val* var /* : Map[MType, Array[nullable MType]] */;
+val* var_mtypes /* var mtypes: POSet[MType] */;
+val* var1 /* : HashMap[MType, Array[nullable MType]] */;
+val* var_tables /* var tables: HashMap[MType, Array[nullable MType]] */;
+val* var_ /* var : POSet[MType] */;
+val* var2 /* : Iterator[nullable Object] */;
+val* var_3 /* var : Iterator[MType] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_mtype /* var mtype: MType */;
+val* var6 /* : Array[nullable MType] */;
+val* var_table /* var table: Array[nullable MType] */;
+val* var7 /* : POSetElement[nullable Object] */;
+val* var8 /* : Collection[nullable Object] */;
+val* var_9 /* var : Collection[MType] */;
+val* var10 /* : Iterator[nullable Object] */;
+val* var_11 /* var : Iterator[MType] */;
+short int var12 /* : Bool */;
+val* var14 /* : nullable Object */;
+val* var_sup /* var sup: MType */;
+val* var15 /* : Map[MType, Int] */;
+val* var17 /* : Map[MType, Int] */;
+val* var18 /* : nullable Object */;
+long var19 /* : Int */;
+long var_color /* var color: Int */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var26 /* : Bool */;
+long var27 /* : Int */;
+long var29 /* : Int */;
+long var_i /* var i: Int */;
+long var_30 /* var : Int */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+int cltype34;
+int idtype35;
+const char* var_class_name36;
+short int var37 /* : Bool */;
+long var39 /* : Int */;
+var_mtypes = p0;
+var1 = NEW_core__HashMap(&type_core__HashMap__nitc__MType__core__Array__nullable__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection#HashMap#init on <var1:HashMap[MType, Array[nullable MType]]>*/
+}
+var_tables = var1;
+var_ = var_mtypes;
+{
+var2 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
+}
+var_3 = var2;
+for(;;) {
+{
+var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[MType]>*/
+}
+if (var4){
+} else {
+goto BREAK_label;
+}
+{
+var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[MType]>*/
+}
+var_mtype = var5;
+var6 = NEW_core__Array(&type_core__Array__nullable__nitc__MType);
+{
+core___core__Array___core__kernel__Object__init(var6); /* Direct call array#Array#init on <var6:Array[nullable MType]>*/
+}
+var_table = var6;
+{
+var7 = poset___poset__POSet____91d_93d(var_mtypes, var_mtype);
+}
+{
+var8 = poset___poset__POSetElement___greaters(var7);
+}
+var_9 = var8;
+{
+var10 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_9); /* iterator on <var_9:Collection[MType]>*/
+}
+var_11 = var10;
+for(;;) {
+{
+var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:Iterator[MType]>*/
+}
+if (var12){
+} else {
+goto BREAK_label13;
+}
+{
+var14 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:Iterator[MType]>*/
+}
+var_sup = var14;
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_colors (self) on <self:SeparateCompiler> */
+var17 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val; /* _type_colors on <self:SeparateCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 150);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+var18 = ((val*(*)(val* self, val* p0))((((long)var15&3)?class_info[((long)var15&3)]:var15->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var15, var_sup); /* [] on <var15:Map[MType, Int]>*/
+}
+var19 = (long)(var18)>>2;
+var_color = var19;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
+var22 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#<= (var20,var_color) on <var20:Int> */
+/* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
+/* <var_color:Int> isa OTHER */
+var25 = 1; /* easy <var_color:Int> isa OTHER*/
+if (unlikely(!var25)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+fatal_exit(1);
+}
+var26 = var20 <= var_color;
+var23 = var26;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+}
+if (var23){
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
+var29 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+var_i = var27;
+var_30 = var_color;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_30) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_30:Int> isa OTHER */
+/* <var_30:Int> isa OTHER */
+var33 = 1; /* easy <var_30:Int> isa OTHER*/
+if (unlikely(!var33)) {
+var_class_name36 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name36);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var37 = var_i < var_30;
+var31 = var37;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+}
+if (var31){
+} else {
+goto BREAK_label38;
+}
+{
+core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i, ((val*)NULL)); /* Direct call array#Array#[]= on <var_table:Array[nullable MType]>*/
+}
+{
+var39 = core___core__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var39;
+}
+BREAK_label38: (void)0;
+} else {
+}
+{
+core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color, var_sup); /* Direct call array#Array#[]= on <var_table:Array[nullable MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:Iterator[MType]>*/
+}
+}
+BREAK_label13: (void)0;
+{
+((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:Iterator[MType]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_tables, var_mtype, var_table); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MType, Array[nullable MType]]>*/
+}
+{
+((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[MType]>*/
+}
+var = var_tables;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#compute_type_test_layouts for (self: SeparateCompiler, Set[MClassType], Set[MType]) */
+void nitc___nitc__SeparateCompiler___compute_type_test_layouts(val* self, val* p0, val* p1) {
+val* var_mtypes /* var mtypes: Set[MClassType] */;
+val* var_cast_types /* var cast_types: Set[MType] */;
+val* var /* : HashMap[MClass, Set[MType]] */;
+val* var_bucklets /* var bucklets: HashMap[MClass, Set[MType]] */;
+val* var_ /* var : Set[MType] */;
+val* var1 /* : Iterator[nullable Object] */;
+val* var_2 /* var : Iterator[MType] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_e /* var e: MType */;
+val* var5 /* : MType */;
+short int var6 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+val* var7 /* : MClass */;
+val* var9 /* : MClass */;
+val* var_c /* var c: MClass */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var12 /* : HashSet[MType] */;
+val* var13 /* : nullable Object */;
+val* var14 /* : POSetGroupColorer[MClass, MType] */;
+val* var15 /* : POSetConflictGraph[MClass] */;
+val* var17 /* : POSetConflictGraph[MClass] */;
+val* var_colorer /* var colorer: POSetGroupColorer[MClass, MType] */;
+val* var18 /* : Map[Object, Int] */;
+val* var20 /* : HashMap[MClass, Array[nullable MType]] */;
+val* var_layouts /* var layouts: HashMap[MClass, Array[nullable MType]] */;
+val* var21 /* : nullable RapidTypeAnalysis */;
+val* var23 /* : nullable RapidTypeAnalysis */;
+val* var24 /* : HashSet[MClass] */;
+val* var26 /* : HashSet[MClass] */;
+val* var_27 /* var : HashSet[MClass] */;
+val* var28 /* : Iterator[nullable Object] */;
+val* var_29 /* var : Iterator[MClass] */;
+short int var30 /* : Bool */;
+val* var32 /* : nullable Object */;
+val* var_c33 /* var c: MClass */;
+val* var34 /* : Array[nullable Object] */;
+val* var_35 /* var : Set[MClassType] */;
+val* var36 /* : Iterator[nullable Object] */;
+val* var_37 /* var : Iterator[MClassType] */;
+short int var38 /* : Bool */;
+val* var40 /* : nullable Object */;
+val* var_t /* var t: MClassType */;
+val* var41 /* : MClass */;
+val* var43 /* : MClass */;
+val* var_c44 /* var c: MClass */;
+val* var45 /* : nullable Object */;
+val* var_layout /* var layout: Array[nullable MType] */;
+val* var46 /* : Array[nullable MType] */;
+long var47 /* : Int */;
+long var49 /* : Int */;
+val* var_table /* var table: Array[nullable MType] */;
+val* var50 /* : Map[MType, Array[nullable MType]] */;
+val* var52 /* : Map[MType, Array[nullable MType]] */;
+val* var_53 /* var : Array[nullable MType] */;
+val* var54 /* : IndexedIterator[nullable Object] */;
+val* var_55 /* var : IndexedIterator[nullable MType] */;
+short int var56 /* : Bool */;
+val* var58 /* : nullable Object */;
+val* var_sup /* var sup: nullable MType */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var62 /* : Bool */;
+short int var64 /* : Bool */;
+val* var65 /* : MModule */;
+val* var67 /* : MModule */;
+short int var68 /* : Bool */;
+var_mtypes = p0;
+var_cast_types = p1;
+var = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Set__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var); /* Direct call hash_collection#HashMap#init on <var:HashMap[MClass, Set[MType]]>*/
+}
+var_bucklets = var;
+var_ = var_cast_types;
+{
+var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[MType]>*/
+}
+var_2 = var1;
+for(;;) {
+{
+var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[MType]>*/
+}
+if (var3){
+} else {
+goto BREAK_label;
+}
+{
+var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[MType]>*/
+}
+var_e = var4;
+{
+var5 = ((val*(*)(val* self))(var_e->class->vft[COLOR_nitc__model__MType__undecorate]))(var_e); /* undecorate on <var_e:MType>*/
+}
+/* <var5:MType> isa MClassType */
+cltype = type_nitc__MClassType.color;
+idtype = type_nitc__MClassType.id;
+if(cltype >= var5->type->table_size) {
+var6 = 0;
+} else {
+var6 = var5->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var6)) {
+var_class_name = var5 == NULL ? "null" : var5->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 514);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var5) on <var5:MType(MClassType)> */
+var9 = var5->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var5:MType(MClassType)> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+var_c = var7;
+{
+var10 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var_bucklets, var_c);
+}
+var11 = !var10;
+if (var11){
+var12 = NEW_core__HashSet(&type_core__HashSet__nitc__MType);
+{
+core___core__HashSet___core__kernel__Object__init(var12); /* Direct call hash_collection#HashSet#init on <var12:HashSet[MType]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_bucklets, var_c, var12); /* Direct call hash_collection#HashMap#[]= on <var_bucklets:HashMap[MClass, Set[MType]]>*/
+}
+} else {
+}
+{
+var13 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_bucklets, var_c);
+}
+{
+((void(*)(val* self, val* p0))((((long)var13&3)?class_info[((long)var13&3)]:var13->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var13, var_e); /* add on <var13:nullable Object(Set[MType])>*/
+}
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[MType]>*/
+}
+var14 = NEW_nitc__POSetGroupColorer(&type_nitc__POSetGroupColorer__nitc__MClass__nitc__MType);
+{
+{ /* Inline separate_compiler#SeparateCompiler#class_conflict_graph (self) on <self:SeparateCompiler> */
+var17 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___class_conflict_graph].val; /* _class_conflict_graph on <self:SeparateCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_conflict_graph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 310);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0))(var14->class->vft[COLOR_nitc__coloring__POSetGroupColorer__graph_61d]))(var14, var15); /* graph= on <var14:POSetGroupColorer[MClass, MType]>*/
+}
+{
+((void(*)(val* self, val* p0))(var14->class->vft[COLOR_nitc__coloring__POSetGroupColorer__buckets_61d]))(var14, var_bucklets); /* buckets= on <var14:POSetGroupColorer[MClass, MType]>*/
+}
+{
+((void(*)(val* self))(var14->class->vft[COLOR_core__kernel__Object__init]))(var14); /* init on <var14:POSetGroupColorer[MClass, MType]>*/
+}
+var_colorer = var14;
+{
+var18 = nitc___nitc__POSetGroupColorer___colors(var_colorer);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_colors= (self,var18) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val = var18; /* _type_colors on <self:SeparateCompiler> */
+RET_LABEL19:(void)0;
+}
+}
+var20 = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Array__nullable__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var20); /* Direct call hash_collection#HashMap#init on <var20:HashMap[MClass, Array[nullable MType]]>*/
+}
+var_layouts = var20;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var23 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+if (var21 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 526);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (var21) on <var21:nullable RapidTypeAnalysis> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 69);
+fatal_exit(1);
+}
+var26 = var21->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <var21:nullable RapidTypeAnalysis> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 69);
+fatal_exit(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+var_27 = var24;
+{
+var28 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_27);
+}
+var_29 = var28;
+for(;;) {
+{
+var30 = ((short int(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_29); /* is_ok on <var_29:Iterator[MClass]>*/
+}
+if (var30){
+} else {
+goto BREAK_label31;
+}
+{
+var32 = ((val*(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_29); /* item on <var_29:Iterator[MClass]>*/
+}
+var_c33 = var32;
+{
+var34 = nitc___nitc__POSetGroupColorer___build_layout(var_colorer, var_c33);
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_layouts, var_c33, var34); /* Direct call hash_collection#HashMap#[]= on <var_layouts:HashMap[MClass, Array[nullable MType]]>*/
+}
+{
+((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_29); /* next on <var_29:Iterator[MClass]>*/
+}
+}
+BREAK_label31: (void)0;
+{
+((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_29); /* finish on <var_29:Iterator[MClass]>*/
+}
+var_35 = var_mtypes;
+{
+var36 = ((val*(*)(val* self))((((long)var_35&3)?class_info[((long)var_35&3)]:var_35->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_35); /* iterator on <var_35:Set[MClassType]>*/
+}
+var_37 = var36;
+for(;;) {
+{
+var38 = ((short int(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_37); /* is_ok on <var_37:Iterator[MClassType]>*/
+}
+if (var38){
+} else {
+goto BREAK_label39;
+}
+{
+var40 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_37); /* item on <var_37:Iterator[MClassType]>*/
+}
+var_t = var40;
+{
+{ /* Inline model#MClassType#mclass (var_t) on <var_t:MClassType> */
+var43 = var_t->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_t:MClassType> */
+if (unlikely(var43 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var41 = var43;
+RET_LABEL42:(void)0;
+}
+}
+var_c44 = var41;
+{
+var45 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_layouts, var_c44);
+}
+var_layout = var45;
+var46 = NEW_core__Array(&type_core__Array__nullable__nitc__MType);
+{
+{ /* Inline array#AbstractArrayRead#length (var_layout) on <var_layout:Array[nullable MType]> */
+var49 = var_layout->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_layout:Array[nullable MType]> */
+var47 = var49;
+RET_LABEL48:(void)0;
+}
+}
+{
+core___core__Array___with_capacity(var46, var47); /* Direct call array#Array#with_capacity on <var46:Array[nullable MType]>*/
+}
+var_table = var46;
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
+var52 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var52 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1065);
+fatal_exit(1);
+}
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0, val* p1))((((long)var50&3)?class_info[((long)var50&3)]:var50->class)->vft[COLOR_core__abstract_collection__Map___91d_93d_61d]))(var50, var_t, var_table); /* []= on <var50:Map[MType, Array[nullable MType]]>*/
+}
+var_53 = var_layout;
+{
+var54 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_53);
+}
+var_55 = var54;
+for(;;) {
+{
+var56 = ((short int(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_55); /* is_ok on <var_55:IndexedIterator[nullable MType]>*/
+}
+if (var56){
+} else {
+goto BREAK_label57;
+}
+{
+var58 = ((val*(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_55); /* item on <var_55:IndexedIterator[nullable MType]>*/
+}
+var_sup = var58;
+if (var_sup == NULL) {
+var59 = 1; /* is null */
+} else {
+var59 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_sup,((val*)NULL)) on <var_sup:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
+var64 = var_sup == var_other;
+var62 = var64;
+goto RET_LABEL63;
+RET_LABEL63:(void)0;
+}
+}
+var60 = var62;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
+}
+var59 = var60;
+}
+if (var59){
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_table, ((val*)NULL)); /* Direct call array#Array#add on <var_table:Array[nullable MType]>*/
+}
+} else {
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var67 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var67 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var65 = var67;
+RET_LABEL66:(void)0;
+}
+}
+{
+var68 = nitc___nitc__MType___is_subtype(var_t, var65, ((val*)NULL), var_sup);
+}
+if (var68){
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_table, var_sup); /* Direct call array#Array#add on <var_table:Array[nullable MType]>*/
+}
+} else {
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_table, ((val*)NULL)); /* Direct call array#Array#add on <var_table:Array[nullable MType]>*/
+}
+}
+}
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_55); /* next on <var_55:IndexedIterator[nullable MType]>*/
+}
+}
+BREAK_label57: (void)0;
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_55); /* finish on <var_55:IndexedIterator[nullable MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_37); /* next on <var_37:Iterator[MClassType]>*/
+}
+}
+BREAK_label39: (void)0;
+{
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_37); /* finish on <var_37:Iterator[MClassType]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compute_resolution_tables for (self: SeparateCompiler, Set[MType]) */
+void nitc___nitc__SeparateCompiler___compute_resolution_tables(val* self, val* p0) {
+val* var_mtypes /* var mtypes: Set[MType] */;
+val* var /* : HashMap[MClass, Set[MType]] */;
+val* var_mtype2unresolved /* var mtype2unresolved: HashMap[MClass, Set[MType]] */;
+val* var1 /* : nullable RapidTypeAnalysis */;
+val* var3 /* : nullable RapidTypeAnalysis */;
+val* var4 /* : HashSet[MClassType] */;
+val* var6 /* : HashSet[MClassType] */;
+val* var_ /* var : HashSet[MClassType] */;
+val* var7 /* : Iterator[nullable Object] */;
+val* var_8 /* var : Iterator[MClassType] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_mtype /* var mtype: MClassType */;
+val* var11 /* : MClass */;
+val* var13 /* : MClass */;
+val* var_mclass /* var mclass: MClass */;
+val* var14 /* : nullable Object */;
+val* var_set /* var set: nullable Set[MType] */;
+short int var15 /* : Bool */;
+short int var16 /* : Bool */;
+val* var17 /* : HashSet[MType] */;
+val* var18 /* : MModule */;
+val* var20 /* : MModule */;
+val* var21 /* : Set[MClassDef] */;
+val* var_22 /* var : Set[MClassDef] */;
+val* var23 /* : Iterator[nullable Object] */;
+val* var_24 /* var : Iterator[MClassDef] */;
+short int var25 /* : Bool */;
+val* var27 /* : nullable Object */;
+val* var_cd /* var cd: MClassDef */;
+val* var28 /* : Map[MClassDef, Set[MType]] */;
+val* var30 /* : Map[MClassDef, Set[MType]] */;
+short int var31 /* : Bool */;
+val* var32 /* : Map[MClassDef, Set[MType]] */;
+val* var34 /* : Map[MClassDef, Set[MType]] */;
+val* var35 /* : nullable Object */;
+val* var36 /* : BucketsColorer[MClass, MType] */;
+val* var_colorer /* var colorer: BucketsColorer[MClass, MType] */;
+val* var38 /* : Map[Object, Int] */;
+val* var40 /* : nullable RapidTypeAnalysis */;
+val* var42 /* : nullable RapidTypeAnalysis */;
+val* var43 /* : HashSet[MClassType] */;
+val* var45 /* : HashSet[MClassType] */;
+val* var46 /* : Map[MClassType, Array[nullable MType]] */;
+val* var48 /* : HashSet[MType] */;
+val* var_all_unresolved /* var all_unresolved: HashSet[MType] */;
+val* var49 /* : Map[MClassDef, Set[MType]] */;
+val* var51 /* : Map[MClassDef, Set[MType]] */;
+val* var52 /* : Collection[nullable Object] */;
+val* var_53 /* var : RemovableCollection[Set[MType]] */;
+val* var54 /* : Iterator[nullable Object] */;
+val* var_55 /* var : Iterator[Set[MType]] */;
+short int var56 /* : Bool */;
+val* var58 /* : nullable Object */;
+val* var_t /* var t: Set[MType] */;
+val* var59 /* : HashMap[MType, Int] */;
+val* var_all_unresolved_types_colors /* var all_unresolved_types_colors: HashMap[MType, Int] */;
+val* var_60 /* var : HashSet[MType] */;
+val* var61 /* : Iterator[nullable Object] */;
+val* var_62 /* var : Iterator[MType] */;
+short int var63 /* : Bool */;
+val* var65 /* : nullable Object */;
+val* var_t66 /* var t: MType */;
+val* var67 /* : Map[MType, Int] */;
+val* var69 /* : Map[MType, Int] */;
+short int var70 /* : Bool */;
+val* var71 /* : Map[MType, Int] */;
+val* var73 /* : Map[MType, Int] */;
+val* var74 /* : nullable Object */;
+long var75 /* : Int */;
+long var77 /* : Int */;
+val* var78 /* : nullable Object */;
+var_mtypes = p0;
+var = NEW_core__HashMap(&type_core__HashMap__nitc__MClass__core__Set__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var); /* Direct call hash_collection#HashMap#init on <var:HashMap[MClass, Set[MType]]>*/
+}
+var_mtype2unresolved = var;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var3 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+if (var1 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 559);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var1) on <var1:nullable RapidTypeAnalysis> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var6 = var1->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var1:nullable RapidTypeAnalysis> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var_ = var4;
+{
+var7 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_);
+}
+var_8 = var7;
+for(;;) {
+{
+var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:Iterator[MClassType]>*/
+}
+if (var9){
+} else {
+goto BREAK_label;
+}
+{
+var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:Iterator[MClassType]>*/
+}
+var_mtype = var10;
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
+var13 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var_mclass = var11;
+{
+var14 = core___core__HashMap___core__abstract_collection__MapRead__get_or_null(var_mtype2unresolved, var_mclass);
+}
+var_set = var14;
+if (var_set == NULL) {
+var15 = 1; /* is null */
+} else {
+var15 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var16 = core___core__Set___core__kernel__Object___61d_61d(var_set, ((val*)NULL));
+var15 = var16;
+}
+if (var15){
+var17 = NEW_core__HashSet(&type_core__HashSet__nitc__MType);
+{
+core___core__HashSet___core__kernel__Object__init(var17); /* Direct call hash_collection#HashSet#init on <var17:HashSet[MType]>*/
+}
+var_set = var17;
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_mtype2unresolved, var_mclass, var_set); /* Direct call hash_collection#HashMap#[]= on <var_mtype2unresolved:HashMap[MClass, Set[MType]]>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var20 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = nitc___nitc__MClassType___MType__collect_mclassdefs(var_mtype, var18);
+}
+var_22 = var21;
+{
+var23 = ((val*(*)(val* self))((((long)var_22&3)?class_info[((long)var_22&3)]:var_22->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_22); /* iterator on <var_22:Set[MClassDef]>*/
+}
+var_24 = var23;
+for(;;) {
+{
+var25 = ((short int(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_24); /* is_ok on <var_24:Iterator[MClassDef]>*/
+}
+if (var25){
+} else {
+goto BREAK_label26;
+}
+{
+var27 = ((val*(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_24); /* item on <var_24:Iterator[MClassDef]>*/
+}
+var_cd = var27;
+{
+{ /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (self) on <self:SeparateCompiler> */
+var30 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <self:SeparateCompiler> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 147);
+fatal_exit(1);
+}
+var28 = var30;
+RET_LABEL29:(void)0;
+}
+}
+{
+var31 = ((short int(*)(val* self, val* p0))((((long)var28&3)?class_info[((long)var28&3)]:var28->class)->vft[COLOR_core__abstract_collection__MapRead__has_key]))(var28, var_cd); /* has_key on <var28:Map[MClassDef, Set[MType]]>*/
+}
+if (var31){
+{
+{ /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (self) on <self:SeparateCompiler> */
+var34 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <self:SeparateCompiler> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 147);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+var35 = ((val*(*)(val* self, val* p0))((((long)var32&3)?class_info[((long)var32&3)]:var32->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var32, var_cd); /* [] on <var32:Map[MClassDef, Set[MType]]>*/
+}
+{
+core___core__SimpleCollection___add_all(var_set, var35); /* Direct call abstract_collection#SimpleCollection#add_all on <var_set:nullable Set[MType](Set[MType])>*/
+}
+} else {
+}
+{
+((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_24); /* next on <var_24:Iterator[MClassDef]>*/
+}
+}
+BREAK_label26: (void)0;
+{
+((void(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_24); /* finish on <var_24:Iterator[MClassDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:Iterator[MClassType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:Iterator[MClassType]>*/
+}
+var36 = NEW_nitc__BucketsColorer(&type_nitc__BucketsColorer__nitc__MClass__nitc__MType);
+{
+{ /* Inline kernel#Object#init (var36) on <var36:BucketsColorer[MClass, MType]> */
+RET_LABEL37:(void)0;
+}
+}
+var_colorer = var36;
+{
+var38 = nitc___nitc__BucketsColorer___colorize(var_colorer, var_mtype2unresolved);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#opentype_colors= (self,var38) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val = var38; /* _opentype_colors on <self:SeparateCompiler> */
+RET_LABEL39:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var42 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+if (var40 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 577);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var40) on <var40:nullable RapidTypeAnalysis> */
+if (unlikely(var40 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var45 = var40->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var40:nullable RapidTypeAnalysis> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+{
+var46 = nitc___nitc__SeparateCompiler___build_resolution_tables(self, var43, var_mtype2unresolved);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables= (self,var46) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___resolution_tables].val = var46; /* _resolution_tables on <self:SeparateCompiler> */
+RET_LABEL47:(void)0;
+}
+}
+var48 = NEW_core__HashSet(&type_core__HashSet__nitc__MType);
+{
+core___core__HashSet___core__kernel__Object__init(var48); /* Direct call hash_collection#HashSet#init on <var48:HashSet[MType]>*/
+}
+var_all_unresolved = var48;
+{
+{ /* Inline separate_compiler#SeparateCompiler#live_unresolved_types (self) on <self:SeparateCompiler> */
+var51 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___live_unresolved_types].val; /* _live_unresolved_types on <self:SeparateCompiler> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_unresolved_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 147);
+fatal_exit(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+var52 = ((val*(*)(val* self))((((long)var49&3)?class_info[((long)var49&3)]:var49->class)->vft[COLOR_core__abstract_collection__MapRead__values]))(var49); /* values on <var49:Map[MClassDef, Set[MType]]>*/
+}
+var_53 = var52;
+{
+var54 = ((val*(*)(val* self))((((long)var_53&3)?class_info[((long)var_53&3)]:var_53->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_53); /* iterator on <var_53:RemovableCollection[Set[MType]]>*/
+}
+var_55 = var54;
+for(;;) {
+{
+var56 = ((short int(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_55); /* is_ok on <var_55:Iterator[Set[MType]]>*/
+}
+if (var56){
+} else {
+goto BREAK_label57;
+}
+{
+var58 = ((val*(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_55); /* item on <var_55:Iterator[Set[MType]]>*/
+}
+var_t = var58;
+{
+core___core__SimpleCollection___add_all(var_all_unresolved, var_t); /* Direct call abstract_collection#SimpleCollection#add_all on <var_all_unresolved:HashSet[MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_55); /* next on <var_55:Iterator[Set[MType]]>*/
+}
+}
+BREAK_label57: (void)0;
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_55); /* finish on <var_55:Iterator[Set[MType]]>*/
+}
+var59 = NEW_core__HashMap(&type_core__HashMap__nitc__MType__core__Int);
+{
+core___core__HashMap___core__kernel__Object__init(var59); /* Direct call hash_collection#HashMap#init on <var59:HashMap[MType, Int]>*/
+}
+var_all_unresolved_types_colors = var59;
+var_60 = var_all_unresolved;
+{
+var61 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_60);
+}
+var_62 = var61;
+for(;;) {
+{
+var63 = ((short int(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_62); /* is_ok on <var_62:Iterator[MType]>*/
+}
+if (var63){
+} else {
+goto BREAK_label64;
+}
+{
+var65 = ((val*(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_62); /* item on <var_62:Iterator[MType]>*/
+}
+var_t66 = var65;
+{
+{ /* Inline separate_compiler#SeparateCompiler#opentype_colors (self) on <self:SeparateCompiler> */
+var69 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val; /* _opentype_colors on <self:SeparateCompiler> */
+if (unlikely(var69 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opentype_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 151);
+fatal_exit(1);
+}
+var67 = var69;
+RET_LABEL68:(void)0;
+}
+}
+{
+var70 = ((short int(*)(val* self, val* p0))((((long)var67&3)?class_info[((long)var67&3)]:var67->class)->vft[COLOR_core__abstract_collection__MapRead__has_key]))(var67, var_t66); /* has_key on <var67:Map[MType, Int]>*/
+}
+if (var70){
+{
+{ /* Inline separate_compiler#SeparateCompiler#opentype_colors (self) on <self:SeparateCompiler> */
+var73 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val; /* _opentype_colors on <self:SeparateCompiler> */
+if (unlikely(var73 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opentype_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 151);
+fatal_exit(1);
+}
+var71 = var73;
+RET_LABEL72:(void)0;
+}
+}
+{
+var74 = ((val*(*)(val* self, val* p0))((((long)var71&3)?class_info[((long)var71&3)]:var71->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var71, var_t66); /* [] on <var71:Map[MType, Int]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_all_unresolved_types_colors, var_t66, var74); /* Direct call hash_collection#HashMap#[]= on <var_all_unresolved_types_colors:HashMap[MType, Int]>*/
+}
+} else {
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var77 = -1l;
+var75 = var77;
+goto RET_LABEL76;
+RET_LABEL76:(void)0;
+}
+}
+{
+var78 = (val*)(var75<<2|1);
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_all_unresolved_types_colors, var_t66, var78); /* Direct call hash_collection#HashMap#[]= on <var_all_unresolved_types_colors:HashMap[MType, Int]>*/
+}
+}
+{
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_62); /* next on <var_62:Iterator[MType]>*/
+}
+}
+BREAK_label64: (void)0;
+{
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_62); /* finish on <var_62:Iterator[MType]>*/
+}
+{
+nitc___nitc__SeparateCompiler___compile_color_consts(self, var_all_unresolved_types_colors); /* Direct call separate_compiler#SeparateCompiler#compile_color_consts on <self:SeparateCompiler>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#build_resolution_tables for (self: SeparateCompiler, Set[MClassType], Map[MClass, Set[MType]]): Map[MClassType, Array[nullable MType]] */
+val* nitc___nitc__SeparateCompiler___build_resolution_tables(val* self, val* p0, val* p1) {
+val* var /* : Map[MClassType, Array[nullable MType]] */;
+val* var_elements /* var elements: Set[MClassType] */;
+val* var_map /* var map: Map[MClass, Set[MType]] */;
+val* var1 /* : HashMap[MClassType, Array[nullable MType]] */;
+val* var_tables /* var tables: HashMap[MClassType, Array[nullable MType]] */;
+val* var_ /* var : Set[MClassType] */;
+val* var2 /* : Iterator[nullable Object] */;
+val* var_3 /* var : Iterator[MClassType] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var6 /* : MClass */;
+val* var8 /* : MClass */;
+val* var9 /* : nullable Object */;
+val* var_mtypes /* var mtypes: Set[MType] */;
+val* var10 /* : Array[nullable MType] */;
+val* var_table /* var table: Array[nullable MType] */;
+val* var_11 /* var : Set[MType] */;
+val* var12 /* : Iterator[nullable Object] */;
+val* var_13 /* var : Iterator[MType] */;
+short int var14 /* : Bool */;
+val* var16 /* : nullable Object */;
+val* var_mtype /* var mtype: MType */;
+val* var17 /* : Map[MType, Int] */;
+val* var19 /* : Map[MType, Int] */;
+val* var20 /* : nullable Object */;
+long var21 /* : Int */;
+long var_color /* var color: Int */;
+long var22 /* : Int */;
+long var24 /* : Int */;
+short int var25 /* : Bool */;
+short int var27 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var28 /* : Bool */;
+long var29 /* : Int */;
+long var31 /* : Int */;
+long var_i /* var i: Int */;
+long var_32 /* var : Int */;
+short int var33 /* : Bool */;
+short int var35 /* : Bool */;
+int cltype36;
+int idtype37;
+const char* var_class_name38;
+short int var39 /* : Bool */;
+long var41 /* : Int */;
+var_elements = p0;
+var_map = p1;
+var1 = NEW_core__HashMap(&type_core__HashMap__nitc__MClassType__core__Array__nullable__nitc__MType);
+{
+core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection#HashMap#init on <var1:HashMap[MClassType, Array[nullable MType]]>*/
+}
+var_tables = var1;
+var_ = var_elements;
+{
+var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[MClassType]>*/
+}
+var_3 = var2;
+for(;;) {
+{
+var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[MClassType]>*/
+}
+if (var4){
+} else {
+goto BREAK_label;
+}
+{
+var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[MClassType]>*/
+}
+var_mclasstype = var5;
+{
+{ /* Inline model#MClassType#mclass (var_mclasstype) on <var_mclasstype:MClassType> */
+var8 = var_mclasstype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mclasstype:MClassType> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+var9 = ((val*(*)(val* self, val* p0))((((long)var_map&3)?class_info[((long)var_map&3)]:var_map->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var_map, var6); /* [] on <var_map:Map[MClass, Set[MType]]>*/
+}
+var_mtypes = var9;
+var10 = NEW_core__Array(&type_core__Array__nullable__nitc__MType);
+{
+core___core__Array___core__kernel__Object__init(var10); /* Direct call array#Array#init on <var10:Array[nullable MType]>*/
+}
+var_table = var10;
+var_11 = var_mtypes;
+{
+var12 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_11); /* iterator on <var_11:Set[MType]>*/
+}
+var_13 = var12;
+for(;;) {
+{
+var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:Iterator[MType]>*/
+}
+if (var14){
+} else {
+goto BREAK_label15;
+}
+{
+var16 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:Iterator[MType]>*/
+}
+var_mtype = var16;
+{
+{ /* Inline separate_compiler#SeparateCompiler#opentype_colors (self) on <self:SeparateCompiler> */
+var19 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___opentype_colors].val; /* _opentype_colors on <self:SeparateCompiler> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opentype_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 151);
+fatal_exit(1);
+}
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+{
+var20 = ((val*(*)(val* self, val* p0))((((long)var17&3)?class_info[((long)var17&3)]:var17->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var17, var_mtype); /* [] on <var17:Map[MType, Int]>*/
+}
+var21 = (long)(var20)>>2;
+var_color = var21;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
+var24 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#<= (var22,var_color) on <var22:Int> */
+/* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
+/* <var_color:Int> isa OTHER */
+var27 = 1; /* easy <var_color:Int> isa OTHER*/
+if (unlikely(!var27)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
+fatal_exit(1);
+}
+var28 = var22 <= var_color;
+var25 = var28;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
+}
+}
+if (var25){
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
+var31 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+var_i = var29;
+var_32 = var_color;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_32) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_32:Int> isa OTHER */
+/* <var_32:Int> isa OTHER */
+var35 = 1; /* easy <var_32:Int> isa OTHER*/
+if (unlikely(!var35)) {
+var_class_name38 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var39 = var_i < var_32;
+var33 = var39;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
+}
+}
+if (var33){
+} else {
+goto BREAK_label40;
+}
+{
+core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i, ((val*)NULL)); /* Direct call array#Array#[]= on <var_table:Array[nullable MType]>*/
+}
+{
+var41 = core___core__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var41;
+}
+BREAK_label40: (void)0;
+} else {
+}
+{
+core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color, var_mtype); /* Direct call array#Array#[]= on <var_table:Array[nullable MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:Iterator[MType]>*/
+}
+}
+BREAK_label15: (void)0;
+{
+((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:Iterator[MType]>*/
+}
+{
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_tables, var_mclasstype, var_table); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MClassType, Array[nullable MType]]>*/
+}
+{
+((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[MClassType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[MClassType]>*/
+}
+var = var_tables;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#compile_module_to_c for (self: SeparateCompiler, MModule) */
+void nitc___nitc__SeparateCompiler___compile_module_to_c(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MModule */;
+val* var2 /* : MModule */;
+val* var_old_module /* var old_module: MModule */;
+val* var4 /* : Array[MClassDef] */;
+val* var6 /* : Array[MClassDef] */;
+val* var_ /* var : Array[MClassDef] */;
+val* var7 /* : IndexedIterator[nullable Object] */;
+val* var_8 /* var : IndexedIterator[MClassDef] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_cd /* var cd: MClassDef */;
+val* var11 /* : Array[MPropDef] */;
+val* var13 /* : Array[MPropDef] */;
+val* var_14 /* var : Array[MPropDef] */;
+val* var15 /* : IndexedIterator[nullable Object] */;
+val* var_16 /* var : IndexedIterator[MPropDef] */;
+short int var17 /* : Bool */;
+val* var19 /* : nullable Object */;
+val* var_pd /* var pd: MPropDef */;
+short int var20 /* : Bool */;
+int cltype;
+int idtype;
+short int var21 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var25 /* : MProperty */;
+val* var27 /* : MProperty */;
+short int var28 /* : Bool */;
+short int var30 /* : Bool */;
+short int var_31 /* var : Bool */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+short int var_35 /* var : Bool */;
+val* var36 /* : nullable MSignature */;
+val* var38 /* : nullable MSignature */;
+short int var39 /* : Bool */;
+short int var40 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var42 /* : Bool */;
+short int var44 /* : Bool */;
+val* var45 /* : nullable RapidTypeAnalysis */;
+val* var47 /* : nullable RapidTypeAnalysis */;
+val* var_rta /* var rta: nullable RapidTypeAnalysis */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
+val* var50 /* : ModelBuilder */;
+val* var52 /* : ModelBuilder */;
+val* var53 /* : ToolContext */;
+val* var55 /* : ToolContext */;
+val* var56 /* : OptionBool */;
+val* var58 /* : OptionBool */;
+val* var59 /* : nullable Object */;
+val* var61 /* : nullable Object */;
+short int var62 /* : Bool */;
+short int var_63 /* var : Bool */;
+short int var64 /* : Bool */;
+short int var65 /* : Bool */;
+val* var_other67 /* var other: nullable Object */;
+short int var68 /* : Bool */;
+short int var69 /* : Bool */;
+short int var_70 /* var : Bool */;
+val* var71 /* : HashSet[MMethodDef] */;
+val* var73 /* : HashSet[MMethodDef] */;
+short int var74 /* : Bool */;
+short int var75 /* : Bool */;
+val* var76 /* : SeparateRuntimeFunction */;
+val* var_r /* var r: SeparateRuntimeFunction */;
+val* var77 /* : SeparateRuntimeFunction */;
+val* var_r2 /* var r2: SeparateRuntimeFunction */;
+short int var78 /* : Bool */;
+short int var80 /* : Bool */;
+short int var81 /* : Bool */;
+val* var82 /* : ModelBuilder */;
+val* var84 /* : ModelBuilder */;
+val* var85 /* : ToolContext */;
+val* var87 /* : ToolContext */;
+val* var88 /* : OptionBool */;
+val* var90 /* : OptionBool */;
+val* var91 /* : nullable Object */;
+val* var93 /* : nullable Object */;
+short int var94 /* : Bool */;
+var_mmodule = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var_old_module = var;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_mmodule) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var_mmodule; /* _mainmodule on <self:SeparateCompiler> */
+RET_LABEL3:(void)0;
+}
+}
+{
+{ /* Inline model#MModule#mclassdefs (var_mmodule) on <var_mmodule:MModule> */
+var6 = var_mmodule->attrs[COLOR_nitc__model__MModule___mclassdefs].val; /* _mclassdefs on <var_mmodule:MModule> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 141);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var_ = var4;
+{
+var7 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
+}
+var_8 = var7;
+for(;;) {
+{
+var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:IndexedIterator[MClassDef]>*/
+}
+if (var9){
+} else {
+goto BREAK_label;
+}
+{
+var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:IndexedIterator[MClassDef]>*/
+}
+var_cd = var10;
+{
+{ /* Inline model#MClassDef#mpropdefs (var_cd) on <var_cd:MClassDef> */
+var13 = var_cd->attrs[COLOR_nitc__model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_cd:MClassDef> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 707);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var_14 = var11;
+{
+var15 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_14);
+}
+var_16 = var15;
+for(;;) {
+{
+var17 = ((short int(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_16); /* is_ok on <var_16:IndexedIterator[MPropDef]>*/
+}
+if (var17){
+} else {
+goto BREAK_label18;
+}
+{
+var19 = ((val*(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_16); /* item on <var_16:IndexedIterator[MPropDef]>*/
+}
+var_pd = var19;
+/* <var_pd:MPropDef> isa MMethodDef */
+cltype = type_nitc__MMethodDef.color;
+idtype = type_nitc__MMethodDef.id;
+if(cltype >= var_pd->type->table_size) {
+var20 = 0;
+} else {
+var20 = var_pd->type->type_table[cltype] == idtype;
+}
+var21 = !var20;
+if (var21){
+goto BREAK_label22;
+} else {
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_pd) on <var_pd:MPropDef(MMethodDef)> */
+var27 = var_pd->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_pd:MPropDef(MMethodDef)> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
+fatal_exit(1);
+}
+var25 = var27;
+RET_LABEL26:(void)0;
+}
+}
+{
+{ /* Inline model_base#MEntity#is_broken (var25) on <var25:MProperty(MMethod)> */
+var30 = var25->attrs[COLOR_nitc__model_base__MEntity___is_broken].s; /* _is_broken on <var25:MProperty(MMethod)> */
+var28 = var30;
+RET_LABEL29:(void)0;
+}
+}
+var_31 = var28;
+if (var28){
+var24 = var_31;
+} else {
+{
+{ /* Inline model_base#MEntity#is_broken (var_pd) on <var_pd:MPropDef(MMethodDef)> */
+var34 = var_pd->attrs[COLOR_nitc__model_base__MEntity___is_broken].s; /* _is_broken on <var_pd:MPropDef(MMethodDef)> */
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+var24 = var32;
+}
+var_35 = var24;
+if (var24){
+var23 = var_35;
+} else {
+{
+{ /* Inline model#MMethodDef#msignature (var_pd) on <var_pd:MPropDef(MMethodDef)> */
+var38 = var_pd->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_pd:MPropDef(MMethodDef)> */
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+if (var36 == NULL) {
+var39 = 1; /* is null */
+} else {
+var39 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var36,((val*)NULL)) on <var36:nullable MSignature> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var36,var_other) on <var36:nullable MSignature(MSignature)> */
+var44 = var36 == var_other;
+var42 = var44;
+goto RET_LABEL43;
+RET_LABEL43:(void)0;
+}
+}
+var40 = var42;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
+}
+var39 = var40;
+}
+var23 = var39;
+}
+if (var23){
+goto BREAK_label22;
+} else {
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var47 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+var_rta = var45;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var52 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var52 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var50) on <var50:ModelBuilder> */
+var55 = var50->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var50:ModelBuilder> */
+if (unlikely(var55 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var53 = var55;
+RET_LABEL54:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_skip_dead_methods (var53) on <var53:ToolContext> */
+var58 = var53->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_skip_dead_methods].val; /* _opt_skip_dead_methods on <var53:ToolContext> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_skip_dead_methods");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 54);
+fatal_exit(1);
+}
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var56) on <var56:OptionBool> */
+var61 = var56->attrs[COLOR_opts__Option___value].val; /* _value on <var56:OptionBool> */
+var59 = var61;
+RET_LABEL60:(void)0;
+}
+}
+var62 = (short int)((long)(var59)>>2);
+var_63 = var62;
+if (var62){
+if (var_rta == NULL) {
+var64 = 0; /* is null */
+} else {
+var64 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other67 = ((val*)NULL);
+{
+var68 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other67); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
+}
+var69 = !var68;
+var65 = var69;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
+}
+var64 = var65;
+}
+var49 = var64;
+} else {
+var49 = var_63;
+}
+var_70 = var49;
+if (var49){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var73 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var73 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 79);
+fatal_exit(1);
+}
+var71 = var73;
+RET_LABEL72:(void)0;
+}
+}
+{
+var74 = core___core__HashSet___core__abstract_collection__Collection__has(var71, var_pd);
+}
+var75 = !var74;
+var48 = var75;
+} else {
+var48 = var_70;
+}
+if (var48){
+goto BREAK_label22;
+} else {
+}
+{
+var76 = nitc__separate_compiler___MMethodDef___separate_runtime_function(var_pd);
+}
+var_r = var76;
+{
+nitc___nitc__SeparateRuntimeFunction___nitc__abstract_compiler__AbstractRuntimeFunction__compile_to_c(var_r, self); /* Direct call separate_compiler#SeparateRuntimeFunction#compile_to_c on <var_r:SeparateRuntimeFunction>*/
+}
+{
+var77 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var_pd);
+}
+var_r2 = var77;
+{
+{ /* Inline kernel#Object#!= (var_r2,var_r) on <var_r2:SeparateRuntimeFunction> */
+var_other67 = var_r;
+{
+var80 = ((short int(*)(val* self, val* p0))(var_r2->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_r2, var_other67); /* == on <var_r2:SeparateRuntimeFunction>*/
+}
+var81 = !var80;
+var78 = var81;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+if (var78){
+{
+nitc___nitc__SeparateRuntimeFunction___nitc__abstract_compiler__AbstractRuntimeFunction__compile_to_c(var_r2, self); /* Direct call separate_compiler#SeparateRuntimeFunction#compile_to_c on <var_r2:SeparateRuntimeFunction>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var84 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var82) on <var82:ModelBuilder> */
+var87 = var82->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var82:ModelBuilder> */
+if (unlikely(var87 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_trampoline_call (var85) on <var85:ToolContext> */
+var90 = var85->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_trampoline_call].val; /* _opt_trampoline_call on <var85:ToolContext> */
+if (unlikely(var90 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_trampoline_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 37);
+fatal_exit(1);
+}
+var88 = var90;
+RET_LABEL89:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var88) on <var88:OptionBool> */
+var93 = var88->attrs[COLOR_opts__Option___value].val; /* _value on <var88:OptionBool> */
+var91 = var93;
+RET_LABEL92:(void)0;
+}
+}
+var94 = (short int)((long)(var91)>>2);
+if (var94){
+{
+nitc___nitc__SeparateRuntimeFunction___compile_trampolines(var_r2, self); /* Direct call separate_compiler#SeparateRuntimeFunction#compile_trampolines on <var_r2:SeparateRuntimeFunction>*/
+}
+} else {
+}
+BREAK_label22: (void)0;
+{
+((void(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_16); /* next on <var_16:IndexedIterator[MPropDef]>*/
+}
+}
+BREAK_label18: (void)0;
+{
+((void(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_16); /* finish on <var_16:IndexedIterator[MPropDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:IndexedIterator[MClassDef]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:IndexedIterator[MClassDef]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_old_module) on <self:SeparateCompiler> */
+self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var_old_module; /* _mainmodule on <self:SeparateCompiler> */
+RET_LABEL95:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#link_mmethods for (self: SeparateCompiler) */
+void nitc___nitc__SeparateCompiler___link_mmethods(val* self) {
+short int var /* : Bool */;
+val* var1 /* : ModelBuilder */;
+val* var3 /* : ModelBuilder */;
+val* var4 /* : ToolContext */;
+val* var6 /* : ToolContext */;
+val* var7 /* : OptionBool */;
+val* var9 /* : OptionBool */;
+val* var10 /* : nullable Object */;
+val* var12 /* : nullable Object */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var15 /* : ModelBuilder */;
+val* var17 /* : ModelBuilder */;
+val* var18 /* : ToolContext */;
+val* var20 /* : ToolContext */;
+val* var21 /* : OptionBool */;
+val* var23 /* : OptionBool */;
+val* var24 /* : nullable Object */;
+val* var26 /* : nullable Object */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+val* var29 /* : MModule */;
+val* var31 /* : MModule */;
+val* var32 /* : POSetElement[MModule] */;
+val* var34 /* : POSetElement[MModule] */;
+val* var35 /* : Collection[nullable Object] */;
+val* var_36 /* var : Collection[MModule] */;
+val* var37 /* : Iterator[nullable Object] */;
+val* var_38 /* var : Iterator[MModule] */;
+short int var39 /* : Bool */;
+val* var40 /* : nullable Object */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var41 /* : Array[MClassDef] */;
+val* var43 /* : Array[MClassDef] */;
+val* var_44 /* var : Array[MClassDef] */;
+val* var45 /* : IndexedIterator[nullable Object] */;
+val* var_46 /* var : IndexedIterator[MClassDef] */;
+short int var47 /* : Bool */;
+val* var49 /* : nullable Object */;
+val* var_cd /* var cd: MClassDef */;
+val* var50 /* : Array[MProperty] */;
+val* var52 /* : Array[MProperty] */;
+val* var_53 /* var : Array[MProperty] */;
+val* var54 /* : IndexedIterator[nullable Object] */;
+val* var_55 /* var : IndexedIterator[MProperty] */;
+short int var56 /* : Bool */;
+val* var58 /* : nullable Object */;
+val* var_m /* var m: MProperty */;
+short int var59 /* : Bool */;
+int cltype;
+int idtype;
+short int var60 /* : Bool */;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var3 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var1) on <var1:ModelBuilder> */
+var6 = var1->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var1:ModelBuilder> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_substitute_monomorph (var4) on <var4:ToolContext> */
+var9 = var4->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_substitute_monomorph].val; /* _opt_substitute_monomorph on <var4:ToolContext> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_substitute_monomorph");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 41);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var7) on <var7:OptionBool> */
+var12 = var7->attrs[COLOR_opts__Option___value].val; /* _value on <var7:OptionBool> */
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var13 = (short int)((long)(var10)>>2);
+var14 = !var13;
+var_ = var14;
+if (var14){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var17 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var15) on <var15:ModelBuilder> */
+var20 = var15->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var15:ModelBuilder> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_guard_call (var18) on <var18:ToolContext> */
+var23 = var18->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_guard_call].val; /* _opt_guard_call on <var18:ToolContext> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_guard_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 39);
+fatal_exit(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var21) on <var21:OptionBool> */
+var26 = var21->attrs[COLOR_opts__Option___value].val; /* _value on <var21:OptionBool> */
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+var27 = (short int)((long)(var24)>>2);
+var28 = !var27;
+var = var28;
+} else {
+var = var_;
+}
+if (var){
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var31 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
+fatal_exit(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var29) on <var29:MModule> */
+var34 = var29->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var29:MModule> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 104);
+fatal_exit(1);
+}
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+{
+var35 = poset___poset__POSetElement___greaters(var32);
+}
+var_36 = var35;
+{
+var37 = ((val*(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_36); /* iterator on <var_36:Collection[MModule]>*/
+}
+var_38 = var37;
+for(;;) {
+{
+var39 = ((short int(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_38); /* is_ok on <var_38:Iterator[MModule]>*/
+}
+if (var39){
+} else {
+goto BREAK_label;
+}
+{
+var40 = ((val*(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_38); /* item on <var_38:Iterator[MModule]>*/
+}
+var_mmodule = var40;
+{
+{ /* Inline model#MModule#mclassdefs (var_mmodule) on <var_mmodule:MModule> */
+var43 = var_mmodule->attrs[COLOR_nitc__model__MModule___mclassdefs].val; /* _mclassdefs on <var_mmodule:MModule> */
+if (unlikely(var43 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 141);
+fatal_exit(1);
+}
+var41 = var43;
+RET_LABEL42:(void)0;
+}
+}
+var_44 = var41;
+{
+var45 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_44);
+}
+var_46 = var45;
+for(;;) {
+{
+var47 = ((short int(*)(val* self))((((long)var_46&3)?class_info[((long)var_46&3)]:var_46->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_46); /* is_ok on <var_46:IndexedIterator[MClassDef]>*/
+}
+if (var47){
+} else {
+goto BREAK_label48;
+}
+{
+var49 = ((val*(*)(val* self))((((long)var_46&3)?class_info[((long)var_46&3)]:var_46->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_46); /* item on <var_46:IndexedIterator[MClassDef]>*/
+}
+var_cd = var49;
+{
+{ /* Inline model#MClassDef#intro_mproperties (var_cd) on <var_cd:MClassDef> */
+var52 = var_cd->attrs[COLOR_nitc__model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var_cd:MClassDef> */
+if (unlikely(var52 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 704);
+fatal_exit(1);
+}
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+var_53 = var50;
+{
+var54 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_53);
+}
+var_55 = var54;
+for(;;) {
+{
+var56 = ((short int(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_55); /* is_ok on <var_55:IndexedIterator[MProperty]>*/
+}
+if (var56){
+} else {
+goto BREAK_label57;
+}
+{
+var58 = ((val*(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_55); /* item on <var_55:IndexedIterator[MProperty]>*/
+}
+var_m = var58;
+/* <var_m:MProperty> isa MMethod */
+cltype = type_nitc__MMethod.color;
+idtype = type_nitc__MMethod.id;
+if(cltype >= var_m->type->table_size) {
+var59 = 0;
+} else {
+var59 = var_m->type->type_table[cltype] == idtype;
+}
+var60 = !var59;
+if (var60){
+goto BREAK_label61;
+} else {
+}
+{
+nitc___nitc__SeparateCompiler___link_mmethod(self, var_m); /* Direct call separate_compiler#SeparateCompiler#link_mmethod on <self:SeparateCompiler>*/
+}
+BREAK_label61: (void)0;
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_55); /* next on <var_55:IndexedIterator[MProperty]>*/
+}
+}
+BREAK_label57: (void)0;
+{
+((void(*)(val* self))((((long)var_55&3)?class_info[((long)var_55&3)]:var_55->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_55); /* finish on <var_55:IndexedIterator[MProperty]>*/
+}
+{
+((void(*)(val* self))((((long)var_46&3)?class_info[((long)var_46&3)]:var_46->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_46); /* next on <var_46:IndexedIterator[MClassDef]>*/
+}
+}
+BREAK_label48: (void)0;
+{
+((void(*)(val* self))((((long)var_46&3)?class_info[((long)var_46&3)]:var_46->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_46); /* finish on <var_46:IndexedIterator[MClassDef]>*/
+}
+{
+((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_38); /* next on <var_38:Iterator[MModule]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_38); /* finish on <var_38:Iterator[MModule]>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#link_mmethod for (self: SeparateCompiler, MMethod) */
+void nitc___nitc__SeparateCompiler___link_mmethod(val* self, val* p0) {
+val* var_m /* var m: MMethod */;
+static val* varonce;
+val* var /* : String */;
+char* var1 /* : NativeString */;
+val* var2 /* : String */;
+val* var3 /* : String */;
+val* var4 /* : String */;
+val* var_n2 /* var n2: String */;
+val* var5 /* : nullable MMethodDef */;
+val* var_md /* var md: nullable MMethodDef */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : Array[String] */;
+val* var13 /* : Array[String] */;
+val* var15 /* : NativeArray[String] */;
+static val* varonce14;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+val* var19 /* : String */;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : NativeString */;
+val* var23 /* : String */;
+val* var24 /* : SeparateRuntimeFunction */;
+val* var25 /* : String */;
+val* var26 /* : String */;
+val* var27 /* : ModelBuilder */;
+val* var29 /* : ModelBuilder */;
+val* var30 /* : ToolContext */;
+val* var32 /* : ToolContext */;
+val* var33 /* : OptionBool */;
+val* var35 /* : OptionBool */;
+val* var36 /* : nullable Object */;
+val* var38 /* : nullable Object */;
+short int var39 /* : Bool */;
+val* var40 /* : MPropDef */;
+val* var42 /* : MPropDef */;
+val* var43 /* : SeparateRuntimeFunction */;
+val* var_r /* var r: SeparateRuntimeFunction */;
+val* var45 /* : NativeArray[String] */;
+static val* varonce44;
+static val* varonce46;
+val* var47 /* : String */;
+char* var48 /* : NativeString */;
+val* var49 /* : String */;
+static val* varonce50;
+val* var51 /* : String */;
+char* var52 /* : NativeString */;
+val* var53 /* : String */;
+val* var54 /* : String */;
+val* var55 /* : String */;
+val* var56 /* : String */;
+var_m = p0;
+if (likely(varonce!=NULL)) {
+var = varonce;
+} else {
+var1 = "CALL_";
+var2 = core__flat___NativeString___to_s_full(var1, 5l, 5l);
+var = var2;
+varonce = var;
+}
+{
+var3 = nitc__separate_compiler___MEntity___const_color(var_m);
+}
+{
+var4 = ((val*(*)(val* self, val* p0))(var->class->vft[COLOR_core__abstract_text__String___43d]))(var, var3); /* + on <var:String>*/
+}
+var_n2 = var4;
+{
+var5 = nitc___nitc__SeparateCompiler___is_monomorphic(self, var_m);
+}
+var_md = var5;
+if (var_md == NULL) {
+var6 = 0; /* is null */
+} else {
+var6 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_md,((val*)NULL)) on <var_md:nullable MMethodDef> */
+var_other = ((val*)NULL);
+{
+var9 = ((short int(*)(val* self, val* p0))(var_md->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_md, var_other); /* == on <var_md:nullable MMethodDef(MMethodDef)>*/
+}
+var10 = !var9;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+var6 = var7;
+}
+if (var6){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#linker_script (self) on <self:SeparateCompiler> */
+var13 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___linker_script].val; /* _linker_script on <self:SeparateCompiler> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _linker_script");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 588);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+if (unlikely(varonce14==NULL)) {
+var15 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
+if (likely(varonce16!=NULL)) {
+var17 = varonce16;
+} else {
+var18 = " = ";
+var19 = core__flat___NativeString___to_s_full(var18, 3l, 3l);
+var17 = var19;
+varonce16 = var17;
+}
+((struct instance_core__NativeArray*)var15)->values[1]=var17;
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
+} else {
+var22 = ";";
+var23 = core__flat___NativeString___to_s_full(var22, 1l, 1l);
+var21 = var23;
+varonce20 = var21;
+}
+((struct instance_core__NativeArray*)var15)->values[3]=var21;
+} else {
+var15 = varonce14;
+varonce14 = NULL;
+}
+((struct instance_core__NativeArray*)var15)->values[0]=var_n2;
+{
+var24 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var_md);
+}
+{
+var25 = nitc___nitc__AbstractRuntimeFunction___c_name(var24);
+}
+((struct instance_core__NativeArray*)var15)->values[2]=var25;
+{
+var26 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
+}
+varonce14 = var15;
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var11, var26); /* Direct call array#Array#add on <var11:Array[String]>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var29 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var27) on <var27:ModelBuilder> */
+var32 = var27->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var27:ModelBuilder> */
+if (unlikely(var32 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var30 = var32;
+RET_LABEL31:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_guard_call (var30) on <var30:ToolContext> */
+var35 = var30->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_guard_call].val; /* _opt_guard_call on <var30:ToolContext> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_guard_call");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 39);
+fatal_exit(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var33) on <var33:OptionBool> */
+var38 = var33->attrs[COLOR_opts__Option___value].val; /* _value on <var33:OptionBool> */
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+var39 = (short int)((long)(var36)>>2);
+if (var39){
+{
+{ /* Inline model#MProperty#intro (var_m) on <var_m:MMethod> */
+var42 = var_m->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_m:MMethod> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
+fatal_exit(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+var43 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var40);
+}
+var_r = var43;
+if (unlikely(varonce44==NULL)) {
+var45 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
+if (likely(varonce46!=NULL)) {
+var47 = varonce46;
+} else {
+var48 = " ";
+var49 = core__flat___NativeString___to_s_full(var48, 1l, 1l);
+var47 = var49;
+varonce46 = var47;
+}
+((struct instance_core__NativeArray*)var45)->values[1]=var47;
+if (likely(varonce50!=NULL)) {
+var51 = varonce50;
+} else {
+var52 = " __attribute__((weak));";
+var53 = core__flat___NativeString___to_s_full(var52, 23l, 23l);
+var51 = var53;
+varonce50 = var51;
+}
+((struct instance_core__NativeArray*)var45)->values[4]=var51;
+} else {
+var45 = varonce44;
+varonce44 = NULL;
+}
+{
+var54 = nitc___nitc__SeparateRuntimeFunction___c_ret(var_r);
+}
+((struct instance_core__NativeArray*)var45)->values[0]=var54;
+((struct instance_core__NativeArray*)var45)->values[2]=var_n2;
+{
+var55 = nitc___nitc__SeparateRuntimeFunction___c_sig(var_r);
+}
+((struct instance_core__NativeArray*)var45)->values[3]=var55;
+{
+var56 = ((val*(*)(val* self))(var45->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var45); /* native_to_s on <var45:NativeArray[String]>*/
+}
+varonce44 = var45;
+{
+nitc___nitc__AbstractCompiler___provide_declaration(self, var_n2, var56); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#is_monomorphic for (self: SeparateCompiler, MMethod): nullable MMethodDef */
+val* nitc___nitc__SeparateCompiler___is_monomorphic(val* self, val* p0) {
+val* var /* : nullable MMethodDef */;
+val* var_m /* var m: MMethod */;
+val* var1 /* : nullable RapidTypeAnalysis */;
+val* var3 /* : nullable RapidTypeAnalysis */;
+val* var_rta /* var rta: nullable RapidTypeAnalysis */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : Array[MPropDef] */;
+val* var12 /* : Array[MPropDef] */;
+long var13 /* : Int */;
+long var15 /* : Int */;
+short int var16 /* : Bool */;
+short int var18 /* : Bool */;
+val* var19 /* : Array[MPropDef] */;
+val* var21 /* : Array[MPropDef] */;
+val* var22 /* : nullable Object */;
+val* var_res /* var res: nullable MMethodDef */;
+val* var23 /* : Array[MPropDef] */;
+val* var25 /* : Array[MPropDef] */;
+val* var_ /* var : Array[MMethodDef] */;
+val* var26 /* : IndexedIterator[nullable Object] */;
+val* var_27 /* var : IndexedIterator[MMethodDef] */;
+short int var28 /* : Bool */;
+val* var29 /* : nullable Object */;
+val* var_md /* var md: MMethodDef */;
+val* var30 /* : HashSet[MMethodDef] */;
+val* var32 /* : HashSet[MMethodDef] */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+val* var_other37 /* var other: nullable Object */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+var_m = p0;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var3 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var_rta = var1;
+if (var_rta == NULL) {
+var4 = 1; /* is null */
+} else {
+var4 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_rta,var_other) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var9 = var_rta == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+{ /* Inline model#MProperty#mpropdefs (var_m) on <var_m:MMethod> */
+var12 = var_m->attrs[COLOR_nitc__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_m:MMethod> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1981);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var10) on <var10:Array[MPropDef](Array[MMethodDef])> */
+var15 = var10->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var10:Array[MPropDef](Array[MMethodDef])> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var13,1l) on <var13:Int> */
+var18 = var13 == 1l;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
+}
+}
+if (var16){
+{
+{ /* Inline model#MProperty#mpropdefs (var_m) on <var_m:MMethod> */
+var21 = var_m->attrs[COLOR_nitc__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_m:MMethod> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1981);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+var22 = core___core__SequenceRead___Collection__first(var19);
+}
+var = var22;
+goto RET_LABEL;
+} else {
+var = ((val*)NULL);
+goto RET_LABEL;
+}
+} else {
+var_res = ((val*)NULL);
+{
+{ /* Inline model#MProperty#mpropdefs (var_m) on <var_m:MMethod> */
+var25 = var_m->attrs[COLOR_nitc__model__MProperty___mpropdefs].val; /* _mpropdefs on <var_m:MMethod> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1981);
+fatal_exit(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+var_ = var23;
+{
+var26 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
+}
+var_27 = var26;
+for(;;) {
+{
+var28 = ((short int(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_27); /* is_ok on <var_27:IndexedIterator[MMethodDef]>*/
+}
+if (var28){
+} else {
+goto BREAK_label;
+}
+{
+var29 = ((val*(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_27); /* item on <var_27:IndexedIterator[MMethodDef]>*/
+}
+var_md = var29;
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var32 = var_rta->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var32 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 79);
+fatal_exit(1);
+}
+var30 = var32;
+RET_LABEL31:(void)0;
+}
+}
+{
+var33 = core___core__HashSet___core__abstract_collection__Collection__has(var30, var_md);
+}
+if (var33){
+if (var_res == NULL) {
+var34 = 0; /* is null */
+} else {
+var34 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable MMethodDef> */
+var_other37 = ((val*)NULL);
+{
+var38 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other37); /* == on <var_res:nullable MMethodDef(MMethodDef)>*/
+}
+var39 = !var38;
+var35 = var39;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
+}
+var34 = var35;
+}
+if (var34){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+var_res = var_md;
+} else {
+}
+{
+((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_27); /* next on <var_27:IndexedIterator[MMethodDef]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_27); /* finish on <var_27:IndexedIterator[MMethodDef]>*/
+}
+var = var_res;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#compile_type_to_c for (self: SeparateCompiler, MType) */
+void nitc___nitc__SeparateCompiler___compile_type_to_c(val* self, val* p0) {
+val* var_mtype /* var mtype: MType */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+short int var_ /* var : Bool */;
+val* var4 /* : nullable RapidTypeAnalysis */;
+val* var6 /* : nullable RapidTypeAnalysis */;
+val* var7 /* : HashSet[MClassType] */;
+val* var9 /* : HashSet[MClassType] */;
+short int var10 /* : Bool */;
+short int var_is_live /* var is_live: Bool */;
+val* var11 /* : nullable RapidTypeAnalysis */;
+val* var13 /* : nullable RapidTypeAnalysis */;
+val* var14 /* : HashSet[MType] */;
+val* var16 /* : HashSet[MType] */;
+short int var17 /* : Bool */;
+short int var_is_cast_live /* var is_cast_live: Bool */;
+val* var18 /* : String */;
+val* var_c_name /* var c_name: String */;
+val* var19 /* : SeparateCompilerVisitor */;
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var20 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+val* var24 /* : String */;
+static val* varonce25;
+val* var26 /* : String */;
+char* var27 /* : NativeString */;
+val* var28 /* : String */;
+val* var29 /* : String */;
+val* var30 /* : String */;
+val* var32 /* : NativeArray[String] */;
+static val* varonce31;
+static val* varonce33;
+val* var34 /* : String */;
+char* var35 /* : NativeString */;
+val* var36 /* : String */;
+val* var37 /* : String */;
+val* var39 /* : NativeArray[String] */;
+static val* varonce38;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+val* var43 /* : String */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+val* var47 /* : String */;
+val* var48 /* : String */;
+val* var50 /* : NativeArray[String] */;
+static val* varonce49;
+static val* varonce51;
+val* var52 /* : String */;
+char* var53 /* : NativeString */;
+val* var54 /* : String */;
+static val* varonce55;
+val* var56 /* : String */;
+char* var57 /* : NativeString */;
+val* var58 /* : String */;
+val* var59 /* : String */;
+val* var61 /* : NativeArray[String] */;
+static val* varonce60;
+static val* varonce62;
+val* var63 /* : String */;
+char* var64 /* : NativeString */;
+val* var65 /* : String */;
+val* var66 /* : Map[MType, Int] */;
+val* var68 /* : Map[MType, Int] */;
+val* var69 /* : nullable Object */;
+val* var70 /* : String */;
+long var71 /* : Int */;
+val* var72 /* : String */;
+static val* varonce73;
+val* var74 /* : String */;
+char* var75 /* : NativeString */;
+val* var76 /* : String */;
+val* var78 /* : NativeArray[String] */;
+static val* varonce77;
+static val* varonce79;
+val* var80 /* : String */;
+char* var81 /* : NativeString */;
+val* var82 /* : String */;
+static val* varonce83;
+val* var84 /* : String */;
+char* var85 /* : NativeString */;
+val* var86 /* : String */;
+val* var87 /* : String */;
+val* var88 /* : String */;
+val* var90 /* : NativeArray[String] */;
+static val* varonce89;
+static val* varonce91;
+val* var92 /* : String */;
+char* var93 /* : NativeString */;
+val* var94 /* : String */;
+val* var95 /* : Map[MType, Int] */;
+val* var97 /* : Map[MType, Int] */;
+val* var98 /* : nullable Object */;
+val* var99 /* : String */;
+long var100 /* : Int */;
+val* var101 /* : String */;
+static val* varonce102;
+val* var103 /* : String */;
+char* var104 /* : NativeString */;
+val* var105 /* : String */;
+short int var106 /* : Bool */;
+int cltype107;
+int idtype108;
+static val* varonce109;
+val* var110 /* : String */;
+char* var111 /* : NativeString */;
+val* var112 /* : String */;
+static val* varonce113;
+val* var114 /* : String */;
+char* var115 /* : NativeString */;
+val* var116 /* : String */;
+val* var117 /* : MType */;
+val* var_mclass_type /* var mclass_type: MType */;
+short int var118 /* : Bool */;
+int cltype119;
+int idtype120;
+val* var121 /* : Map[MClassType, Array[nullable MType]] */;
+val* var123 /* : Map[MClassType, Array[nullable MType]] */;
+val* var124 /* : nullable Object */;
+short int var125 /* : Bool */;
+static val* varonce126;
+val* var127 /* : String */;
+char* var128 /* : NativeString */;
+val* var129 /* : String */;
+val* var131 /* : NativeArray[String] */;
+static val* varonce130;
+static val* varonce132;
+val* var133 /* : String */;
+char* var134 /* : NativeString */;
+val* var135 /* : String */;
+val* var136 /* : String */;
+val* var138 /* : NativeArray[String] */;
+static val* varonce137;
+static val* varonce139;
+val* var140 /* : String */;
+char* var141 /* : NativeString */;
+val* var142 /* : String */;
+static val* varonce143;
+val* var144 /* : String */;
+char* var145 /* : NativeString */;
+val* var146 /* : String */;
+val* var147 /* : String */;
+static val* varonce148;
+val* var149 /* : String */;
+char* var150 /* : NativeString */;
+val* var151 /* : String */;
+val* var153 /* : NativeArray[String] */;
+static val* varonce152;
+static val* varonce154;
+val* var155 /* : String */;
+char* var156 /* : NativeString */;
+val* var157 /* : String */;
+val* var158 /* : Map[MType, Array[nullable MType]] */;
+val* var160 /* : Map[MType, Array[nullable MType]] */;
+val* var161 /* : nullable Object */;
+long var162 /* : Int */;
+long var164 /* : Int */;
+val* var165 /* : String */;
+val* var166 /* : String */;
+static val* varonce167;
+val* var168 /* : String */;
+char* var169 /* : NativeString */;
+val* var170 /* : String */;
+val* var171 /* : Map[MType, Array[nullable MType]] */;
+val* var173 /* : Map[MType, Array[nullable MType]] */;
+val* var174 /* : nullable Object */;
+val* var_175 /* var : Array[nullable MType] */;
+val* var176 /* : IndexedIterator[nullable Object] */;
+val* var_177 /* var : IndexedIterator[nullable MType] */;
+short int var178 /* : Bool */;
+val* var179 /* : nullable Object */;
+val* var_stype /* var stype: nullable MType */;
+short int var180 /* : Bool */;
+short int var181 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var183 /* : Bool */;
+short int var185 /* : Bool */;
+static val* varonce186;
+val* var187 /* : String */;
+char* var188 /* : NativeString */;
+val* var189 /* : String */;
+val* var191 /* : NativeArray[String] */;
+static val* varonce190;
+static val* varonce192;
+val* var193 /* : String */;
+char* var194 /* : NativeString */;
+val* var195 /* : String */;
+static val* varonce196;
+val* var197 /* : String */;
+char* var198 /* : NativeString */;
+val* var199 /* : String */;
+val* var200 /* : Map[MType, Int] */;
+val* var202 /* : Map[MType, Int] */;
+val* var203 /* : nullable Object */;
+val* var204 /* : String */;
+long var205 /* : Int */;
+val* var206 /* : String */;
+val* var207 /* : String */;
+static val* varonce208;
+val* var209 /* : String */;
+char* var210 /* : NativeString */;
+val* var211 /* : String */;
+static val* varonce212;
+val* var213 /* : String */;
+char* var214 /* : NativeString */;
+val* var215 /* : String */;
+static val* varonce216;
+val* var217 /* : String */;
+char* var218 /* : NativeString */;
+val* var219 /* : String */;
+var_mtype = p0;
+{
+var = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
+}
+var1 = !var;
+if (unlikely(!var1)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 708);
+fatal_exit(1);
+}
+/* <var_mtype:MType> isa MClassType */
+cltype = type_nitc__MClassType.color;
+idtype = type_nitc__MClassType.id;
+if(cltype >= var_mtype->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_mtype->type->type_table[cltype] == idtype;
+}
+var_ = var3;
+if (var3){
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var6 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+if (var4 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 709);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var4) on <var4:nullable RapidTypeAnalysis> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var9 = var4->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var4:nullable RapidTypeAnalysis> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+var10 = core___core__HashSet___core__abstract_collection__Collection__has(var7, var_mtype);
+}
+var2 = var10;
+} else {
+var2 = var_;
+}
+var_is_live = var2;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
+var13 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+if (var11 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 710);
+fatal_exit(1);
+} else {
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (var11) on <var11:nullable RapidTypeAnalysis> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var16 = var11->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <var11:nullable RapidTypeAnalysis> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
+fatal_exit(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+var17 = core___core__HashSet___core__abstract_collection__Collection__has(var14, var_mtype);
+}
+var_is_cast_live = var17;
+{
+var18 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
+}
+var_c_name = var18;
+var19 = NEW_nitc__SeparateCompilerVisitor(&type_nitc__SeparateCompilerVisitor);
+{
+((void(*)(val* self, val* p0))(var19->class->vft[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(var19, self); /* compiler= on <var19:SeparateCompilerVisitor>*/
+}
+{
+((void(*)(val* self))(var19->class->vft[COLOR_core__kernel__Object__init]))(var19); /* init on <var19:SeparateCompilerVisitor>*/
+}
+var_v = var19;
+if (unlikely(varonce==NULL)) {
+var20 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce21!=NULL)) {
+var22 = varonce21;
+} else {
+var23 = "/* runtime type ";
+var24 = core__flat___NativeString___to_s_full(var23, 16l, 16l);
+var22 = var24;
+varonce21 = var22;
+}
+((struct instance_core__NativeArray*)var20)->values[0]=var22;
+if (likely(varonce25!=NULL)) {
+var26 = varonce25;
+} else {
+var27 = " */";
+var28 = core__flat___NativeString___to_s_full(var27, 3l, 3l);
+var26 = var28;
+varonce25 = var26;
+}
+((struct instance_core__NativeArray*)var20)->values[2]=var26;
+} else {
+var20 = varonce;
+varonce = NULL;
+}
+{
+var29 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
+}
+((struct instance_core__NativeArray*)var20)->values[1]=var29;
+{
+var30 = ((val*(*)(val* self))(var20->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var20); /* native_to_s on <var20:NativeArray[String]>*/
+}
+varonce = var20;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (unlikely(varonce31==NULL)) {
+var32 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce33!=NULL)) {
+var34 = varonce33;
+} else {
+var35 = "type_";
+var36 = core__flat___NativeString___to_s_full(var35, 5l, 5l);
+var34 = var36;
+varonce33 = var34;
+}
+((struct instance_core__NativeArray*)var32)->values[0]=var34;
+} else {
+var32 = varonce31;
+varonce31 = NULL;
+}
+((struct instance_core__NativeArray*)var32)->values[1]=var_c_name;
+{
+var37 = ((val*(*)(val* self))(var32->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var32); /* native_to_s on <var32:NativeArray[String]>*/
+}
+varonce31 = var32;
+if (unlikely(varonce38==NULL)) {
+var39 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce40!=NULL)) {
+var41 = varonce40;
+} else {
+var42 = "extern const struct type type_";
+var43 = core__flat___NativeString___to_s_full(var42, 30l, 30l);
+var41 = var43;
+varonce40 = var41;
+}
+((struct instance_core__NativeArray*)var39)->values[0]=var41;
+if (likely(varonce44!=NULL)) {
+var45 = varonce44;
+} else {
+var46 = ";";
+var47 = core__flat___NativeString___to_s_full(var46, 1l, 1l);
+var45 = var47;
+varonce44 = var45;
+}
+((struct instance_core__NativeArray*)var39)->values[2]=var45;
+} else {
+var39 = varonce38;
+varonce38 = NULL;
+}
+((struct instance_core__NativeArray*)var39)->values[1]=var_c_name;
+{
+var48 = ((val*(*)(val* self))(var39->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var39); /* native_to_s on <var39:NativeArray[String]>*/
+}
+varonce38 = var39;
+{
+nitc___nitc__AbstractCompiler___provide_declaration(self, var37, var48); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (unlikely(varonce49==NULL)) {
+var50 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce51!=NULL)) {
+var52 = varonce51;
+} else {
+var53 = "const struct type type_";
+var54 = core__flat___NativeString___to_s_full(var53, 23l, 23l);
+var52 = var54;
+varonce51 = var52;
+}
+((struct instance_core__NativeArray*)var50)->values[0]=var52;
+if (likely(varonce55!=NULL)) {
+var56 = varonce55;
+} else {
+var57 = " = {";
+var58 = core__flat___NativeString___to_s_full(var57, 4l, 4l);
+var56 = var58;
+varonce55 = var56;
+}
+((struct instance_core__NativeArray*)var50)->values[2]=var56;
+} else {
+var50 = varonce49;
+varonce49 = NULL;
+}
+((struct instance_core__NativeArray*)var50)->values[1]=var_c_name;
+{
+var59 = ((val*(*)(val* self))(var50->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
+}
+varonce49 = var50;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var59); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_cast_live){
+if (unlikely(varonce60==NULL)) {
+var61 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce62!=NULL)) {
+var63 = varonce62;
+} else {
+var64 = ",";
+var65 = core__flat___NativeString___to_s_full(var64, 1l, 1l);
+var63 = var65;
+varonce62 = var63;
+}
+((struct instance_core__NativeArray*)var61)->values[1]=var63;
+} else {
+var61 = varonce60;
+varonce60 = NULL;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
+var68 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
+if (unlikely(var68 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
+fatal_exit(1);
+}
+var66 = var68;
+RET_LABEL67:(void)0;
+}
+}
+{
+var69 = ((val*(*)(val* self, val* p0))((((long)var66&3)?class_info[((long)var66&3)]:var66->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var66, var_mtype); /* [] on <var66:Map[MType, Int]>*/
+}
+var71 = (long)(var69)>>2;
+var70 = core__flat___Int___core__abstract_text__Object__to_s(var71);
+((struct instance_core__NativeArray*)var61)->values[0]=var70;
+{
+var72 = ((val*(*)(val* self))(var61->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var61); /* native_to_s on <var61:NativeArray[String]>*/
+}
+varonce60 = var61;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (likely(varonce73!=NULL)) {
+var74 = varonce73;
+} else {
+var75 = "-1, /*CAST DEAD*/";
+var76 = core__flat___NativeString___to_s_full(var75, 17l, 17l);
+var74 = var76;
+varonce73 = var74;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (unlikely(varonce77==NULL)) {
+var78 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce79!=NULL)) {
+var80 = varonce79;
+} else {
+var81 = "\"";
+var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
+var80 = var82;
+varonce79 = var80;
+}
+((struct instance_core__NativeArray*)var78)->values[0]=var80;
+if (likely(varonce83!=NULL)) {
+var84 = varonce83;
+} else {
+var85 = "\", /* class_name_string */";
+var86 = core__flat___NativeString___to_s_full(var85, 26l, 26l);
+var84 = var86;
+varonce83 = var84;
+}
+((struct instance_core__NativeArray*)var78)->values[2]=var84;
+} else {
+var78 = varonce77;
+varonce77 = NULL;
+}
+{
+var87 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
+}
+((struct instance_core__NativeArray*)var78)->values[1]=var87;
+{
+var88 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
+}
+varonce77 = var78;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var88); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_cast_live){
+if (unlikely(varonce89==NULL)) {
+var90 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce91!=NULL)) {
+var92 = varonce91;
+} else {
+var93 = ",";
+var94 = core__flat___NativeString___to_s_full(var93, 1l, 1l);
+var92 = var94;
+varonce91 = var92;
+}
+((struct instance_core__NativeArray*)var90)->values[1]=var92;
+} else {
+var90 = varonce89;
+varonce89 = NULL;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_colors (self) on <self:SeparateCompiler> */
+var97 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val; /* _type_colors on <self:SeparateCompiler> */
+if (unlikely(var97 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_colors");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 150);
+fatal_exit(1);
+}
+var95 = var97;
+RET_LABEL96:(void)0;
+}
+}
+{
+var98 = ((val*(*)(val* self, val* p0))((((long)var95&3)?class_info[((long)var95&3)]:var95->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var95, var_mtype); /* [] on <var95:Map[MType, Int]>*/
+}
+var100 = (long)(var98)>>2;
+var99 = core__flat___Int___core__abstract_text__Object__to_s(var100);
+((struct instance_core__NativeArray*)var90)->values[0]=var99;
+{
+var101 = ((val*(*)(val* self))(var90->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var90); /* native_to_s on <var90:NativeArray[String]>*/
+}
+varonce89 = var90;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var101); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (likely(varonce102!=NULL)) {
+var103 = varonce102;
+} else {
+var104 = "-1, /*CAST DEAD*/";
+var105 = core__flat___NativeString___to_s_full(var104, 17l, 17l);
+var103 = var105;
+varonce102 = var103;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var103); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+/* <var_mtype:MType> isa MNullableType */
+cltype107 = type_nitc__MNullableType.color;
+idtype108 = type_nitc__MNullableType.id;
+if(cltype107 >= var_mtype->type->table_size) {
+var106 = 0;
+} else {
+var106 = var_mtype->type->type_table[cltype107] == idtype108;
+}
+if (var106){
+if (likely(varonce109!=NULL)) {
+var110 = varonce109;
+} else {
+var111 = "1,";
+var112 = core__flat___NativeString___to_s_full(var111, 2l, 2l);
+var110 = var112;
+varonce109 = var110;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (likely(varonce113!=NULL)) {
+var114 = varonce113;
+} else {
+var115 = "0,";
+var116 = core__flat___NativeString___to_s_full(var115, 2l, 2l);
+var114 = var116;
+varonce113 = var114;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var114); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (var_is_live){
+{
+var117 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
+}
+var_mclass_type = var117;
+/* <var_mclass_type:MType> isa MClassType */
+cltype119 = type_nitc__MClassType.color;
+idtype120 = type_nitc__MClassType.id;
+if(cltype119 >= var_mclass_type->type->table_size) {
+var118 = 0;
+} else {
+var118 = var_mclass_type->type->type_table[cltype119] == idtype120;
+}
+if (unlikely(!var118)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 748);
+fatal_exit(1);
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:SeparateCompiler> */
+var123 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
+if (unlikely(var123 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1066);
+fatal_exit(1);
+}
+var121 = var123;
+RET_LABEL122:(void)0;
+}
+}
+{
+var124 = ((val*(*)(val* self, val* p0))((((long)var121&3)?class_info[((long)var121&3)]:var121->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var121, var_mclass_type); /* [] on <var121:Map[MClassType, Array[nullable MType]]>*/
+}
+{
+var125 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var124);
+}
+if (var125){
+if (likely(varonce126!=NULL)) {
+var127 = varonce126;
+} else {
+var128 = "NULL, /*NO RESOLUTIONS*/";
+var129 = core__flat___NativeString___to_s_full(var128, 24l, 24l);
+var127 = var129;
+varonce126 = var127;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var127); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+{
+nitc___nitc__SeparateCompiler___compile_type_resolution_table(self, var_mtype); /* Direct call separate_compiler#SeparateCompiler#compile_type_resolution_table on <self:SeparateCompiler>*/
+}
+if (unlikely(varonce130==NULL)) {
+var131 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce132!=NULL)) {
+var133 = varonce132;
+} else {
+var134 = "resolution_table_";
+var135 = core__flat___NativeString___to_s_full(var134, 17l, 17l);
+var133 = var135;
+varonce132 = var133;
+}
+((struct instance_core__NativeArray*)var131)->values[0]=var133;
+} else {
+var131 = varonce130;
+varonce130 = NULL;
+}
+((struct instance_core__NativeArray*)var131)->values[1]=var_c_name;
+{
+var136 = ((val*(*)(val* self))(var131->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var131); /* native_to_s on <var131:NativeArray[String]>*/
+}
+varonce130 = var131;
+{
+nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var136); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (unlikely(varonce137==NULL)) {
+var138 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce139!=NULL)) {
+var140 = varonce139;
+} else {
+var141 = "&resolution_table_";
+var142 = core__flat___NativeString___to_s_full(var141, 18l, 18l);
+var140 = var142;
+varonce139 = var140;
+}
+((struct instance_core__NativeArray*)var138)->values[0]=var140;
+if (likely(varonce143!=NULL)) {
+var144 = varonce143;
+} else {
+var145 = ",";
+var146 = core__flat___NativeString___to_s_full(var145, 1l, 1l);
+var144 = var146;
+varonce143 = var144;
+}
+((struct instance_core__NativeArray*)var138)->values[2]=var144;
+} else {
+var138 = varonce137;
+varonce137 = NULL;
+}
+((struct instance_core__NativeArray*)var138)->values[1]=var_c_name;
+{
+var147 = ((val*(*)(val* self))(var138->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var138); /* native_to_s on <var138:NativeArray[String]>*/
+}
+varonce137 = var138;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var147); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+} else {
+if (likely(varonce148!=NULL)) {
+var149 = varonce148;
+} else {
+var150 = "NULL, /*DEAD*/";
+var151 = core__flat___NativeString___to_s_full(var150, 14l, 14l);
+var149 = var151;
+varonce148 = var149;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var149); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (var_is_live){
+if (unlikely(varonce152==NULL)) {
+var153 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
+if (likely(varonce154!=NULL)) {
+var155 = varonce154;
+} else {
+var156 = ",";
+var157 = core__flat___NativeString___to_s_full(var156, 1l, 1l);
+var155 = var157;
+varonce154 = var155;
+}
+((struct instance_core__NativeArray*)var153)->values[1]=var155;
+} else {
+var153 = varonce152;
+varonce152 = NULL;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
+var160 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var160 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1065);
+fatal_exit(1);
+}
+var158 = var160;
+RET_LABEL159:(void)0;
+}
+}
+{
+var161 = ((val*(*)(val* self, val* p0))((((long)var158&3)?class_info[((long)var158&3)]:var158->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var158, var_mtype); /* [] on <var158:Map[MType, Array[nullable MType]]>*/
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var161) on <var161:nullable Object(Array[nullable MType])> */
+var164 = var161->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var161:nullable Object(Array[nullable MType])> */
+var162 = var164;
+RET_LABEL163:(void)0;
+}
+}
+var165 = core__flat___Int___core__abstract_text__Object__to_s(var162);
+((struct instance_core__NativeArray*)var153)->values[0]=var165;
+{
+var166 = ((val*(*)(val* self))(var153->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var153); /* native_to_s on <var153:NativeArray[String]>*/
+}
+varonce152 = var153;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var166); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (likely(varonce167!=NULL)) {
+var168 = varonce167;
+} else {
+var169 = "{";
+var170 = core__flat___NativeString___to_s_full(var169, 1l, 1l);
+var168 = var170;
+varonce167 = var168;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var168); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
+var173 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var173 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1065);
+fatal_exit(1);
+}
+var171 = var173;
+RET_LABEL172:(void)0;
+}
+}
+{
+var174 = ((val*(*)(val* self, val* p0))((((long)var171&3)?class_info[((long)var171&3)]:var171->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var171, var_mtype); /* [] on <var171:Map[MType, Array[nullable MType]]>*/
+}
+var_175 = var174;
+{
+var176 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_175);
+}
+var_177 = var176;
+for(;;) {
+{
+var178 = ((short int(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_177); /* is_ok on <var_177:IndexedIterator[nullable MType]>*/
+}
+if (var178){
+} else {
+goto BREAK_label;
+}
+{
+var179 = ((val*(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_177); /* item on <var_177:IndexedIterator[nullable MType]>*/
+}
+var_stype = var179;
+if (var_stype == NULL) {
+var180 = 1; /* is null */
+} else {
+var180 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_stype,((val*)NULL)) on <var_stype:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_stype,var_other) on <var_stype:nullable MType(MType)> */
+var185 = var_stype == var_other;
+var183 = var185;
+goto RET_LABEL184;
+RET_LABEL184:(void)0;
+}
+}
+var181 = var183;
+goto RET_LABEL182;
+RET_LABEL182:(void)0;
+}
+var180 = var181;
+}
+if (var180){
+if (likely(varonce186!=NULL)) {
+var187 = varonce186;
+} else {
+var188 = "-1, /* empty */";
+var189 = core__flat___NativeString___to_s_full(var188, 15l, 15l);
+var187 = var189;
+varonce186 = var187;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var187); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (unlikely(varonce190==NULL)) {
+var191 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
+if (likely(varonce192!=NULL)) {
+var193 = varonce192;
+} else {
+var194 = ", /* ";
+var195 = core__flat___NativeString___to_s_full(var194, 5l, 5l);
+var193 = var195;
+varonce192 = var193;
+}
+((struct instance_core__NativeArray*)var191)->values[1]=var193;
+if (likely(varonce196!=NULL)) {
+var197 = varonce196;
+} else {
+var198 = " */";
+var199 = core__flat___NativeString___to_s_full(var198, 3l, 3l);
+var197 = var199;
+varonce196 = var197;
+}
+((struct instance_core__NativeArray*)var191)->values[3]=var197;
+} else {
+var191 = varonce190;
+varonce190 = NULL;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
+var202 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
+if (unlikely(var202 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
+fatal_exit(1);
+}
+var200 = var202;
+RET_LABEL201:(void)0;
+}
+}
+{
+var203 = ((val*(*)(val* self, val* p0))((((long)var200&3)?class_info[((long)var200&3)]:var200->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var200, var_stype); /* [] on <var200:Map[MType, Int]>*/
+}
+var205 = (long)(var203)>>2;
+var204 = core__flat___Int___core__abstract_text__Object__to_s(var205);
+((struct instance_core__NativeArray*)var191)->values[0]=var204;
+{
+var206 = ((val*(*)(val* self))(var_stype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_stype); /* to_s on <var_stype:nullable MType(MType)>*/
+}
+((struct instance_core__NativeArray*)var191)->values[2]=var206;
+{
+var207 = ((val*(*)(val* self))(var191->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var191); /* native_to_s on <var191:NativeArray[String]>*/
+}
+varonce190 = var191;
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var207); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+{
+((void(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_177); /* next on <var_177:IndexedIterator[nullable MType]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_177); /* finish on <var_177:IndexedIterator[nullable MType]>*/
+}
+if (likely(varonce208!=NULL)) {
+var209 = varonce208;
+} else {
+var210 = "},";
+var211 = core__flat___NativeString___to_s_full(var210, 2l, 2l);
+var209 = var211;
+varonce208 = var209;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var209); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (likely(varonce212!=NULL)) {
+var213 = varonce212;
+} else {
+var214 = "-1, {}, /*DEAD TYPE*/";
+var215 = core__flat___NativeString___to_s_full(var214, 21l, 21l);
+var213 = var215;
+varonce212 = var213;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var213); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (likely(varonce216!=NULL)) {
+var217 = varonce216;
+} else {
+var218 = "};";
+var219 = core__flat___NativeString___to_s_full(var218, 2l, 2l);
+var217 = var219;
+varonce216 = var217;
+}
+{
+nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var217); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+RET_LABEL:;
+}