+}
+if (varonce693) {
+var694 = varonce693;
+} else {
+var695 = "NativeArray";
+var696 = 11;
+var697 = string__NativeString__to_s_with_length(var695, var696);
+var694 = var697;
+varonce693 = var694;
+}
+{
+var699 = string__FlatString___61d_61d(var690, var694);
+var698 = var699;
+}
+if (var698){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var702 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var702 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var700 = var702;
+RET_LABEL701:(void)0;
+}
+}
+if (varonce703) {
+var704 = varonce703;
+} else {
+var705 = "struct instance_";
+var706 = 16;
+var707 = string__NativeString__to_s_with_length(var705, var706);
+var704 = var707;
+varonce703 = var704;
+}
+if (varonce708) {
+var709 = varonce708;
+} else {
+var710 = " {";
+var711 = 2;
+var712 = string__NativeString__to_s_with_length(var710, var711);
+var709 = var712;
+varonce708 = var709;
+}
+var713 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var713 = array_instance Array[Object] */
+var714 = 3;
+var715 = NEW_array__NativeArray(var714, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var715)->values[0] = (val*) var704;
+((struct instance_array__NativeArray*)var715)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var715)->values[2] = (val*) var709;
+{
+((void (*)(val*, val*, long))(var713->class->vft[COLOR_array__Array__with_native]))(var713, var715, var714) /* with_native on <var713:Array[Object]>*/;
+}
+}
+{
+var716 = ((val* (*)(val*))(var713->class->vft[COLOR_string__Object__to_s]))(var713) /* to_s on <var713:Array[Object]>*/;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var700, var716); /* Direct call abstract_compiler#CodeWriter#add_decl on <var700:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var719 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var719 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var717 = var719;
+RET_LABEL718:(void)0;
+}
+}
+if (varonce720) {
+var721 = varonce720;
+} else {
+var722 = "const struct type *type;";
+var723 = 24;
+var724 = string__NativeString__to_s_with_length(var722, var723);
+var721 = var724;
+varonce720 = var721;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var717, var721); /* Direct call abstract_compiler#CodeWriter#add_decl on <var717:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var727 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var727 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var725 = var727;
+RET_LABEL726:(void)0;
+}
+}
+if (varonce728) {
+var729 = varonce728;
+} else {
+var730 = "const struct class *class;";
+var731 = 26;
+var732 = string__NativeString__to_s_with_length(var730, var731);
+var729 = var732;
+varonce728 = var729;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var725, var729); /* Direct call abstract_compiler#CodeWriter#add_decl on <var725:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var735 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var735 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var733 = var735;
+RET_LABEL734:(void)0;
+}
+}
+if (varonce736) {
+var737 = varonce736;
+} else {
+var738 = "int length;";
+var739 = 11;
+var740 = string__NativeString__to_s_with_length(var738, var739);
+var737 = var740;
+varonce736 = var737;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var733, var737); /* Direct call abstract_compiler#CodeWriter#add_decl on <var733:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var743 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var743 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var741 = var743;
+RET_LABEL742:(void)0;
+}
+}
+if (varonce744) {
+var745 = varonce744;
+} else {
+var746 = "val* values[0];";
+var747 = 15;
+var748 = string__NativeString__to_s_with_length(var746, var747);
+var745 = var748;
+varonce744 = var745;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var741, var745); /* Direct call abstract_compiler#CodeWriter#add_decl on <var741:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var751 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+if (unlikely(var751 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var749 = var751;
+RET_LABEL750:(void)0;
+}
+}
+if (varonce752) {
+var753 = varonce752;
+} else {
+var754 = "};";
+var755 = 2;
+var756 = string__NativeString__to_s_with_length(var754, var755);
+var753 = var756;
+varonce752 = var753;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var749, var753); /* Direct call abstract_compiler#CodeWriter#add_decl on <var749:CodeWriter>*/
+}
+if (varonce757) {
+var758 = varonce757;
+} else {
+var759 = "NEW_";
+var760 = 4;
+var761 = string__NativeString__to_s_with_length(var759, var760);
+var758 = var761;
+varonce757 = var758;
+}
+var762 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var762 = array_instance Array[Object] */
+var763 = 2;
+var764 = NEW_array__NativeArray(var763, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var764)->values[0] = (val*) var758;
+((struct instance_array__NativeArray*)var764)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var762->class->vft[COLOR_array__Array__with_native]))(var762, var764, var763) /* with_native on <var762:Array[Object]>*/;
+}
+}
+{
+var765 = ((val* (*)(val*))(var762->class->vft[COLOR_string__Object__to_s]))(var762) /* to_s on <var762:Array[Object]>*/;
+}
+{
+var766 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce767) {
+var768 = varonce767;
+} else {
+var769 = " NEW_";
+var770 = 5;
+var771 = string__NativeString__to_s_with_length(var769, var770);
+var768 = var771;
+varonce767 = var768;
+}
+if (varonce772) {
+var773 = varonce772;
+} else {
+var774 = "(int length, const struct type* type);";
+var775 = 38;
+var776 = string__NativeString__to_s_with_length(var774, var775);
+var773 = var776;
+varonce772 = var773;
+}
+var777 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var777 = array_instance Array[Object] */
+var778 = 4;
+var779 = NEW_array__NativeArray(var778, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var779)->values[0] = (val*) var766;
+((struct instance_array__NativeArray*)var779)->values[1] = (val*) var768;
+((struct instance_array__NativeArray*)var779)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var779)->values[3] = (val*) var773;
+{
+((void (*)(val*, val*, long))(var777->class->vft[COLOR_array__Array__with_native]))(var777, var779, var778) /* with_native on <var777:Array[Object]>*/;
+}
+}
+{
+var780 = ((val* (*)(val*))(var777->class->vft[COLOR_string__Object__to_s]))(var777) /* to_s on <var777:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var765, var780); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (varonce781) {
+var782 = varonce781;
+} else {
+var783 = "/* allocate ";
+var784 = 12;
+var785 = string__NativeString__to_s_with_length(var783, var784);
+var782 = var785;
+varonce781 = var782;
+}
+if (varonce786) {
+var787 = varonce786;
+} else {
+var788 = " */";
+var789 = 3;
+var790 = string__NativeString__to_s_with_length(var788, var789);
+var787 = var790;
+varonce786 = var787;
+}
+var791 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var791 = array_instance Array[Object] */
+var792 = 3;
+var793 = NEW_array__NativeArray(var792, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var793)->values[0] = (val*) var782;
+((struct instance_array__NativeArray*)var793)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var793)->values[2] = (val*) var787;
+{
+((void (*)(val*, val*, long))(var791->class->vft[COLOR_array__Array__with_native]))(var791, var793, var792) /* with_native on <var791:Array[Object]>*/;
+}
+}
+{
+var794 = ((val* (*)(val*))(var791->class->vft[COLOR_string__Object__to_s]))(var791) /* to_s on <var791:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var794); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var795 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce796) {
+var797 = varonce796;
+} else {
+var798 = " NEW_";
+var799 = 5;
+var800 = string__NativeString__to_s_with_length(var798, var799);
+var797 = var800;
+varonce796 = var797;
+}
+if (varonce801) {
+var802 = varonce801;
+} else {
+var803 = "(int length, const struct type* type) {";
+var804 = 39;
+var805 = string__NativeString__to_s_with_length(var803, var804);
+var802 = var805;
+varonce801 = var802;
+}
+var806 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var806 = array_instance Array[Object] */
+var807 = 4;
+var808 = NEW_array__NativeArray(var807, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var808)->values[0] = (val*) var795;
+((struct instance_array__NativeArray*)var808)->values[1] = (val*) var797;
+((struct instance_array__NativeArray*)var808)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var808)->values[3] = (val*) var802;
+{
+((void (*)(val*, val*, long))(var806->class->vft[COLOR_array__Array__with_native]))(var806, var808, var807) /* with_native on <var806:Array[Object]>*/;
+}
+}
+{
+var809 = ((val* (*)(val*))(var806->class->vft[COLOR_string__Object__to_s]))(var806) /* to_s on <var806:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var809); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce810) {
+var811 = varonce810;
+} else {
+var812 = "self";
+var813 = 4;
+var814 = string__NativeString__to_s_with_length(var812, var813);
+var811 = var814;
+varonce810 = var811;
+}
+{
+var815 = abstract_compiler__AbstractCompilerVisitor__get_name(var_v, var811);
+}
+var_res816 = var815;
+if (varonce817) {
+var818 = varonce817;
+} else {
+var819 = "struct instance_";
+var820 = 16;
+var821 = string__NativeString__to_s_with_length(var819, var820);
+var818 = var821;
+varonce817 = var818;
+}
+if (varonce822) {
+var823 = varonce822;
+} else {
+var824 = " *";
+var825 = 2;
+var826 = string__NativeString__to_s_with_length(var824, var825);
+var823 = var826;
+varonce822 = var823;
+}
+if (varonce827) {
+var828 = varonce827;
+} else {
+var829 = ";";
+var830 = 1;
+var831 = string__NativeString__to_s_with_length(var829, var830);
+var828 = var831;
+varonce827 = var828;
+}
+var832 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var832 = array_instance Array[Object] */
+var833 = 5;
+var834 = NEW_array__NativeArray(var833, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var834)->values[0] = (val*) var818;
+((struct instance_array__NativeArray*)var834)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var834)->values[2] = (val*) var823;
+((struct instance_array__NativeArray*)var834)->values[3] = (val*) var_res816;
+((struct instance_array__NativeArray*)var834)->values[4] = (val*) var828;
+{
+((void (*)(val*, val*, long))(var832->class->vft[COLOR_array__Array__with_native]))(var832, var834, var833) /* with_native on <var832:Array[Object]>*/;
+}
+}
+{
+var835 = ((val* (*)(val*))(var832->class->vft[COLOR_string__Object__to_s]))(var832) /* to_s on <var832:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var835); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+{ /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MClassType> */
+var838 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_mtype:MClassType> */
+if (unlikely(var838 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
+show_backtrace(1);
+}
+var836 = var838;
+RET_LABEL837:(void)0;
+}
+}
+{
+var839 = abstract_collection__SequenceRead__first(var836);
+}
+var_mtype_elt = var839;
+if (varonce840) {
+var841 = varonce840;
+} else {
+var842 = " = nit_alloc(sizeof(struct instance_";
+var843 = 36;
+var844 = string__NativeString__to_s_with_length(var842, var843);
+var841 = var844;
+varonce840 = var841;
+}
+if (varonce845) {
+var846 = varonce845;
+} else {
+var847 = ") + length*sizeof(";
+var848 = 18;
+var849 = string__NativeString__to_s_with_length(var847, var848);
+var846 = var849;
+varonce845 = var846;
+}
+{
+var850 = ((val* (*)(val*))(var_mtype_elt->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype_elt) /* ctype on <var_mtype_elt:MType>*/;
+}
+if (varonce851) {
+var852 = varonce851;
+} else {
+var853 = "));";
+var854 = 3;
+var855 = string__NativeString__to_s_with_length(var853, var854);
+var852 = var855;
+varonce851 = var852;
+}
+var856 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var856 = array_instance Array[Object] */
+var857 = 6;
+var858 = NEW_array__NativeArray(var857, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var858)->values[0] = (val*) var_res816;
+((struct instance_array__NativeArray*)var858)->values[1] = (val*) var841;
+((struct instance_array__NativeArray*)var858)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var858)->values[3] = (val*) var846;
+((struct instance_array__NativeArray*)var858)->values[4] = (val*) var850;
+((struct instance_array__NativeArray*)var858)->values[5] = (val*) var852;
+{
+((void (*)(val*, val*, long))(var856->class->vft[COLOR_array__Array__with_native]))(var856, var858, var857) /* with_native on <var856:Array[Object]>*/;
+}
+}
+{
+var859 = ((val* (*)(val*))(var856->class->vft[COLOR_string__Object__to_s]))(var856) /* to_s on <var856:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var859); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce860) {
+var861 = varonce860;
+} else {
+var862 = "->type = type;";
+var863 = 14;
+var864 = string__NativeString__to_s_with_length(var862, var863);
+var861 = var864;
+varonce860 = var861;
+}
+var865 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var865 = array_instance Array[Object] */
+var866 = 2;
+var867 = NEW_array__NativeArray(var866, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var867)->values[0] = (val*) var_res816;
+((struct instance_array__NativeArray*)var867)->values[1] = (val*) var861;
+{
+((void (*)(val*, val*, long))(var865->class->vft[COLOR_array__Array__with_native]))(var865, var867, var866) /* with_native on <var865:Array[Object]>*/;
+}
+}
+{
+var868 = ((val* (*)(val*))(var865->class->vft[COLOR_string__Object__to_s]))(var865) /* to_s on <var865:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var868); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce869) {
+var870 = varonce869;
+} else {
+var871 = "type";
+var872 = 4;
+var873 = string__NativeString__to_s_with_length(var871, var872);
+var870 = var873;
+varonce869 = var870;
+}
+{
+separate_compiler__SeparateCompiler__hardening_live_type(self, var_v, var870); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
+}
+if (varonce874) {
+var875 = varonce874;
+} else {
+var876 = "class_";
+var877 = 6;
+var878 = string__NativeString__to_s_with_length(var876, var877);
+var875 = var878;
+varonce874 = var875;
+}
+var879 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var879 = array_instance Array[Object] */
+var880 = 2;
+var881 = NEW_array__NativeArray(var880, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var881)->values[0] = (val*) var875;
+((struct instance_array__NativeArray*)var881)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var879->class->vft[COLOR_array__Array__with_native]))(var879, var881, var880) /* with_native on <var879:Array[Object]>*/;
+}
+}
+{
+var882 = ((val* (*)(val*))(var879->class->vft[COLOR_string__Object__to_s]))(var879) /* to_s on <var879:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var882); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce883) {
+var884 = varonce883;
+} else {
+var885 = "->class = &class_";
+var886 = 17;
+var887 = string__NativeString__to_s_with_length(var885, var886);
+var884 = var887;
+varonce883 = var884;
+}
+if (varonce888) {
+var889 = varonce888;
+} else {
+var890 = ";";
+var891 = 1;
+var892 = string__NativeString__to_s_with_length(var890, var891);
+var889 = var892;
+varonce888 = var889;
+}
+var893 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var893 = array_instance Array[Object] */
+var894 = 4;
+var895 = NEW_array__NativeArray(var894, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var895)->values[0] = (val*) var_res816;
+((struct instance_array__NativeArray*)var895)->values[1] = (val*) var884;
+((struct instance_array__NativeArray*)var895)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var895)->values[3] = (val*) var889;
+{
+((void (*)(val*, val*, long))(var893->class->vft[COLOR_array__Array__with_native]))(var893, var895, var894) /* with_native on <var893:Array[Object]>*/;
+}
+}
+{
+var896 = ((val* (*)(val*))(var893->class->vft[COLOR_string__Object__to_s]))(var893) /* to_s on <var893:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var896); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce897) {
+var898 = varonce897;
+} else {
+var899 = "->length = length;";
+var900 = 18;
+var901 = string__NativeString__to_s_with_length(var899, var900);
+var898 = var901;
+varonce897 = var898;
+}
+var902 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var902 = array_instance Array[Object] */
+var903 = 2;
+var904 = NEW_array__NativeArray(var903, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var904)->values[0] = (val*) var_res816;
+((struct instance_array__NativeArray*)var904)->values[1] = (val*) var898;
+{
+((void (*)(val*, val*, long))(var902->class->vft[COLOR_array__Array__with_native]))(var902, var904, var903) /* with_native on <var902:Array[Object]>*/;
+}
+}
+{
+var905 = ((val* (*)(val*))(var902->class->vft[COLOR_string__Object__to_s]))(var902) /* to_s on <var902:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var905); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce906) {
+var907 = varonce906;
+} else {
+var908 = "return (val*)";
+var909 = 13;
+var910 = string__NativeString__to_s_with_length(var908, var909);
+var907 = var910;
+varonce906 = var907;
+}
+if (varonce911) {
+var912 = varonce911;
+} else {
+var913 = ";";
+var914 = 1;
+var915 = string__NativeString__to_s_with_length(var913, var914);
+var912 = var915;
+varonce911 = var912;
+}
+var916 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var916 = array_instance Array[Object] */
+var917 = 3;
+var918 = NEW_array__NativeArray(var917, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var918)->values[0] = (val*) var907;
+((struct instance_array__NativeArray*)var918)->values[1] = (val*) var_res816;
+((struct instance_array__NativeArray*)var918)->values[2] = (val*) var912;
+{
+((void (*)(val*, val*, long))(var916->class->vft[COLOR_array__Array__with_native]))(var916, var918, var917) /* with_native on <var916:Array[Object]>*/;
+}
+}
+{
+var919 = ((val* (*)(val*))(var916->class->vft[COLOR_string__Object__to_s]))(var916) /* to_s on <var916:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var919); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce920) {
+var921 = varonce920;
+} else {
+var922 = "}";
+var923 = 1;
+var924 = string__NativeString__to_s_with_length(var922, var923);
+var921 = var924;
+varonce920 = var921;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var921); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+goto RET_LABEL;
+} else {
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
+var928 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
+if (unlikely(var928 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var926 = var928;
+RET_LABEL927:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var926) on <var926:MClass> */
+var931 = var926->attrs[COLOR_model__MClass___kind].val; /* _kind on <var926:MClass> */
+if (unlikely(var931 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
+show_backtrace(1);
+}
+var929 = var931;
+RET_LABEL930:(void)0;
+}
+}
+{
+var932 = model__Object__extern_kind(self);
+}
+{
+{ /* Inline kernel#Object#== (var929,var932) on <var929:MClassKind> */
+var_other155 = var932;
+{
+{ /* Inline kernel#Object#is_same_instance (var929,var_other155) on <var929:MClassKind> */
+var938 = var929 == var_other155;
+var936 = var938;
+goto RET_LABEL937;
+RET_LABEL937:(void)0;
+}
+}
+var934 = var936;
+goto RET_LABEL935;
+RET_LABEL935:(void)0;
+}
+var933 = var934;
+}
+var_939 = var933;
+if (var933){
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
+var942 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
+if (unlikely(var942 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var940 = var942;
+RET_LABEL941:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#name (var940) on <var940:MClass> */
+var945 = var940->attrs[COLOR_model__MClass___name].val; /* _name on <var940:MClass> */
+if (unlikely(var945 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
+show_backtrace(1);
+}
+var943 = var945;
+RET_LABEL944:(void)0;
+}
+}
+if (varonce946) {
+var947 = varonce946;
+} else {
+var948 = "NativeString";
+var949 = 12;
+var950 = string__NativeString__to_s_with_length(var948, var949);
+var947 = var950;
+varonce946 = var947;
+}
+{
+{ /* Inline kernel#Object#!= (var943,var947) on <var943:String> */
+var_other = var947;
+{
+var955 = ((short int (*)(val*, val*))(var943->class->vft[COLOR_kernel__Object___61d_61d]))(var943, var_other) /* == on <var943:String>*/;
+var954 = var955;
+}
+var956 = !var954;
+var952 = var956;
+goto RET_LABEL953;
+RET_LABEL953:(void)0;
+}
+var951 = var952;
+}
+var925 = var951;
+} else {
+var925 = var_939;
+}
+if (var925){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var959 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var959 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var957 = var959;
+RET_LABEL958:(void)0;
+}
+}
+{
+{ /* Inline model#MModule#pointer_type (var957) on <var957:MModule> */
+var962 = var957->attrs[COLOR_model__MModule___pointer_type].val != NULL; /* _pointer_type on <var957:MModule> */
+if(likely(var962)) {
+var963 = var957->attrs[COLOR_model__MModule___pointer_type].val; /* _pointer_type on <var957:MModule> */
+if (unlikely(var963 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pointer_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 217);
+show_backtrace(1);
+}
+} else {
+if (varonce964) {
+var965 = varonce964;
+} else {
+var966 = "Pointer";
+var967 = 7;
+var968 = string__NativeString__to_s_with_length(var966, var967);
+var965 = var968;
+varonce964 = var965;
+}
+{
+var969 = model__MModule__get_primitive_class(var957, var965);
+}
+{
+{ /* Inline model#MClass#mclass_type (var969) on <var969:MClass> */
+var972 = var969->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var969:MClass> */
+if (unlikely(var972 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
+show_backtrace(1);
+}
+var970 = var972;
+RET_LABEL971:(void)0;
+}
+}
+var957->attrs[COLOR_model__MModule___pointer_type].val = var970; /* _pointer_type on <var957:MModule> */
+var963 = var970;
+}
+var960 = var963;
+RET_LABEL961:(void)0;
+}
+}
+var_pointer_type = var960;
+if (varonce973) {
+var974 = varonce973;
+} else {
+var975 = "NEW_";
+var976 = 4;
+var977 = string__NativeString__to_s_with_length(var975, var976);
+var974 = var977;
+varonce973 = var974;
+}
+var978 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var978 = array_instance Array[Object] */
+var979 = 2;
+var980 = NEW_array__NativeArray(var979, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var980)->values[0] = (val*) var974;
+((struct instance_array__NativeArray*)var980)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var978->class->vft[COLOR_array__Array__with_native]))(var978, var980, var979) /* with_native on <var978:Array[Object]>*/;
+}
+}
+{
+var981 = ((val* (*)(val*))(var978->class->vft[COLOR_string__Object__to_s]))(var978) /* to_s on <var978:Array[Object]>*/;
+}
+{
+var982 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce983) {
+var984 = varonce983;
+} else {
+var985 = " NEW_";
+var986 = 5;
+var987 = string__NativeString__to_s_with_length(var985, var986);
+var984 = var987;
+varonce983 = var984;
+}
+if (varonce988) {
+var989 = varonce988;
+} else {
+var990 = "(const struct type* type);";
+var991 = 26;
+var992 = string__NativeString__to_s_with_length(var990, var991);
+var989 = var992;
+varonce988 = var989;
+}
+var993 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var993 = array_instance Array[Object] */
+var994 = 4;
+var995 = NEW_array__NativeArray(var994, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var995)->values[0] = (val*) var982;
+((struct instance_array__NativeArray*)var995)->values[1] = (val*) var984;
+((struct instance_array__NativeArray*)var995)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var995)->values[3] = (val*) var989;
+{
+((void (*)(val*, val*, long))(var993->class->vft[COLOR_array__Array__with_native]))(var993, var995, var994) /* with_native on <var993:Array[Object]>*/;
+}
+}
+{
+var996 = ((val* (*)(val*))(var993->class->vft[COLOR_string__Object__to_s]))(var993) /* to_s on <var993:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var981, var996); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (varonce997) {
+var998 = varonce997;
+} else {
+var999 = "/* allocate ";
+var1000 = 12;
+var1001 = string__NativeString__to_s_with_length(var999, var1000);
+var998 = var1001;
+varonce997 = var998;
+}
+if (varonce1002) {
+var1003 = varonce1002;
+} else {
+var1004 = " */";
+var1005 = 3;
+var1006 = string__NativeString__to_s_with_length(var1004, var1005);
+var1003 = var1006;
+varonce1002 = var1003;
+}
+var1007 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1007 = array_instance Array[Object] */
+var1008 = 3;
+var1009 = NEW_array__NativeArray(var1008, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1009)->values[0] = (val*) var998;
+((struct instance_array__NativeArray*)var1009)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var1009)->values[2] = (val*) var1003;
+{
+((void (*)(val*, val*, long))(var1007->class->vft[COLOR_array__Array__with_native]))(var1007, var1009, var1008) /* with_native on <var1007:Array[Object]>*/;
+}
+}
+{
+var1010 = ((val* (*)(val*))(var1007->class->vft[COLOR_string__Object__to_s]))(var1007) /* to_s on <var1007:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1010); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var1011 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1012) {
+var1013 = varonce1012;
+} else {
+var1014 = " NEW_";
+var1015 = 5;
+var1016 = string__NativeString__to_s_with_length(var1014, var1015);
+var1013 = var1016;
+varonce1012 = var1013;
+}
+if (varonce1017) {
+var1018 = varonce1017;
+} else {
+var1019 = "(const struct type* type) {";
+var1020 = 27;
+var1021 = string__NativeString__to_s_with_length(var1019, var1020);
+var1018 = var1021;
+varonce1017 = var1018;
+}
+var1022 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1022 = array_instance Array[Object] */
+var1023 = 4;
+var1024 = NEW_array__NativeArray(var1023, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1024)->values[0] = (val*) var1011;
+((struct instance_array__NativeArray*)var1024)->values[1] = (val*) var1013;
+((struct instance_array__NativeArray*)var1024)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1024)->values[3] = (val*) var1018;
+{
+((void (*)(val*, val*, long))(var1022->class->vft[COLOR_array__Array__with_native]))(var1022, var1024, var1023) /* with_native on <var1022:Array[Object]>*/;
+}
+}
+{
+var1025 = ((val* (*)(val*))(var1022->class->vft[COLOR_string__Object__to_s]))(var1022) /* to_s on <var1022:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1025); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_dead){
+if (varonce1026) {
+var1027 = varonce1026;
+} else {
+var1028 = " is DEAD";
+var1029 = 8;
+var1030 = string__NativeString__to_s_with_length(var1028, var1029);
+var1027 = var1030;
+varonce1026 = var1027;
+}
+var1031 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1031 = array_instance Array[Object] */
+var1032 = 2;
+var1033 = NEW_array__NativeArray(var1032, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1033)->values[0] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var1033)->values[1] = (val*) var1027;
+{
+((void (*)(val*, val*, long))(var1031->class->vft[COLOR_array__Array__with_native]))(var1031, var1033, var1032) /* with_native on <var1031:Array[Object]>*/;
+}
+}
+{
+var1034 = ((val* (*)(val*))(var1031->class->vft[COLOR_string__Object__to_s]))(var1031) /* to_s on <var1031:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var1034); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (varonce1035) {
+var1036 = varonce1035;
+} else {
+var1037 = "self";
+var1038 = 4;
+var1039 = string__NativeString__to_s_with_length(var1037, var1038);
+var1036 = var1039;
+varonce1035 = var1036;
+}
+{
+var1040 = abstract_compiler__AbstractCompilerVisitor__new_named_var(var_v, var_mtype, var1036);
+}
+var_res1041 = var1040;
+var1042 = 1;
+{
+{ /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res1041,var1042) on <var_res1041:RuntimeVariable> */
+var_res1041->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = var1042; /* _is_exact on <var_res1041:RuntimeVariable> */
+RET_LABEL1043:(void)0;
+}
+}
+if (varonce1044) {
+var1045 = varonce1044;
+} else {
+var1046 = " = nit_alloc(sizeof(struct instance_";
+var1047 = 36;
+var1048 = string__NativeString__to_s_with_length(var1046, var1047);
+var1045 = var1048;
+varonce1044 = var1045;
+}
+{
+var1049 = ((val* (*)(val*))(var_pointer_type->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_pointer_type) /* c_name on <var_pointer_type:MClassType>*/;
+}
+if (varonce1050) {
+var1051 = varonce1050;
+} else {
+var1052 = "));";
+var1053 = 3;
+var1054 = string__NativeString__to_s_with_length(var1052, var1053);
+var1051 = var1054;
+varonce1050 = var1051;
+}
+var1055 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1055 = array_instance Array[Object] */
+var1056 = 4;
+var1057 = NEW_array__NativeArray(var1056, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1057)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1057)->values[1] = (val*) var1045;
+((struct instance_array__NativeArray*)var1057)->values[2] = (val*) var1049;
+((struct instance_array__NativeArray*)var1057)->values[3] = (val*) var1051;
+{
+((void (*)(val*, val*, long))(var1055->class->vft[COLOR_array__Array__with_native]))(var1055, var1057, var1056) /* with_native on <var1055:Array[Object]>*/;
+}
+}
+{
+var1058 = ((val* (*)(val*))(var1055->class->vft[COLOR_string__Object__to_s]))(var1055) /* to_s on <var1055:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1058); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1059) {
+var1060 = varonce1059;
+} else {
+var1061 = "->type = type;";
+var1062 = 14;
+var1063 = string__NativeString__to_s_with_length(var1061, var1062);
+var1060 = var1063;
+varonce1059 = var1060;
+}
+var1064 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1064 = array_instance Array[Object] */
+var1065 = 2;
+var1066 = NEW_array__NativeArray(var1065, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1066)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1066)->values[1] = (val*) var1060;
+{
+((void (*)(val*, val*, long))(var1064->class->vft[COLOR_array__Array__with_native]))(var1064, var1066, var1065) /* with_native on <var1064:Array[Object]>*/;
+}
+}
+{
+var1067 = ((val* (*)(val*))(var1064->class->vft[COLOR_string__Object__to_s]))(var1064) /* to_s on <var1064:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1067); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1068) {
+var1069 = varonce1068;
+} else {
+var1070 = "type";
+var1071 = 4;
+var1072 = string__NativeString__to_s_with_length(var1070, var1071);
+var1069 = var1072;
+varonce1068 = var1069;
+}
+{
+separate_compiler__SeparateCompiler__hardening_live_type(self, var_v, var1069); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
+}
+if (varonce1073) {
+var1074 = varonce1073;
+} else {
+var1075 = "class_";
+var1076 = 6;
+var1077 = string__NativeString__to_s_with_length(var1075, var1076);
+var1074 = var1077;
+varonce1073 = var1074;
+}
+var1078 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1078 = array_instance Array[Object] */
+var1079 = 2;
+var1080 = NEW_array__NativeArray(var1079, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1080)->values[0] = (val*) var1074;
+((struct instance_array__NativeArray*)var1080)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1078->class->vft[COLOR_array__Array__with_native]))(var1078, var1080, var1079) /* with_native on <var1078:Array[Object]>*/;
+}
+}
+{
+var1081 = ((val* (*)(val*))(var1078->class->vft[COLOR_string__Object__to_s]))(var1078) /* to_s on <var1078:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var1081); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1082) {
+var1083 = varonce1082;
+} else {
+var1084 = "->class = &class_";
+var1085 = 17;
+var1086 = string__NativeString__to_s_with_length(var1084, var1085);
+var1083 = var1086;
+varonce1082 = var1083;
+}
+if (varonce1087) {
+var1088 = varonce1087;
+} else {
+var1089 = ";";
+var1090 = 1;
+var1091 = string__NativeString__to_s_with_length(var1089, var1090);
+var1088 = var1091;
+varonce1087 = var1088;
+}
+var1092 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1092 = array_instance Array[Object] */
+var1093 = 4;
+var1094 = NEW_array__NativeArray(var1093, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1094)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1094)->values[1] = (val*) var1083;
+((struct instance_array__NativeArray*)var1094)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1094)->values[3] = (val*) var1088;
+{
+((void (*)(val*, val*, long))(var1092->class->vft[COLOR_array__Array__with_native]))(var1092, var1094, var1093) /* with_native on <var1092:Array[Object]>*/;
+}
+}
+{
+var1095 = ((val* (*)(val*))(var1092->class->vft[COLOR_string__Object__to_s]))(var1092) /* to_s on <var1092:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1095); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1096) {
+var1097 = varonce1096;
+} else {
+var1098 = "((struct instance_";
+var1099 = 18;
+var1100 = string__NativeString__to_s_with_length(var1098, var1099);
+var1097 = var1100;
+varonce1096 = var1097;
+}
+{
+var1101 = ((val* (*)(val*))(var_pointer_type->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_pointer_type) /* c_name on <var_pointer_type:MClassType>*/;
+}
+if (varonce1102) {
+var1103 = varonce1102;
+} else {
+var1104 = "*)";
+var1105 = 2;
+var1106 = string__NativeString__to_s_with_length(var1104, var1105);
+var1103 = var1106;
+varonce1102 = var1103;
+}
+if (varonce1107) {
+var1108 = varonce1107;
+} else {
+var1109 = ")->value = NULL;";
+var1110 = 16;
+var1111 = string__NativeString__to_s_with_length(var1109, var1110);
+var1108 = var1111;
+varonce1107 = var1108;
+}
+var1112 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1112 = array_instance Array[Object] */
+var1113 = 5;
+var1114 = NEW_array__NativeArray(var1113, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1114)->values[0] = (val*) var1097;
+((struct instance_array__NativeArray*)var1114)->values[1] = (val*) var1101;
+((struct instance_array__NativeArray*)var1114)->values[2] = (val*) var1103;
+((struct instance_array__NativeArray*)var1114)->values[3] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1114)->values[4] = (val*) var1108;
+{
+((void (*)(val*, val*, long))(var1112->class->vft[COLOR_array__Array__with_native]))(var1112, var1114, var1113) /* with_native on <var1112:Array[Object]>*/;
+}
+}
+{
+var1115 = ((val* (*)(val*))(var1112->class->vft[COLOR_string__Object__to_s]))(var1112) /* to_s on <var1112:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1115); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1116) {
+var1117 = varonce1116;
+} else {
+var1118 = "return ";
+var1119 = 7;
+var1120 = string__NativeString__to_s_with_length(var1118, var1119);
+var1117 = var1120;
+varonce1116 = var1117;
+}
+if (varonce1121) {
+var1122 = varonce1121;
+} else {
+var1123 = ";";
+var1124 = 1;
+var1125 = string__NativeString__to_s_with_length(var1123, var1124);
+var1122 = var1125;
+varonce1121 = var1122;
+}
+var1126 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1126 = array_instance Array[Object] */
+var1127 = 3;
+var1128 = NEW_array__NativeArray(var1127, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1128)->values[0] = (val*) var1117;
+((struct instance_array__NativeArray*)var1128)->values[1] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1128)->values[2] = (val*) var1122;
+{
+((void (*)(val*, val*, long))(var1126->class->vft[COLOR_array__Array__with_native]))(var1126, var1128, var1127) /* with_native on <var1126:Array[Object]>*/;
+}
+}
+{
+var1129 = ((val* (*)(val*))(var1126->class->vft[COLOR_string__Object__to_s]))(var1126) /* to_s on <var1126:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1129); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (varonce1130) {
+var1131 = varonce1130;
+} else {
+var1132 = "}";
+var1133 = 1;
+var1134 = string__NativeString__to_s_with_length(var1132, var1133);
+var1131 = var1134;
+varonce1130 = var1131;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1131); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+goto RET_LABEL;
+} else {
+}
+}
+}
+if (varonce1135) {
+var1136 = varonce1135;
+} else {
+var1137 = "NEW_";
+var1138 = 4;
+var1139 = string__NativeString__to_s_with_length(var1137, var1138);
+var1136 = var1139;
+varonce1135 = var1136;
+}
+var1140 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1140 = array_instance Array[Object] */
+var1141 = 2;
+var1142 = NEW_array__NativeArray(var1141, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1142)->values[0] = (val*) var1136;
+((struct instance_array__NativeArray*)var1142)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1140->class->vft[COLOR_array__Array__with_native]))(var1140, var1142, var1141) /* with_native on <var1140:Array[Object]>*/;
+}
+}
+{
+var1143 = ((val* (*)(val*))(var1140->class->vft[COLOR_string__Object__to_s]))(var1140) /* to_s on <var1140:Array[Object]>*/;
+}
+{
+var1144 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1145) {
+var1146 = varonce1145;
+} else {
+var1147 = " NEW_";
+var1148 = 5;
+var1149 = string__NativeString__to_s_with_length(var1147, var1148);
+var1146 = var1149;
+varonce1145 = var1146;
+}
+if (varonce1150) {
+var1151 = varonce1150;
+} else {
+var1152 = "(const struct type* type);";
+var1153 = 26;
+var1154 = string__NativeString__to_s_with_length(var1152, var1153);
+var1151 = var1154;
+varonce1150 = var1151;
+}
+var1155 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1155 = array_instance Array[Object] */
+var1156 = 4;
+var1157 = NEW_array__NativeArray(var1156, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1157)->values[0] = (val*) var1144;
+((struct instance_array__NativeArray*)var1157)->values[1] = (val*) var1146;
+((struct instance_array__NativeArray*)var1157)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1157)->values[3] = (val*) var1151;
+{
+((void (*)(val*, val*, long))(var1155->class->vft[COLOR_array__Array__with_native]))(var1155, var1157, var1156) /* with_native on <var1155:Array[Object]>*/;
+}
+}
+{
+var1158 = ((val* (*)(val*))(var1155->class->vft[COLOR_string__Object__to_s]))(var1155) /* to_s on <var1155:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var1143, var1158); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (varonce1159) {
+var1160 = varonce1159;
+} else {
+var1161 = "/* allocate ";
+var1162 = 12;
+var1163 = string__NativeString__to_s_with_length(var1161, var1162);
+var1160 = var1163;
+varonce1159 = var1160;
+}
+if (varonce1164) {
+var1165 = varonce1164;
+} else {
+var1166 = " */";
+var1167 = 3;
+var1168 = string__NativeString__to_s_with_length(var1166, var1167);
+var1165 = var1168;
+varonce1164 = var1165;
+}
+var1169 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1169 = array_instance Array[Object] */
+var1170 = 3;
+var1171 = NEW_array__NativeArray(var1170, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1171)->values[0] = (val*) var1160;
+((struct instance_array__NativeArray*)var1171)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var1171)->values[2] = (val*) var1165;
+{
+((void (*)(val*, val*, long))(var1169->class->vft[COLOR_array__Array__with_native]))(var1169, var1171, var1170) /* with_native on <var1169:Array[Object]>*/;
+}
+}
+{
+var1172 = ((val* (*)(val*))(var1169->class->vft[COLOR_string__Object__to_s]))(var1169) /* to_s on <var1169:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1172); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var1173 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1174) {
+var1175 = varonce1174;
+} else {
+var1176 = " NEW_";
+var1177 = 5;
+var1178 = string__NativeString__to_s_with_length(var1176, var1177);
+var1175 = var1178;
+varonce1174 = var1175;
+}
+if (varonce1179) {
+var1180 = varonce1179;
+} else {
+var1181 = "(const struct type* type) {";
+var1182 = 27;
+var1183 = string__NativeString__to_s_with_length(var1181, var1182);
+var1180 = var1183;
+varonce1179 = var1180;
+}
+var1184 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1184 = array_instance Array[Object] */
+var1185 = 4;
+var1186 = NEW_array__NativeArray(var1185, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1186)->values[0] = (val*) var1173;
+((struct instance_array__NativeArray*)var1186)->values[1] = (val*) var1175;
+((struct instance_array__NativeArray*)var1186)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1186)->values[3] = (val*) var1180;
+{
+((void (*)(val*, val*, long))(var1184->class->vft[COLOR_array__Array__with_native]))(var1184, var1186, var1185) /* with_native on <var1184:Array[Object]>*/;
+}
+}
+{
+var1187 = ((val* (*)(val*))(var1184->class->vft[COLOR_string__Object__to_s]))(var1184) /* to_s on <var1184:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1187); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_dead){
+if (varonce1188) {
+var1189 = varonce1188;
+} else {
+var1190 = " is DEAD";
+var1191 = 8;
+var1192 = string__NativeString__to_s_with_length(var1190, var1191);
+var1189 = var1192;
+varonce1188 = var1189;
+}
+var1193 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1193 = array_instance Array[Object] */
+var1194 = 2;
+var1195 = NEW_array__NativeArray(var1194, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1195)->values[0] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var1195)->values[1] = (val*) var1189;
+{
+((void (*)(val*, val*, long))(var1193->class->vft[COLOR_array__Array__with_native]))(var1193, var1195, var1194) /* with_native on <var1193:Array[Object]>*/;
+}
+}
+{
+var1196 = ((val* (*)(val*))(var1193->class->vft[COLOR_string__Object__to_s]))(var1193) /* to_s on <var1193:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var1196); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (varonce1197) {
+var1198 = varonce1197;
+} else {
+var1199 = "self";
+var1200 = 4;
+var1201 = string__NativeString__to_s_with_length(var1199, var1200);
+var1198 = var1201;
+varonce1197 = var1198;
+}
+{
+var1202 = abstract_compiler__AbstractCompilerVisitor__new_named_var(var_v, var_mtype, var1198);
+}
+var_res1203 = var1202;
+var1204 = 1;
+{
+{ /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res1203,var1204) on <var_res1203:RuntimeVariable> */
+var_res1203->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = var1204; /* _is_exact on <var_res1203:RuntimeVariable> */
+RET_LABEL1205:(void)0;
+}
+}
+if (varonce1206) {
+var1207 = varonce1206;
+} else {
+var1208 = " = nit_alloc(sizeof(struct instance) + ";
+var1209 = 39;
+var1210 = string__NativeString__to_s_with_length(var1208, var1209);
+var1207 = var1210;
+varonce1206 = var1207;
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var_attrs) on <var_attrs:Array[nullable MPropDef]> */
+var1213 = var_attrs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_attrs:Array[nullable MPropDef]> */
+var1211 = var1213;
+RET_LABEL1212:(void)0;
+}
+}
+if (varonce1214) {
+var1215 = varonce1214;
+} else {
+var1216 = "*sizeof(nitattribute_t));";
+var1217 = 25;
+var1218 = string__NativeString__to_s_with_length(var1216, var1217);
+var1215 = var1218;
+varonce1214 = var1215;
+}
+var1219 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1219 = array_instance Array[Object] */
+var1220 = 4;
+var1221 = NEW_array__NativeArray(var1220, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1221)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1221)->values[1] = (val*) var1207;
+var1222 = BOX_kernel__Int(var1211); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var1221)->values[2] = (val*) var1222;
+((struct instance_array__NativeArray*)var1221)->values[3] = (val*) var1215;
+{
+((void (*)(val*, val*, long))(var1219->class->vft[COLOR_array__Array__with_native]))(var1219, var1221, var1220) /* with_native on <var1219:Array[Object]>*/;
+}
+}
+{
+var1223 = ((val* (*)(val*))(var1219->class->vft[COLOR_string__Object__to_s]))(var1219) /* to_s on <var1219:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1223); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1224) {
+var1225 = varonce1224;
+} else {
+var1226 = "->type = type;";
+var1227 = 14;
+var1228 = string__NativeString__to_s_with_length(var1226, var1227);
+var1225 = var1228;
+varonce1224 = var1225;
+}
+var1229 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1229 = array_instance Array[Object] */
+var1230 = 2;
+var1231 = NEW_array__NativeArray(var1230, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1231)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1231)->values[1] = (val*) var1225;
+{
+((void (*)(val*, val*, long))(var1229->class->vft[COLOR_array__Array__with_native]))(var1229, var1231, var1230) /* with_native on <var1229:Array[Object]>*/;
+}
+}
+{
+var1232 = ((val* (*)(val*))(var1229->class->vft[COLOR_string__Object__to_s]))(var1229) /* to_s on <var1229:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1232); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1233) {
+var1234 = varonce1233;
+} else {
+var1235 = "type";
+var1236 = 4;
+var1237 = string__NativeString__to_s_with_length(var1235, var1236);
+var1234 = var1237;
+varonce1233 = var1234;
+}
+{
+separate_compiler__SeparateCompiler__hardening_live_type(self, var_v, var1234); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
+}
+if (varonce1238) {
+var1239 = varonce1238;
+} else {
+var1240 = "class_";
+var1241 = 6;
+var1242 = string__NativeString__to_s_with_length(var1240, var1241);
+var1239 = var1242;
+varonce1238 = var1239;
+}
+var1243 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1243 = array_instance Array[Object] */
+var1244 = 2;
+var1245 = NEW_array__NativeArray(var1244, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1245)->values[0] = (val*) var1239;
+((struct instance_array__NativeArray*)var1245)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1243->class->vft[COLOR_array__Array__with_native]))(var1243, var1245, var1244) /* with_native on <var1243:Array[Object]>*/;
+}
+}
+{
+var1246 = ((val* (*)(val*))(var1243->class->vft[COLOR_string__Object__to_s]))(var1243) /* to_s on <var1243:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var1246); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1247) {
+var1248 = varonce1247;
+} else {
+var1249 = "->class = &class_";
+var1250 = 17;
+var1251 = string__NativeString__to_s_with_length(var1249, var1250);
+var1248 = var1251;
+varonce1247 = var1248;
+}
+if (varonce1252) {
+var1253 = varonce1252;
+} else {
+var1254 = ";";
+var1255 = 1;
+var1256 = string__NativeString__to_s_with_length(var1254, var1255);
+var1253 = var1256;
+varonce1252 = var1253;
+}
+var1257 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1257 = array_instance Array[Object] */
+var1258 = 4;
+var1259 = NEW_array__NativeArray(var1258, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1259)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1259)->values[1] = (val*) var1248;
+((struct instance_array__NativeArray*)var1259)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1259)->values[3] = (val*) var1253;
+{
+((void (*)(val*, val*, long))(var1257->class->vft[COLOR_array__Array__with_native]))(var1257, var1259, var1258) /* with_native on <var1257:Array[Object]>*/;
+}
+}
+{
+var1260 = ((val* (*)(val*))(var1257->class->vft[COLOR_string__Object__to_s]))(var1257) /* to_s on <var1257:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1260); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+{
+abstract_compiler__AbstractCompiler__generate_init_attr(self, var_v, var_res1203, var_mtype); /* Direct call abstract_compiler#AbstractCompiler#generate_init_attr on <self:SeparateCompiler>*/
+}
+{
+abstract_compiler__AbstractCompilerVisitor__set_finalizer(var_v, var_res1203); /* Direct call abstract_compiler#AbstractCompilerVisitor#set_finalizer on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1261) {
+var1262 = varonce1261;
+} else {
+var1263 = "return ";
+var1264 = 7;
+var1265 = string__NativeString__to_s_with_length(var1263, var1264);
+var1262 = var1265;
+varonce1261 = var1262;
+}
+if (varonce1266) {
+var1267 = varonce1266;
+} else {
+var1268 = ";";
+var1269 = 1;
+var1270 = string__NativeString__to_s_with_length(var1268, var1269);
+var1267 = var1270;
+varonce1266 = var1267;
+}
+var1271 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1271 = array_instance Array[Object] */
+var1272 = 3;
+var1273 = NEW_array__NativeArray(var1272, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1273)->values[0] = (val*) var1262;
+((struct instance_array__NativeArray*)var1273)->values[1] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1273)->values[2] = (val*) var1267;
+{
+((void (*)(val*, val*, long))(var1271->class->vft[COLOR_array__Array__with_native]))(var1271, var1273, var1272) /* with_native on <var1271:Array[Object]>*/;
+}
+}
+{
+var1274 = ((val* (*)(val*))(var1271->class->vft[COLOR_string__Object__to_s]))(var1271) /* to_s on <var1271:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1274); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (varonce1275) {
+var1276 = varonce1275;
+} else {
+var1277 = "}";
+var1278 = 1;
+var1279 = string__NativeString__to_s_with_length(var1277, var1278);
+var1276 = var1279;
+varonce1275 = var1276;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1276); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: Object, MClass) */
+void VIRTUAL_separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
+separate_compiler__SeparateCompiler__compile_class_to_c(self, p0); /* Direct call separate_compiler#SeparateCompiler#compile_class_to_c on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#hardening_live_type for (self: SeparateCompiler, SeparateCompilerVisitor, String) */
+void separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var_t /* var t: String */;
+val* var1 /* : AbstractCompiler */;
+val* var3 /* : AbstractCompiler */;
+val* var4 /* : ModelBuilder */;
+val* var6 /* : ModelBuilder */;
+val* var7 /* : ToolContext */;
+val* var9 /* : ToolContext */;
+val* var10 /* : OptionBool */;
+val* var12 /* : OptionBool */;
+val* var13 /* : nullable Object */;
+val* var15 /* : nullable Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+static val* varonce;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : FlatString */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : FlatString */;
+val* var27 /* : Array[Object] */;
+long var28 /* : Int */;
+val* var29 /* : NativeArray[Object] */;
+val* var30 /* : String */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+long var34 /* : Int */;
+val* var35 /* : FlatString */;
+static val* varonce36;
+val* var37 /* : String */;
+char* var38 /* : NativeString */;
+long var39 /* : Int */;
+val* var40 /* : FlatString */;
+static val* varonce41;
+val* var42 /* : String */;
+char* var43 /* : NativeString */;
+long var44 /* : Int */;
+val* var45 /* : FlatString */;
+static val* varonce46;
+val* var47 /* : String */;
+char* var48 /* : NativeString */;
+long var49 /* : Int */;
+val* var50 /* : FlatString */;
+val* var51 /* : Array[Object] */;
+long var52 /* : Int */;
+val* var53 /* : NativeArray[Object] */;
+val* var54 /* : String */;
+static val* varonce55;
+val* var56 /* : String */;
+char* var57 /* : NativeString */;
+long var58 /* : Int */;
+val* var59 /* : FlatString */;
+static val* varonce60;
+val* var61 /* : String */;
+char* var62 /* : NativeString */;
+long var63 /* : Int */;
+val* var64 /* : FlatString */;
+val* var65 /* : Array[Object] */;
+long var66 /* : Int */;
+val* var67 /* : NativeArray[Object] */;
+val* var68 /* : String */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+long var72 /* : Int */;
+val* var73 /* : FlatString */;
+static val* varonce74;
+val* var75 /* : String */;
+char* var76 /* : NativeString */;
+long var77 /* : Int */;
+val* var78 /* : FlatString */;
+/* Covariant cast for argument 0 (v) <p0:SeparateCompilerVisitor> isa VISITOR */
+/* <p0:SeparateCompilerVisitor> isa VISITOR */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 826);
+show_backtrace(1);
+}
+var_v = p0;
+var_t = p1;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:SeparateCompilerVisitor> */
+var3 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:SeparateCompilerVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
+var6 = var1->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (var4) on <var4:ModelBuilder> */
+var9 = var4->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var4:ModelBuilder> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#ToolContext#opt_hardening (var7) on <var7:ToolContext> */
+var12 = var7->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var7:ToolContext> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var10) on <var10:OptionBool> */
+var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+var16 = ((struct instance_kernel__Bool*)var13)->value; /* autounbox from nullable Object to Bool */;
+var17 = !var16;
+if (var17){
+goto RET_LABEL;
+} else {
+}
+if (varonce) {
+var18 = varonce;
+} else {
+var19 = "if(";
+var20 = 3;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce = var18;
+}
+if (varonce22) {
+var23 = varonce22;
+} else {
+var24 = " == NULL) {";
+var25 = 11;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce22 = var23;
+}
+var27 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var27 = array_instance Array[Object] */
+var28 = 3;
+var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var29)->values[0] = (val*) var18;
+((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var29)->values[2] = (val*) var23;
+{
+((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
+}
+}
+{
+var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce31) {
+var32 = varonce31;
+} else {
+var33 = "type null";
+var34 = 9;
+var35 = string__NativeString__to_s_with_length(var33, var34);
+var32 = var35;
+varonce31 = var32;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce36) {
+var37 = varonce36;
+} else {
+var38 = "}";
+var39 = 1;
+var40 = string__NativeString__to_s_with_length(var38, var39);
+var37 = var40;
+varonce36 = var37;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce41) {
+var42 = varonce41;
+} else {
+var43 = "if(";
+var44 = 3;
+var45 = string__NativeString__to_s_with_length(var43, var44);
+var42 = var45;
+varonce41 = var42;
+}
+if (varonce46) {
+var47 = varonce46;
+} else {
+var48 = "->table_size == 0) {";
+var49 = 20;
+var50 = string__NativeString__to_s_with_length(var48, var49);
+var47 = var50;
+varonce46 = var47;
+}
+var51 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var51 = array_instance Array[Object] */
+var52 = 3;
+var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var53)->values[0] = (val*) var42;
+((struct instance_array__NativeArray*)var53)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
+{
+((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
+}
+}
+{
+var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce55) {
+var56 = varonce55;
+} else {
+var57 = "PRINT_ERROR(\"Insantiation of a dead type: %s\\n\", ";
+var58 = 49;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
+}
+if (varonce60) {
+var61 = varonce60;
+} else {
+var62 = "->name);";
+var63 = 8;
+var64 = string__NativeString__to_s_with_length(var62, var63);
+var61 = var64;
+varonce60 = var61;
+}
+var65 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var65 = array_instance Array[Object] */
+var66 = 3;
+var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56;
+((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61;
+{
+((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
+}
+}
+{
+var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var68); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce69) {
+var70 = varonce69;
+} else {
+var71 = "type dead";
+var72 = 9;
+var73 = string__NativeString__to_s_with_length(var71, var72);
+var70 = var73;
+varonce69 = var70;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var70); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce74) {
+var75 = varonce74;
+} else {
+var76 = "}";
+var77 = 1;
+var78 = string__NativeString__to_s_with_length(var76, var77);
+var75 = var78;
+varonce74 = var75;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var75); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#hardening_live_type for (self: Object, SeparateCompilerVisitor, String) */
+void VIRTUAL_separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
+separate_compiler__SeparateCompiler__hardening_live_type(self, p0, p1); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#new_visitor for (self: SeparateCompiler): SeparateCompilerVisitor */
+val* separate_compiler__SeparateCompiler__new_visitor(val* self) {
+val* var /* : SeparateCompilerVisitor */;
+val* var1 /* : SeparateCompilerVisitor */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+var1 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
+{
+abstract_compiler__AbstractCompilerVisitor__init(var1, self); /* Direct call abstract_compiler#AbstractCompilerVisitor#init on <var1:SeparateCompilerVisitor>*/
+}
+/* <var1:SeparateCompilerVisitor> isa VISITOR */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= var1->type->table_size) {
+var2 = 0;
+} else {
+var2 = var1->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var2)) {
+var_class_name = var1 == NULL ? "null" : var1->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 839);
+show_backtrace(1);
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
+val* VIRTUAL_separate_compiler__SeparateCompiler__new_visitor(val* self) {
+val* var /* : AbstractCompilerVisitor */;
+val* var1 /* : SeparateCompilerVisitor */;
+var1 = separate_compiler__SeparateCompiler__new_visitor(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables for (self: SeparateCompiler): Map[MType, Array[nullable MType]] */
+val* separate_compiler__SeparateCompiler__type_tables(val* self) {
+val* var /* : Map[MType, Array[nullable MType]] */;
+val* var1 /* : Map[MType, Array[nullable MType]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 843);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables for (self: Object): Map[MType, Array[nullable MType]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__type_tables(val* self) {
+val* var /* : Map[MType, Array[nullable MType]] */;
+val* var1 /* : Map[MType, Array[nullable MType]] */;
+val* var3 /* : Map[MType, Array[nullable MType]] */;
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 843);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables= for (self: SeparateCompiler, Map[MType, Array[nullable MType]]) */
+void separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val = p0; /* _type_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#type_tables= for (self: Object, Map[MType, Array[nullable MType]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#type_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val = p0; /* _type_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables for (self: SeparateCompiler): Map[MClassType, Array[nullable MType]] */
+val* separate_compiler__SeparateCompiler__resolution_tables(val* self) {
+val* var /* : Map[MClassType, Array[nullable MType]] */;
+val* var1 /* : Map[MClassType, Array[nullable MType]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 844);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables for (self: Object): Map[MClassType, Array[nullable MType]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables(val* self) {
+val* var /* : Map[MClassType, Array[nullable MType]] */;
+val* var1 /* : Map[MClassType, Array[nullable MType]] */;
+val* var3 /* : Map[MClassType, Array[nullable MType]] */;
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 844);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables= for (self: SeparateCompiler, Map[MClassType, Array[nullable MType]]) */
+void separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val = p0; /* _resolution_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables= for (self: Object, Map[MClassType, Array[nullable MType]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val = p0; /* _resolution_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#method_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
+val* separate_compiler__SeparateCompiler__method_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#method_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__method_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
+{ /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#method_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
+void separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val = p0; /* _method_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#method_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#method_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val = p0; /* _method_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
+val* separate_compiler__SeparateCompiler__attr_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__attr_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
+void separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val = p0; /* _attr_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val = p0; /* _attr_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_stats for (self: SeparateCompiler) */
+void separate_compiler__SeparateCompiler__display_stats(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 /* : ModelBuilder */;
+val* var15 /* : ModelBuilder */;
+val* var16 /* : ToolContext */;
+val* var18 /* : ToolContext */;
+val* var19 /* : OptionBool */;
+val* var21 /* : OptionBool */;
+val* var22 /* : nullable Object */;
+val* var24 /* : nullable Object */;
+short int var25 /* : Bool */;
+val* var26 /* : ModelBuilder */;
+val* var28 /* : ModelBuilder */;
+val* var29 /* : ToolContext */;
+val* var31 /* : ToolContext */;
+val* var_tc /* var tc: ToolContext */;
+static val* varonce;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+long var34 /* : Int */;
+val* var35 /* : FlatString */;
+long var36 /* : Int */;
+val* var37 /* : ModelBuilder */;
+val* var39 /* : ModelBuilder */;
+long var40 /* : Int */;
+long var42 /* : Int */;
+val* var43 /* : ModelBuilder */;
+val* var45 /* : ModelBuilder */;
+long var46 /* : 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 /* : ModelBuilder */;
+val* var55 /* : ModelBuilder */;
+long var56 /* : Int */;
+long var58 /* : Int */;
+long var59 /* : Int */;
+short int var61 /* : Bool */;
+int cltype62;
+int idtype63;
+const char* var_class_name64;
+long var65 /* : Int */;
+long var_nb_invok_total /* var nb_invok_total: Int */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+long var69 /* : Int */;
+val* var70 /* : FlatString */;
+val* var71 /* : Array[Object] */;
+long var72 /* : Int */;
+val* var73 /* : NativeArray[Object] */;
+val* var74 /* : Object */;
+val* var75 /* : String */;
+long var76 /* : Int */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+long var80 /* : Int */;
+val* var81 /* : FlatString */;
+val* var82 /* : ModelBuilder */;
+val* var84 /* : ModelBuilder */;
+long var85 /* : Int */;
+long var87 /* : Int */;
+static val* varonce88;
+val* var89 /* : String */;
+char* var90 /* : NativeString */;
+long var91 /* : Int */;
+val* var92 /* : FlatString */;
+val* var93 /* : ModelBuilder */;
+val* var95 /* : ModelBuilder */;
+long var96 /* : Int */;
+long var98 /* : Int */;
+val* var99 /* : String */;
+static val* varonce100;
+val* var101 /* : String */;
+char* var102 /* : NativeString */;
+long var103 /* : Int */;
+val* var104 /* : FlatString */;
+val* var105 /* : Array[Object] */;
+long var106 /* : Int */;
+val* var107 /* : NativeArray[Object] */;
+val* var108 /* : Object */;