+{
+var144 = core__abstract_text___Collection___join(var_hints, var129, var137);
+}
+((struct instance_core__NativeArray*)var94)->values[5]=var144;
+{
+var145 = ((val*(*)(val* self))(var94->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var94); /* native_to_s on <var94:NativeArray[String]>*/
+}
+varonce93 = var94;
+{
+nitc___nitc__ModelBuilder___error(self, var_qid, var145); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
+}
+{
+core___core__AbstractArray___core__abstract_collection__RemovableCollection__clear(var_hints); /* Direct call array$AbstractArray$clear on <var_hints:Array[String]>*/
+}
+if (var_all_classes == NULL) {
+var146 = 0; /* is null */
+} else {
+var146 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$!= (var_all_classes,((val*)NULL)) on <var_all_classes:nullable Array[MClass]> */
+var_other = ((val*)NULL);
+{
+var149 = ((short int(*)(val* self, val* p0))(var_all_classes->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_all_classes, var_other); /* == on <var_all_classes:nullable Array[MClass](Array[MClass])>*/
+}
+var150 = !var149;
+var147 = var150;
+goto RET_LABEL148;
+RET_LABEL148:(void)0;
+}
+var146 = var147;
+}
+if (var146){
+var_151 = var_all_classes;
+{
+var152 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_151);
+}
+var_153 = var152;
+for(;;) {
+{
+var154 = ((short int(*)(val* self))((((long)var_153&3)?class_info[((long)var_153&3)]:var_153->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_153); /* is_ok on <var_153:IndexedIterator[MClass]>*/
+}
+if (var154){
+} else {
+goto BREAK_label155;
+}
+{
+var156 = ((val*(*)(val* self))((((long)var_153&3)?class_info[((long)var_153&3)]:var_153->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_153); /* item on <var_153:IndexedIterator[MClass]>*/
+}
+var_c157 = var156;
+{
+{ /* Inline mmodule$MModule$in_importation (var_mmodule) on <var_mmodule:MModule> */
+var160 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var160 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
+fatal_exit(1);
+}
+var158 = var160;
+RET_LABEL159:(void)0;
+}
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c157) on <var_c157:MClass> */
+var163 = var_c157->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c157:MClass> */
+if (unlikely(var163 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var161 = var163;
+RET_LABEL162:(void)0;
+}
+}
+{
+var164 = poset___poset__POSetElement____60d_61d(var158, var161);
+}
+var165 = !var164;
+if (var165){
+goto BREAK_label166;
+} else {
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c157) on <var_c157:MClass> */
+var169 = var_c157->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c157:MClass> */
+if (unlikely(var169 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var167 = var169;
+RET_LABEL168:(void)0;
+}
+}
+{
+{ /* Inline model$MClass$visibility (var_c157) on <var_c157:MClass> */
+var172 = var_c157->attrs[COLOR_nitc__model__MClass___visibility].val; /* _visibility on <var_c157:MClass> */
+if (unlikely(var172 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 476);
+fatal_exit(1);
+}
+var170 = var172;
+RET_LABEL171:(void)0;
+}
+}
+{
+var173 = nitc___nitc__MModule___is_visible(var_mmodule, var167, var170);
+}
+if (var173){
+goto BREAK_label166;
+} else {
+}
+{
+var174 = nitc__modelbuilder_base___AQclassid___accept(var_qid, var_c157);
+}
+var175 = !var174;
+if (var175){
+goto BREAK_label166;
+} else {
+}
+if (unlikely(varonce176==NULL)) {
+var177 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
+if (likely(varonce178!=NULL)) {
+var179 = varonce178;
+} else {
+var180 = "Error: class `";
+var182 = (val*)(14l<<2|1);
+var183 = (val*)(14l<<2|1);
+var184 = (val*)((long)(0)<<2|3);
+var185 = (val*)((long)(0)<<2|3);
+var181 = core__flat___CString___to_s_unsafe(var180, var182, var183, var184, var185);
+var179 = var181;
+varonce178 = var179;
+}
+((struct instance_core__NativeArray*)var177)->values[0]=var179;
+if (likely(varonce186!=NULL)) {
+var187 = varonce186;
+} else {
+var188 = "` not visible in module `";
+var190 = (val*)(25l<<2|1);
+var191 = (val*)(25l<<2|1);
+var192 = (val*)((long)(0)<<2|3);
+var193 = (val*)((long)(0)<<2|3);
+var189 = core__flat___CString___to_s_unsafe(var188, var190, var191, var192, var193);
+var187 = var189;
+varonce186 = var187;
+}
+((struct instance_core__NativeArray*)var177)->values[2]=var187;
+if (likely(varonce194!=NULL)) {
+var195 = varonce194;
+} else {
+var196 = "`.";
+var198 = (val*)(2l<<2|1);
+var199 = (val*)(2l<<2|1);
+var200 = (val*)((long)(0)<<2|3);
+var201 = (val*)((long)(0)<<2|3);
+var197 = core__flat___CString___to_s_unsafe(var196, var198, var199, var200, var201);
+var195 = var197;
+varonce194 = var195;
+}
+((struct instance_core__NativeArray*)var177)->values[4]=var195;
+} else {
+var177 = varonce176;
+varonce176 = NULL;
+}
+{
+var202 = nitc___nitc__MClass___nitc__model_base__MEntity__full_name(var_c157);
+}
+((struct instance_core__NativeArray*)var177)->values[1]=var202;
+{
+var203 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
+}
+((struct instance_core__NativeArray*)var177)->values[3]=var203;
+{
+var204 = ((val*(*)(val* self))(var177->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var177); /* native_to_s on <var177:NativeArray[String]>*/
+}
+varonce176 = var177;
+{
+nitc___nitc__ModelBuilder___error(self, var_qid, var204); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+BREAK_label166: (void)0;
+{
+((void(*)(val* self))((((long)var_153&3)?class_info[((long)var_153&3)]:var_153->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_153); /* next on <var_153:IndexedIterator[MClass]>*/
+}
+}
+BREAK_label155: (void)0;
+{
+((void(*)(val* self))((((long)var_153&3)?class_info[((long)var_153&3)]:var_153->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_153); /* finish on <var_153:IndexedIterator[MClass]>*/
+}
+} else {
+}
+if (var_all_classes == NULL) {
+var205 = 0; /* is null */
+} else {
+var205 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$!= (var_all_classes,((val*)NULL)) on <var_all_classes:nullable Array[MClass]> */
+var_other = ((val*)NULL);
+{
+var208 = ((short int(*)(val* self, val* p0))(var_all_classes->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_all_classes, var_other); /* == on <var_all_classes:nullable Array[MClass](Array[MClass])>*/
+}
+var209 = !var208;
+var206 = var209;
+goto RET_LABEL207;
+RET_LABEL207:(void)0;
+}
+var205 = var206;
+}
+if (var205){
+var_210 = var_all_classes;
+{
+var211 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_210);
+}
+var_212 = var211;
+for(;;) {
+{
+var213 = ((short int(*)(val* self))((((long)var_212&3)?class_info[((long)var_212&3)]:var_212->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_212); /* is_ok on <var_212:IndexedIterator[MClass]>*/
+}
+if (var213){
+} else {
+goto BREAK_label214;
+}
+{
+var215 = ((val*(*)(val* self))((((long)var_212&3)?class_info[((long)var_212&3)]:var_212->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_212); /* item on <var_212:IndexedIterator[MClass]>*/
+}
+var_c216 = var215;
+{
+{ /* Inline mmodule$MModule$in_importation (var_mmodule) on <var_mmodule:MModule> */
+var219 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var219 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
+fatal_exit(1);
+}
+var217 = var219;
+RET_LABEL218:(void)0;
+}
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c216) on <var_c216:MClass> */
+var222 = var_c216->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c216:MClass> */
+if (unlikely(var222 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var220 = var222;
+RET_LABEL221:(void)0;
+}
+}
+{
+var223 = poset___poset__POSetElement____60d_61d(var217, var220);
+}
+if (var223){
+goto BREAK_label224;
+} else {
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c216) on <var_c216:MClass> */
+var227 = var_c216->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c216:MClass> */
+if (unlikely(var227 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var225 = var227;
+RET_LABEL226:(void)0;
+}
+}
+{
+{ /* Inline mmodule$MModule$in_importation (var225) on <var225:MModule> */
+var230 = var225->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var225:MModule> */
+if (unlikely(var230 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
+fatal_exit(1);
+}
+var228 = var230;
+RET_LABEL229:(void)0;
+}
+}
+{
+var231 = poset___poset__POSetElement____60d_61d(var228, var_mmodule);
+}
+if (var231){
+goto BREAK_label224;
+} else {
+}
+{
+{ /* Inline model$MClass$visibility (var_c216) on <var_c216:MClass> */
+var234 = var_c216->attrs[COLOR_nitc__model__MClass___visibility].val; /* _visibility on <var_c216:MClass> */
+if (unlikely(var234 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 476);
+fatal_exit(1);
+}
+var232 = var234;
+RET_LABEL233:(void)0;
+}
+}
+var235 = glob_sys;
+{
+var236 = nitc__model_base___core__Sys___private_visibility(var235);
+}
+{
+var237 = core___core__Comparable____60d_61d(var232, var236);
+}
+if (var237){
+goto BREAK_label224;
+} else {
+}
+{
+var238 = nitc__modelbuilder_base___AQclassid___accept(var_qid, var_c216);
+}
+var239 = !var238;
+if (var239){
+goto BREAK_label224;
+} else {
+}
+if (unlikely(varonce240==NULL)) {
+var241 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
+if (likely(varonce242!=NULL)) {
+var243 = varonce242;
+} else {
+var244 = "`";
+var246 = (val*)(1l<<2|1);
+var247 = (val*)(1l<<2|1);
+var248 = (val*)((long)(0)<<2|3);
+var249 = (val*)((long)(0)<<2|3);
+var245 = core__flat___CString___to_s_unsafe(var244, var246, var247, var248, var249);
+var243 = var245;
+varonce242 = var243;
+}
+((struct instance_core__NativeArray*)var241)->values[0]=var243;
+if (likely(varonce250!=NULL)) {
+var251 = varonce250;
+} else {
+var252 = "`";
+var254 = (val*)(1l<<2|1);
+var255 = (val*)(1l<<2|1);
+var256 = (val*)((long)(0)<<2|3);
+var257 = (val*)((long)(0)<<2|3);
+var253 = core__flat___CString___to_s_unsafe(var252, var254, var255, var256, var257);
+var251 = var253;
+varonce250 = var251;
+}
+((struct instance_core__NativeArray*)var241)->values[2]=var251;
+} else {
+var241 = varonce240;
+varonce240 = NULL;
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c216) on <var_c216:MClass> */
+var260 = var_c216->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c216:MClass> */
+if (unlikely(var260 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var258 = var260;
+RET_LABEL259:(void)0;
+}
+}
+{
+var261 = nitc___nitc__MModule___nitc__model_base__MEntity__full_name(var258);
+}
+((struct instance_core__NativeArray*)var241)->values[1]=var261;
+{
+var262 = ((val*(*)(val* self))(var241->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var241); /* native_to_s on <var241:NativeArray[String]>*/
+}
+varonce240 = var241;
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_hints, var262); /* Direct call array$Array$add on <var_hints:Array[String]>*/
+}
+BREAK_label224: (void)0;
+{
+((void(*)(val* self))((((long)var_212&3)?class_info[((long)var_212&3)]:var_212->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_212); /* next on <var_212:IndexedIterator[MClass]>*/
+}
+}
+BREAK_label214: (void)0;
+{
+((void(*)(val* self))((((long)var_212&3)?class_info[((long)var_212&3)]:var_212->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_212); /* finish on <var_212:IndexedIterator[MClass]>*/
+}
+} else {
+}
+{
+var263 = core___core__Collection___not_empty(var_hints);
+}
+if (var263){
+if (unlikely(varonce264==NULL)) {
+var265 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
+if (likely(varonce266!=NULL)) {
+var267 = varonce266;
+} else {
+var268 = "Error: class `";
+var270 = (val*)(14l<<2|1);
+var271 = (val*)(14l<<2|1);
+var272 = (val*)((long)(0)<<2|3);
+var273 = (val*)((long)(0)<<2|3);
+var269 = core__flat___CString___to_s_unsafe(var268, var270, var271, var272, var273);
+var267 = var269;
+varonce266 = var267;
+}
+((struct instance_core__NativeArray*)var265)->values[0]=var267;
+if (likely(varonce274!=NULL)) {
+var275 = varonce274;
+} else {
+var276 = "` not found in module `";
+var278 = (val*)(23l<<2|1);
+var279 = (val*)(23l<<2|1);
+var280 = (val*)((long)(0)<<2|3);
+var281 = (val*)((long)(0)<<2|3);
+var277 = core__flat___CString___to_s_unsafe(var276, var278, var279, var280, var281);
+var275 = var277;
+varonce274 = var275;
+}
+((struct instance_core__NativeArray*)var265)->values[2]=var275;
+if (likely(varonce282!=NULL)) {
+var283 = varonce282;
+} else {
+var284 = "`. Maybe import ";
+var286 = (val*)(16l<<2|1);
+var287 = (val*)(16l<<2|1);
+var288 = (val*)((long)(0)<<2|3);
+var289 = (val*)((long)(0)<<2|3);
+var285 = core__flat___CString___to_s_unsafe(var284, var286, var287, var288, var289);
+var283 = var285;
+varonce282 = var283;
+}
+((struct instance_core__NativeArray*)var265)->values[4]=var283;
+if (likely(varonce290!=NULL)) {
+var291 = varonce290;
+} else {
+var292 = "?";
+var294 = (val*)(1l<<2|1);
+var295 = (val*)(1l<<2|1);
+var296 = (val*)((long)(0)<<2|3);
+var297 = (val*)((long)(0)<<2|3);
+var293 = core__flat___CString___to_s_unsafe(var292, var294, var295, var296, var297);
+var291 = var293;
+varonce290 = var291;
+}
+((struct instance_core__NativeArray*)var265)->values[6]=var291;
+} else {
+var265 = varonce264;
+varonce264 = NULL;
+}
+((struct instance_core__NativeArray*)var265)->values[1]=var_qname;
+{
+var298 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
+}
+((struct instance_core__NativeArray*)var265)->values[3]=var298;
+if (likely(varonce299!=NULL)) {
+var300 = varonce299;
+} else {
+var301 = ",";
+var303 = (val*)(1l<<2|1);
+var304 = (val*)(1l<<2|1);
+var305 = (val*)((long)(0)<<2|3);
+var306 = (val*)((long)(0)<<2|3);
+var302 = core__flat___CString___to_s_unsafe(var301, var303, var304, var305, var306);
+var300 = var302;
+varonce299 = var300;
+}
+if (likely(varonce307!=NULL)) {
+var308 = varonce307;
+} else {
+var309 = " or ";
+var311 = (val*)(4l<<2|1);
+var312 = (val*)(4l<<2|1);
+var313 = (val*)((long)(0)<<2|3);
+var314 = (val*)((long)(0)<<2|3);
+var310 = core__flat___CString___to_s_unsafe(var309, var311, var312, var313, var314);
+var308 = var310;
+varonce307 = var308;
+}
+{
+var315 = core__abstract_text___Collection___join(var_hints, var300, var308);
+}
+((struct instance_core__NativeArray*)var265)->values[5]=var315;
+{
+var316 = ((val*(*)(val* self))(var265->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var265); /* native_to_s on <var265:NativeArray[String]>*/
+}
+varonce264 = var265;
+{
+nitc___nitc__ModelBuilder___error(self, var_qid, var316); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
+}
+var317 = NEW_more_collections__BestDistance(&type_more_collections__BestDistance__nitc__MClass);
+{
+var318 = ((long(*)(val* self))(var_qname->class->vft[COLOR_core__abstract_text__Text__length]))(var_qname); /* length on <var_qname:String>*/
+}
+{
+var319 = ((long(*)(val* self))(var_name->class->vft[COLOR_core__abstract_text__Text__length]))(var_name); /* length on <var_name:String>*/
+}
+{
+{ /* Inline kernel$Int$/ (var319,2l) on <var319:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var322 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var322)) {
+var_class_name325 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name325);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 733);
+fatal_exit(1);
+}
+var326 = var319 / 2l;
+var320 = var326;
+goto RET_LABEL321;
+RET_LABEL321:(void)0;
+}
+}
+{
+{ /* Inline kernel$Int$- (var318,var320) on <var318:Int> */
+/* Covariant cast for argument 0 (i) <var320:Int> isa OTHER */
+/* <var320:Int> isa OTHER */
+var329 = 1; /* easy <var320:Int> isa OTHER*/
+if (unlikely(!var329)) {
+var_class_name332 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name332);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+fatal_exit(1);
+}
+var333 = var318 - var320;
+var327 = var333;
+goto RET_LABEL328;
+RET_LABEL328:(void)0;
+}
+}
+{
+((void(*)(val* self, long p0))(var317->class->vft[COLOR_more_collections__BestDistance__best_distance_61d]))(var317, var327); /* best_distance= on <var317:BestDistance[MClass]>*/
+}
+{
+((void(*)(val* self))(var317->class->vft[COLOR_core__kernel__Object__init]))(var317); /* init on <var317:BestDistance[MClass]>*/
+}
+var_bests = var317;
+{
+{ /* Inline modelbuilder_base$ModelBuilder$model (self) on <self:ModelBuilder> */
+var336 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
+if (unlikely(var336 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 44);
+fatal_exit(1);
+}
+var334 = var336;
+RET_LABEL335:(void)0;
+}
+}
+{
+{ /* Inline model$Model$mclasses (var334) on <var334:Model> */
+var339 = var334->attrs[COLOR_nitc__model__Model___mclasses].val; /* _mclasses on <var334:Model> */
+if (unlikely(var339 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclasses");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 43);
+fatal_exit(1);
+}
+var337 = var339;
+RET_LABEL338:(void)0;
+}
+}
+var_340 = var337;
+{
+var341 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_340);
+}
+var_342 = var341;
+for(;;) {
+{
+var343 = ((short int(*)(val* self))((((long)var_342&3)?class_info[((long)var_342&3)]:var_342->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_342); /* is_ok on <var_342:IndexedIterator[MClass]>*/
+}
+if (var343){
+} else {
+goto BREAK_label344;
+}
+{
+var345 = ((val*(*)(val* self))((((long)var_342&3)?class_info[((long)var_342&3)]:var_342->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_342); /* item on <var_342:IndexedIterator[MClass]>*/
+}
+var_c346 = var345;
+{
+{ /* Inline mmodule$MModule$in_importation (var_mmodule) on <var_mmodule:MModule> */
+var349 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var349 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 108);
+fatal_exit(1);
+}
+var347 = var349;
+RET_LABEL348:(void)0;
+}
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c346) on <var_c346:MClass> */
+var352 = var_c346->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c346:MClass> */
+if (unlikely(var352 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var350 = var352;
+RET_LABEL351:(void)0;
+}
+}
+{
+var353 = poset___poset__POSetElement____60d_61d(var347, var350);
+}
+var354 = !var353;
+if (var354){
+goto BREAK_label355;
+} else {
+}
+{
+{ /* Inline model$MClass$intro_mmodule (var_c346) on <var_c346:MClass> */
+var358 = var_c346->attrs[COLOR_nitc__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_c346:MClass> */
+if (unlikely(var358 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 390);
+fatal_exit(1);
+}
+var356 = var358;
+RET_LABEL357:(void)0;
+}
+}
+{
+{ /* Inline model$MClass$visibility (var_c346) on <var_c346:MClass> */
+var361 = var_c346->attrs[COLOR_nitc__model__MClass___visibility].val; /* _visibility on <var_c346:MClass> */
+if (unlikely(var361 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 476);
+fatal_exit(1);
+}
+var359 = var361;
+RET_LABEL360:(void)0;
+}
+}
+{
+var362 = nitc___nitc__MModule___is_visible(var_mmodule, var356, var359);
+}
+var363 = !var362;
+if (var363){
+goto BREAK_label355;
+} else {
+}
+{
+{ /* Inline model$MClass$name (var_c346) on <var_c346:MClass> */
+var366 = var_c346->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var_c346:MClass> */
+if (unlikely(var366 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
+fatal_exit(1);
+}
+var364 = var366;
+RET_LABEL365:(void)0;
+}
+}
+{
+var367 = core___core__Text___levenshtein_distance(var_qname, var364);
+}
+var_d = var367;
+{
+var368 = more_collections___more_collections__BestDistance___update(var_bests, var_d, var_c346);
+}
+{
+var369 = nitc___nitc__MClass___nitc__model_base__MEntity__full_name(var_c346);
+}
+{
+var370 = core___core__Text___levenshtein_distance(var_qname, var369);
+}
+var_d = var370;
+{
+var371 = more_collections___more_collections__BestDistance___update(var_bests, var_d, var_c346);
+}
+BREAK_label355: (void)0;
+{
+((void(*)(val* self))((((long)var_342&3)?class_info[((long)var_342&3)]:var_342->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_342); /* next on <var_342:IndexedIterator[MClass]>*/
+}
+}
+BREAK_label344: (void)0;
+{
+((void(*)(val* self))((((long)var_342&3)?class_info[((long)var_342&3)]:var_342->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_342); /* finish on <var_342:IndexedIterator[MClass]>*/
+}
+{
+{ /* Inline more_collections$BestDistance$best_items (var_bests) on <var_bests:BestDistance[MClass]> */
+var374 = var_bests->attrs[COLOR_more_collections__BestDistance___best_items].val; /* _best_items on <var_bests:BestDistance[MClass]> */
+if (unlikely(var374 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _best_items");
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 562);
+fatal_exit(1);
+}
+var372 = var374;
+RET_LABEL373:(void)0;
+}
+}
+{
+var375 = core___core__Collection___not_empty(var372);
+}
+if (var375){
+{
+{ /* Inline more_collections$BestDistance$best_items (var_bests) on <var_bests:BestDistance[MClass]> */
+var378 = var_bests->attrs[COLOR_more_collections__BestDistance___best_items].val; /* _best_items on <var_bests:BestDistance[MClass]> */
+if (unlikely(var378 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _best_items");
+PRINT_ERROR(" (%s:%d)\n", FILE_more_collections, 562);
+fatal_exit(1);
+}
+var376 = var378;
+RET_LABEL377:(void)0;
+}
+}
+var_379 = var376;
+{
+var380 = ((val*(*)(val* self))((((long)var_379&3)?class_info[((long)var_379&3)]:var_379->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_379); /* iterator on <var_379:Set[MClass]>*/
+}
+var_381 = var380;
+for(;;) {
+{
+var382 = ((short int(*)(val* self))((((long)var_381&3)?class_info[((long)var_381&3)]:var_381->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_381); /* is_ok on <var_381:Iterator[MClass]>*/
+}
+if (var382){
+} else {
+goto BREAK_label383;
+}
+{
+var384 = ((val*(*)(val* self))((((long)var_381&3)?class_info[((long)var_381&3)]:var_381->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_381); /* item on <var_381:Iterator[MClass]>*/
+}
+var_c385 = var384;
+if (unlikely(varonce386==NULL)) {
+var387 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
+if (likely(varonce388!=NULL)) {
+var389 = varonce388;
+} else {
+var390 = "`";
+var392 = (val*)(1l<<2|1);
+var393 = (val*)(1l<<2|1);
+var394 = (val*)((long)(0)<<2|3);
+var395 = (val*)((long)(0)<<2|3);
+var391 = core__flat___CString___to_s_unsafe(var390, var392, var393, var394, var395);
+var389 = var391;
+varonce388 = var389;
+}
+((struct instance_core__NativeArray*)var387)->values[0]=var389;
+if (likely(varonce396!=NULL)) {
+var397 = varonce396;
+} else {
+var398 = "`";
+var400 = (val*)(1l<<2|1);
+var401 = (val*)(1l<<2|1);
+var402 = (val*)((long)(0)<<2|3);
+var403 = (val*)((long)(0)<<2|3);
+var399 = core__flat___CString___to_s_unsafe(var398, var400, var401, var402, var403);
+var397 = var399;
+varonce396 = var397;
+}
+((struct instance_core__NativeArray*)var387)->values[2]=var397;
+} else {
+var387 = varonce386;
+varonce386 = NULL;
+}
+{
+var404 = nitc___nitc__MClass___nitc__model_base__MEntity__full_name(var_c385);
+}
+((struct instance_core__NativeArray*)var387)->values[1]=var404;
+{
+var405 = ((val*(*)(val* self))(var387->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var387); /* native_to_s on <var387:NativeArray[String]>*/
+}
+varonce386 = var387;
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_hints, var405); /* Direct call array$Array$add on <var_hints:Array[String]>*/
+}
+{
+((void(*)(val* self))((((long)var_381&3)?class_info[((long)var_381&3)]:var_381->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_381); /* next on <var_381:Iterator[MClass]>*/
+}
+}
+BREAK_label383: (void)0;
+{
+((void(*)(val* self))((((long)var_381&3)?class_info[((long)var_381&3)]:var_381->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_381); /* finish on <var_381:Iterator[MClass]>*/
+}
+if (unlikely(varonce406==NULL)) {
+var407 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
+if (likely(varonce408!=NULL)) {
+var409 = varonce408;
+} else {
+var410 = "Error: class `";
+var412 = (val*)(14l<<2|1);
+var413 = (val*)(14l<<2|1);
+var414 = (val*)((long)(0)<<2|3);
+var415 = (val*)((long)(0)<<2|3);
+var411 = core__flat___CString___to_s_unsafe(var410, var412, var413, var414, var415);
+var409 = var411;
+varonce408 = var409;
+}
+((struct instance_core__NativeArray*)var407)->values[0]=var409;
+if (likely(varonce416!=NULL)) {
+var417 = varonce416;
+} else {
+var418 = "` not found in module `";
+var420 = (val*)(23l<<2|1);
+var421 = (val*)(23l<<2|1);
+var422 = (val*)((long)(0)<<2|3);
+var423 = (val*)((long)(0)<<2|3);
+var419 = core__flat___CString___to_s_unsafe(var418, var420, var421, var422, var423);
+var417 = var419;
+varonce416 = var417;
+}
+((struct instance_core__NativeArray*)var407)->values[2]=var417;
+if (likely(varonce424!=NULL)) {
+var425 = varonce424;
+} else {
+var426 = "`. Did you mean ";
+var428 = (val*)(16l<<2|1);
+var429 = (val*)(16l<<2|1);
+var430 = (val*)((long)(0)<<2|3);
+var431 = (val*)((long)(0)<<2|3);
+var427 = core__flat___CString___to_s_unsafe(var426, var428, var429, var430, var431);
+var425 = var427;
+varonce424 = var425;
+}
+((struct instance_core__NativeArray*)var407)->values[4]=var425;
+if (likely(varonce432!=NULL)) {
+var433 = varonce432;
+} else {
+var434 = "?";
+var436 = (val*)(1l<<2|1);
+var437 = (val*)(1l<<2|1);
+var438 = (val*)((long)(0)<<2|3);
+var439 = (val*)((long)(0)<<2|3);
+var435 = core__flat___CString___to_s_unsafe(var434, var436, var437, var438, var439);
+var433 = var435;
+varonce432 = var433;
+}
+((struct instance_core__NativeArray*)var407)->values[6]=var433;
+} else {
+var407 = varonce406;
+varonce406 = NULL;
+}
+((struct instance_core__NativeArray*)var407)->values[1]=var_qname;
+{
+var440 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
+}
+((struct instance_core__NativeArray*)var407)->values[3]=var440;
+if (likely(varonce441!=NULL)) {
+var442 = varonce441;
+} else {
+var443 = ",";
+var445 = (val*)(1l<<2|1);
+var446 = (val*)(1l<<2|1);
+var447 = (val*)((long)(0)<<2|3);
+var448 = (val*)((long)(0)<<2|3);
+var444 = core__flat___CString___to_s_unsafe(var443, var445, var446, var447, var448);
+var442 = var444;
+varonce441 = var442;
+}
+if (likely(varonce449!=NULL)) {
+var450 = varonce449;
+} else {
+var451 = " or ";
+var453 = (val*)(4l<<2|1);
+var454 = (val*)(4l<<2|1);
+var455 = (val*)((long)(0)<<2|3);
+var456 = (val*)((long)(0)<<2|3);
+var452 = core__flat___CString___to_s_unsafe(var451, var453, var454, var455, var456);
+var450 = var452;
+varonce449 = var450;
+}
+{
+var457 = core__abstract_text___Collection___join(var_hints, var442, var450);
+}
+((struct instance_core__NativeArray*)var407)->values[5]=var457;
+{
+var458 = ((val*(*)(val* self))(var407->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var407); /* native_to_s on <var407:NativeArray[String]>*/
+}
+varonce406 = var407;
+{
+nitc___nitc__ModelBuilder___error(self, var_qid, var458); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
+}
+if (unlikely(varonce459==NULL)) {
+var460 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
+if (likely(varonce461!=NULL)) {
+var462 = varonce461;
+} else {
+var463 = "Error: class `";
+var465 = (val*)(14l<<2|1);
+var466 = (val*)(14l<<2|1);
+var467 = (val*)((long)(0)<<2|3);
+var468 = (val*)((long)(0)<<2|3);
+var464 = core__flat___CString___to_s_unsafe(var463, var465, var466, var467, var468);
+var462 = var464;
+varonce461 = var462;
+}
+((struct instance_core__NativeArray*)var460)->values[0]=var462;
+if (likely(varonce469!=NULL)) {
+var470 = varonce469;
+} else {
+var471 = "` not found in module `";
+var473 = (val*)(23l<<2|1);
+var474 = (val*)(23l<<2|1);
+var475 = (val*)((long)(0)<<2|3);
+var476 = (val*)((long)(0)<<2|3);
+var472 = core__flat___CString___to_s_unsafe(var471, var473, var474, var475, var476);
+var470 = var472;
+varonce469 = var470;
+}
+((struct instance_core__NativeArray*)var460)->values[2]=var470;
+if (likely(varonce477!=NULL)) {
+var478 = varonce477;
+} else {
+var479 = "`.";
+var481 = (val*)(2l<<2|1);
+var482 = (val*)(2l<<2|1);
+var483 = (val*)((long)(0)<<2|3);
+var484 = (val*)((long)(0)<<2|3);
+var480 = core__flat___CString___to_s_unsafe(var479, var481, var482, var483, var484);
+var478 = var480;
+varonce477 = var478;
+}
+((struct instance_core__NativeArray*)var460)->values[4]=var478;
+} else {
+var460 = varonce459;
+varonce459 = NULL;
+}
+((struct instance_core__NativeArray*)var460)->values[1]=var_qname;
+{
+var485 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
+}
+((struct instance_core__NativeArray*)var460)->values[3]=var485;
+{
+var486 = ((val*(*)(val* self))(var460->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var460); /* native_to_s on <var460:NativeArray[String]>*/
+}
+varonce459 = var460;
+{
+nitc___nitc__ModelBuilder___error(self, var_qid, var486); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+RET_LABEL:;
+}
+/* method modelbuilder_base$ModelBuilder$bad_class_names for (self: ModelBuilder): MultiHashMap[MModule, String] */
+val* nitc___nitc__ModelBuilder___bad_class_names(val* self) {
+val* var /* : MultiHashMap[MModule, String] */;
+val* var1 /* : MultiHashMap[MModule, String] */;
+var1 = self->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___bad_class_names].val; /* _bad_class_names on <self:ModelBuilder> */
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bad_class_names");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 413);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder_base$ModelBuilder$resolve_mtype for (self: ModelBuilder, MModule, nullable MClassDef, AType): nullable MType */
+val* nitc___nitc__ModelBuilder___resolve_mtype(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_mclassdef /* var mclassdef: nullable MClassDef */;
+val* var_ntype /* var ntype: AType */;
+val* var1 /* : nullable MType */;
+val* var3 /* : nullable MType */;
+val* var_mtype /* var mtype: nullable MType */;
+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 /* : nullable MType */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
+int cltype;
+int idtype;
+val* var21 /* : MClass */;
+val* var23 /* : MClass */;
+val* var_mclass /* var mclass: MClass */;
+long var_i /* var i: Int */;
+long var24 /* : Int */;
+long var26 /* : Int */;
+long var_ /* var : Int */;
+short int var27 /* : Bool */;
+short int var29 /* : Bool */;
+int cltype30;
+int idtype31;
+const char* var_class_name;
+short int var32 /* : Bool */;
+val* var33 /* : nullable MClassDef */;
+val* var_intro /* var intro: nullable MClassDef */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
+val* var40 /* : MClassType */;
+val* var42 /* : MClassType */;
+val* var43 /* : Array[MType] */;
+val* var44 /* : nullable Object */;
+val* var_bound /* var bound: MType */;
+val* var45 /* : ANodes[AType] */;
+val* var47 /* : ANodes[AType] */;
+val* var48 /* : ANode */;
+val* var_nt /* var nt: AType */;
+val* var49 /* : nullable MType */;
+val* var_mt /* var mt: nullable MType */;
+short int var50 /* : Bool */;
+short int var51 /* : Bool */;
+short int var53 /* : Bool */;
+short int var55 /* : Bool */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+val* var_other59 /* var other: nullable Object */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : MClassType */;
+val* var64 /* : MClassType */;
+val* var_anchor /* var anchor: nullable Object */;
+short int var65 /* : Bool */;
+short int var66 /* : Bool */;
+val* var67 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce68;
+val* var69 /* : String */;
+char* var70 /* : CString */;
+val* var71 /* : String */;
+val* var72 /* : nullable Int */;
+val* var73 /* : nullable Int */;
+val* var74 /* : nullable Bool */;
+val* var75 /* : nullable Bool */;
+static val* varonce76;
+val* var77 /* : String */;
+char* var78 /* : CString */;
+val* var79 /* : String */;
+val* var80 /* : nullable Int */;
+val* var81 /* : nullable Int */;
+val* var82 /* : nullable Bool */;
+val* var83 /* : nullable Bool */;
+static val* varonce84;
+val* var85 /* : String */;
+char* var86 /* : CString */;
+val* var87 /* : String */;
+val* var88 /* : nullable Int */;
+val* var89 /* : nullable Int */;
+val* var90 /* : nullable Bool */;
+val* var91 /* : nullable Bool */;
+val* var92 /* : String */;
+val* var93 /* : String */;
+val* var94 /* : String */;
+long var95 /* : Int */;
+var_mmodule = p0;
+var_mclassdef = p1;
+var_ntype = p2;
+{
+{ /* Inline modelbuilder_base$AType$mtype (var_ntype) on <var_ntype:AType> */
+var3 = var_ntype->attrs[COLOR_nitc__modelbuilder_base__AType___mtype].val; /* _mtype on <var_ntype:AType> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var_mtype = var1;
+if (var_mtype == NULL) {
+var4 = 1; /* is null */
+} else {
+var4 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel$Object$is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
+var9 = var_mtype == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+var10 = nitc___nitc__ModelBuilder___resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_ntype, 1);
+}
+var_mtype = var10;
+} else {
+}
+if (var_mtype == NULL) {
+var11 = 1; /* is null */
+} else {
+var11 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel$Object$is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
+var16 = var_mtype == var_other;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+}
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+var11 = var12;
+}
+if (var11){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder_base$AType$checked_mtype (var_ntype) on <var_ntype:AType> */
+var19 = var_ntype->attrs[COLOR_nitc__modelbuilder_base__AType___checked_mtype].s; /* _checked_mtype on <var_ntype:AType> */
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+if (var17){
+var = var_mtype;
+goto RET_LABEL;
+} else {
+}
+/* <var_mtype:nullable MType(MType)> isa MGenericType */
+cltype = type_nitc__MGenericType.color;
+idtype = type_nitc__MGenericType.id;
+if(cltype >= var_mtype->type->table_size) {
+var20 = 0;
+} else {
+var20 = var_mtype->type->type_table[cltype] == idtype;
+}
+if (var20){
+{
+{ /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:nullable MType(MGenericType)> */
+var23 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:nullable MType(MGenericType)> */
+if (unlikely(var23 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
+fatal_exit(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+var_mclass = var21;
+var_i = 0l;
+{
+{ /* Inline model$MClass$arity (var_mclass) on <var_mclass:MClass> */
+var26 = var_mclass->attrs[COLOR_nitc__model__MClass___arity].l; /* _arity on <var_mclass:MClass> */
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+var_ = var24;
+for(;;) {
+{
+{ /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
+/* <var_:Int> isa OTHER */
+var29 = 1; /* easy <var_:Int> isa OTHER*/
+if (unlikely(!var29)) {
+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, 725);
+fatal_exit(1);
+}
+var32 = var_i < var_;
+var27 = var32;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
+}
+}
+if (var27){
+} else {
+goto BREAK_label;
+}
+{
+var33 = nitc___nitc__MClass___try_intro(var_mclass);
+}
+var_intro = var33;
+if (var_intro == NULL) {
+var34 = 1; /* is null */
+} else {
+var34 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$== (var_intro,((val*)NULL)) on <var_intro:nullable MClassDef> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel$Object$is_same_instance (var_intro,var_other) on <var_intro:nullable MClassDef(MClassDef)> */
+var39 = var_intro == var_other;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
+}
+}
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
+}
+var34 = var35;
+}
+if (var34){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline model$MClassDef$bound_mtype (var_intro) on <var_intro:nullable MClassDef(MClassDef)> */
+var42 = var_intro->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intro:nullable MClassDef(MClassDef)> */
+if (unlikely(var42 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
+fatal_exit(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+var43 = ((val*(*)(val* self))(var40->class->vft[COLOR_nitc__model__MClassType__arguments]))(var40); /* arguments on <var40:MClassType>*/
+}
+{
+var44 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var43, var_i);
+}
+var_bound = var44;
+{
+{ /* Inline parser_nodes$AType$n_types (var_ntype) on <var_ntype:AType> */
+var47 = var_ntype->attrs[COLOR_nitc__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
+if (unlikely(var47 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1782);
+fatal_exit(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+var48 = nitc___nitc__ANodes___core__abstract_collection__SequenceRead___91d_93d(var45, var_i);
+}
+var_nt = var48;
+{
+var49 = nitc___nitc__ModelBuilder___resolve_mtype(self, var_mmodule, var_mclassdef, var_nt);
+}
+var_mt = var49;
+if (var_mt == NULL) {
+var50 = 1; /* is null */
+} else {
+var50 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$== (var_mt,((val*)NULL)) on <var_mt:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel$Object$is_same_instance (var_mt,var_other) on <var_mt:nullable MType(MType)> */
+var55 = var_mt == var_other;
+var53 = var55;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
+}
+}
+var51 = var53;
+goto RET_LABEL52;
+RET_LABEL52:(void)0;
+}
+var50 = var51;
+}
+if (var50){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+if (var_mclassdef == NULL) {
+var56 = 0; /* is null */
+} else {
+var56 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel$Object$!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
+var_other59 = ((val*)NULL);
+{
+var60 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mclassdef, var_other59); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
+}
+var61 = !var60;
+var57 = var61;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+var56 = var57;
+}
+if (var56){
+{
+{ /* Inline model$MClassDef$bound_mtype (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var64 = var_mclassdef->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:nullable MClassDef(MClassDef)> */
+if (unlikely(var64 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
+fatal_exit(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+var_anchor = var62;
+} else {
+var_anchor = ((val*)NULL);
+}
+{
+var65 = nitc___nitc__ModelBuilder___check_subtype(self, var_nt, var_mmodule, var_anchor, var_mt, var_bound);
+}
+var66 = !var65;
+if (var66){
+if (unlikely(varonce==NULL)) {
+var67 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
+if (likely(varonce68!=NULL)) {
+var69 = varonce68;
+} else {
+var70 = "Type Error: expected `";
+var72 = (val*)(22l<<2|1);
+var73 = (val*)(22l<<2|1);
+var74 = (val*)((long)(0)<<2|3);
+var75 = (val*)((long)(0)<<2|3);
+var71 = core__flat___CString___to_s_unsafe(var70, var72, var73, var74, var75);
+var69 = var71;
+varonce68 = var69;
+}
+((struct instance_core__NativeArray*)var67)->values[0]=var69;
+if (likely(varonce76!=NULL)) {
+var77 = varonce76;
+} else {
+var78 = "`, got `";
+var80 = (val*)(8l<<2|1);
+var81 = (val*)(8l<<2|1);
+var82 = (val*)((long)(0)<<2|3);
+var83 = (val*)((long)(0)<<2|3);
+var79 = core__flat___CString___to_s_unsafe(var78, var80, var81, var82, var83);
+var77 = var79;
+varonce76 = var77;
+}
+((struct instance_core__NativeArray*)var67)->values[2]=var77;
+if (likely(varonce84!=NULL)) {
+var85 = varonce84;
+} else {
+var86 = "`.";
+var88 = (val*)(2l<<2|1);
+var89 = (val*)(2l<<2|1);
+var90 = (val*)((long)(0)<<2|3);
+var91 = (val*)((long)(0)<<2|3);
+var87 = core__flat___CString___to_s_unsafe(var86, var88, var89, var90, var91);
+var85 = var87;
+varonce84 = var85;
+}
+((struct instance_core__NativeArray*)var67)->values[4]=var85;
+} else {
+var67 = varonce;
+varonce = NULL;
+}
+{
+var92 = ((val*(*)(val* self))(var_bound->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_bound); /* to_s on <var_bound:MType>*/
+}
+((struct instance_core__NativeArray*)var67)->values[1]=var92;
+{
+var93 = ((val*(*)(val* self))(var_mt->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mt); /* to_s on <var_mt:nullable MType(MType)>*/
+}
+((struct instance_core__NativeArray*)var67)->values[3]=var93;
+{
+var94 = ((val*(*)(val* self))(var67->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var67); /* native_to_s on <var67:NativeArray[String]>*/
+}
+varonce = var67;
+{
+nitc___nitc__ModelBuilder___error(self, var_nt, var94); /* Direct call modelbuilder_base$ModelBuilder$error on <self:ModelBuilder>*/
+}
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+{
+var95 = core___core__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var95;
+}
+BREAK_label: (void)0;
+} else {
+}
+{
+{ /* Inline modelbuilder_base$AType$checked_mtype= (var_ntype,1) on <var_ntype:AType> */
+var_ntype->attrs[COLOR_nitc__modelbuilder_base__AType___checked_mtype].s = 1; /* _checked_mtype on <var_ntype:AType> */
+RET_LABEL96:(void)0;
+}
+}
+var = var_mtype;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder_base$ModelBuilder$check_subtype for (self: ModelBuilder, ANode, MModule, nullable MClassType, MType, MType): Bool */
+short int nitc___nitc__ModelBuilder___check_subtype(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
+short int var /* : Bool */;
+val* var_node /* var node: ANode */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_sub /* var sub: MType */;
+val* var_sup /* var sup: MType */;
+short int var1 /* : Bool */;
+var_node = p0;
+var_mmodule = p1;
+var_anchor = p2;
+var_sub = p3;
+var_sup = p4;
+{
+var1 = nitc___nitc__MType___is_subtype(var_sub, var_mmodule, var_anchor, var_sup);
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder_base$ModelBuilder$check_sametype for (self: ModelBuilder, ANode, MModule, nullable MClassType, MType, MType): Bool */
+short int nitc___nitc__ModelBuilder___check_sametype(val* self, val* p0, val* p1, val* p2, val* p3, val* p4) {
+short int var /* : Bool */;
+val* var_node /* var node: ANode */;