Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__typing.sep.1.c
1 #include "nitc__typing.sep.0.h"
2 /* method typing$ToolContext$typing_phase for (self: ToolContext): Phase */
3 val* nitc__typing___ToolContext___typing_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_nitc__typing__ToolContext___typing_phase].val; /* _typing_phase on <self:ToolContext> */
7 if (unlikely(var1 == NULL)) {
8 if(catchStack.cursor >= 0){
9 longjmp(catchStack.envs[catchStack.cursor], 1);
10 }
11 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _typing_phase");
12 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 26);
13 fatal_exit(1);
14 }
15 var = var1;
16 RET_LABEL:;
17 return var;
18 }
19 /* method typing$TypingPhase$process_npropdef for (self: TypingPhase, APropdef) */
20 void nitc__typing___nitc__typing__TypingPhase___nitc__phase__Phase__process_npropdef(val* self, val* p0) {
21 val* var_npropdef /* var npropdef: APropdef */;
22 val* var /* : ToolContext */;
23 val* var2 /* : ToolContext */;
24 val* var3 /* : ModelBuilder */;
25 var_npropdef = p0;
26 {
27 { /* Inline phase$Phase$toolcontext (self) on <self:TypingPhase> */
28 var2 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:TypingPhase> */
29 if (unlikely(var2 == NULL)) {
30 if(catchStack.cursor >= 0){
31 longjmp(catchStack.envs[catchStack.cursor], 1);
32 }
33 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
34 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 210);
35 fatal_exit(1);
36 }
37 var = var2;
38 RET_LABEL1:(void)0;
39 }
40 }
41 {
42 var3 = nitc__modelbuilder_base___ToolContext___modelbuilder(var);
43 }
44 {
45 ((void(*)(val* self, val* p0))(var_npropdef->class->vft[COLOR_nitc__typing__APropdef__do_typing]))(var_npropdef, var3); /* do_typing on <var_npropdef:APropdef>*/
46 }
47 RET_LABEL:;
48 }
49 /* method typing$TypeVisitor$modelbuilder for (self: TypeVisitor): ModelBuilder */
50 val* nitc__typing___nitc__typing__TypeVisitor___modelbuilder(val* self) {
51 val* var /* : ModelBuilder */;
52 val* var1 /* : ModelBuilder */;
53 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
54 if (unlikely(var1 == NULL)) {
55 if(catchStack.cursor >= 0){
56 longjmp(catchStack.envs[catchStack.cursor], 1);
57 }
58 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
59 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
60 fatal_exit(1);
61 }
62 var = var1;
63 RET_LABEL:;
64 return var;
65 }
66 /* method typing$TypeVisitor$modelbuilder= for (self: TypeVisitor, ModelBuilder) */
67 void nitc__typing___nitc__typing__TypeVisitor___modelbuilder_61d(val* self, val* p0) {
68 self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val = p0; /* _modelbuilder on <self:TypeVisitor> */
69 RET_LABEL:;
70 }
71 /* method typing$TypeVisitor$mmodule for (self: TypeVisitor): MModule */
72 val* nitc__typing___nitc__typing__TypeVisitor___mmodule(val* self) {
73 val* var /* : MModule */;
74 val* var1 /* : MModule */;
75 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
76 if (unlikely(var1 == NULL)) {
77 if(catchStack.cursor >= 0){
78 longjmp(catchStack.envs[catchStack.cursor], 1);
79 }
80 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
81 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
82 fatal_exit(1);
83 }
84 var = var1;
85 RET_LABEL:;
86 return var;
87 }
88 /* method typing$TypeVisitor$mmodule= for (self: TypeVisitor, MModule) */
89 void nitc__typing___nitc__typing__TypeVisitor___mmodule_61d(val* self, val* p0) {
90 self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val = p0; /* _mmodule on <self:TypeVisitor> */
91 RET_LABEL:;
92 }
93 /* method typing$TypeVisitor$anchor for (self: TypeVisitor): nullable MClassType */
94 val* nitc__typing___nitc__typing__TypeVisitor___anchor(val* self) {
95 val* var /* : nullable MClassType */;
96 val* var1 /* : nullable MClassType */;
97 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
98 var = var1;
99 RET_LABEL:;
100 return var;
101 }
102 /* method typing$TypeVisitor$anchor= for (self: TypeVisitor, nullable MClassType) */
103 void nitc__typing___nitc__typing__TypeVisitor___anchor_61d(val* self, val* p0) {
104 self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val = p0; /* _anchor on <self:TypeVisitor> */
105 RET_LABEL:;
106 }
107 /* method typing$TypeVisitor$mclassdef for (self: TypeVisitor): nullable MClassDef */
108 val* nitc__typing___nitc__typing__TypeVisitor___mclassdef(val* self) {
109 val* var /* : nullable MClassDef */;
110 val* var1 /* : nullable MClassDef */;
111 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:TypeVisitor> */
112 var = var1;
113 RET_LABEL:;
114 return var;
115 }
116 /* method typing$TypeVisitor$mclassdef= for (self: TypeVisitor, nullable MClassDef) */
117 void nitc__typing___nitc__typing__TypeVisitor___mclassdef_61d(val* self, val* p0) {
118 self->attrs[COLOR_nitc__typing__TypeVisitor___mclassdef].val = p0; /* _mclassdef on <self:TypeVisitor> */
119 RET_LABEL:;
120 }
121 /* method typing$TypeVisitor$mpropdef for (self: TypeVisitor): nullable MPropDef */
122 val* nitc__typing___nitc__typing__TypeVisitor___mpropdef(val* self) {
123 val* var /* : nullable MPropDef */;
124 val* var1 /* : nullable MPropDef */;
125 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:TypeVisitor> */
126 var = var1;
127 RET_LABEL:;
128 return var;
129 }
130 /* method typing$TypeVisitor$mpropdef= for (self: TypeVisitor, nullable MPropDef) */
131 void nitc__typing___nitc__typing__TypeVisitor___mpropdef_61d(val* self, val* p0) {
132 self->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val = p0; /* _mpropdef on <self:TypeVisitor> */
133 RET_LABEL:;
134 }
135 /* method typing$TypeVisitor$selfvariable for (self: TypeVisitor): Variable */
136 val* nitc__typing___nitc__typing__TypeVisitor___selfvariable(val* self) {
137 val* var /* : Variable */;
138 val* var1 /* : Variable */;
139 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <self:TypeVisitor> */
140 if (unlikely(var1 == NULL)) {
141 if(catchStack.cursor >= 0){
142 longjmp(catchStack.envs[catchStack.cursor], 1);
143 }
144 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
145 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 51);
146 fatal_exit(1);
147 }
148 var = var1;
149 RET_LABEL:;
150 return var;
151 }
152 /* method typing$TypeVisitor$selfvariable= for (self: TypeVisitor, Variable) */
153 void nitc__typing___nitc__typing__TypeVisitor___selfvariable_61d(val* self, val* p0) {
154 self->attrs[COLOR_nitc__typing__TypeVisitor___selfvariable].val = p0; /* _selfvariable on <self:TypeVisitor> */
155 RET_LABEL:;
156 }
157 /* method typing$TypeVisitor$is_toplevel_context for (self: TypeVisitor): Bool */
158 short int nitc__typing___nitc__typing__TypeVisitor___is_toplevel_context(val* self) {
159 short int var /* : Bool */;
160 short int var1 /* : Bool */;
161 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <self:TypeVisitor> */
162 var = var1;
163 RET_LABEL:;
164 return var;
165 }
166 /* method typing$TypeVisitor$is_toplevel_context= for (self: TypeVisitor, Bool) */
167 void nitc__typing___nitc__typing__TypeVisitor___is_toplevel_context_61d(val* self, short int p0) {
168 self->attrs[COLOR_nitc__typing__TypeVisitor___is_toplevel_context].s = p0; /* _is_toplevel_context on <self:TypeVisitor> */
169 RET_LABEL:;
170 }
171 /* method typing$TypeVisitor$init for (self: TypeVisitor) */
172 void nitc__typing___nitc__typing__TypeVisitor___core__kernel__Object__init(val* self) {
173 val* var /* : nullable MPropDef */;
174 val* var2 /* : nullable MPropDef */;
175 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
176 short int var3 /* : Bool */;
177 short int var4 /* : Bool */;
178 val* var_other /* var other: nullable Object */;
179 short int var6 /* : Bool */;
180 short int var7 /* : Bool */;
181 val* var9 /* : MClassDef */;
182 val* var11 /* : MClassDef */;
183 val* var_mclassdef /* var mclassdef: MClassDef */;
184 val* var13 /* : MClassType */;
185 val* var15 /* : MClassType */;
186 val* var17 /* : MClass */;
187 val* var19 /* : MClass */;
188 val* var_mclass /* var mclass: MClass */;
189 val* var20 /* : Variable */;
190 static val* varonce;
191 val* var21 /* : String */;
192 char* var22 /* : CString */;
193 val* var23 /* : String */;
194 val* var24 /* : nullable Int */;
195 val* var25 /* : nullable Int */;
196 val* var26 /* : nullable Bool */;
197 val* var27 /* : nullable Bool */;
198 val* var_selfvariable /* var selfvariable: Variable */;
199 val* var29 /* : MClassType */;
200 val* var31 /* : MClassType */;
201 val* var33 /* : MProperty */;
202 val* var35 /* : MProperty */;
203 val* var_mprop /* var mprop: MProperty */;
204 short int var36 /* : Bool */;
205 short int var37 /* : Bool */;
206 int cltype;
207 int idtype;
208 short int var_ /* var : Bool */;
209 short int var38 /* : Bool */;
210 short int var40 /* : Bool */;
211 {
212 ((void(*)(val* self))(self->class->vft[COLOR_nitc__typing___nitc__typing__TypeVisitor___core__kernel__Object__init]))(self); /* init on <self:TypeVisitor>*/
213 }
214 {
215 { /* Inline typing$TypeVisitor$mpropdef (self) on <self:TypeVisitor> */
216 var2 = self->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:TypeVisitor> */
217 var = var2;
218 RET_LABEL1:(void)0;
219 }
220 }
221 var_mpropdef = var;
222 if (var_mpropdef == NULL) {
223 var3 = 0; /* is null */
224 } else {
225 var3 = 1; /* arg is null and recv is not */
226 }
227 if (0) {
228 { /* Inline kernel$Object$!= (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MPropDef> */
229 var_other = ((val*)NULL);
230 {
231 var6 = ((short int(*)(val* self, val* p0))(var_mpropdef->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mpropdef, var_other); /* == on <var_mpropdef:nullable MPropDef(MPropDef)>*/
232 }
233 var7 = !var6;
234 var4 = var7;
235 goto RET_LABEL5;
236 RET_LABEL5:(void)0;
237 }
238 var3 = var4;
239 }
240 if (var3){
241 {
242 { /* Inline typing$TypeVisitor$mpropdef= (self,var_mpropdef) on <self:TypeVisitor> */
243 self->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val = var_mpropdef; /* _mpropdef on <self:TypeVisitor> */
244 RET_LABEL8:(void)0;
245 }
246 }
247 {
248 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MPropDef)> */
249 var11 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MPropDef)> */
250 if (unlikely(var11 == NULL)) {
251 if(catchStack.cursor >= 0){
252 longjmp(catchStack.envs[catchStack.cursor], 1);
253 }
254 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
255 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
256 fatal_exit(1);
257 }
258 var9 = var11;
259 RET_LABEL10:(void)0;
260 }
261 }
262 var_mclassdef = var9;
263 {
264 { /* Inline typing$TypeVisitor$mclassdef= (self,var_mclassdef) on <self:TypeVisitor> */
265 self->attrs[COLOR_nitc__typing__TypeVisitor___mclassdef].val = var_mclassdef; /* _mclassdef on <self:TypeVisitor> */
266 RET_LABEL12:(void)0;
267 }
268 }
269 {
270 { /* Inline model$MClassDef$bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
271 var15 = var_mclassdef->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
272 if (unlikely(var15 == NULL)) {
273 if(catchStack.cursor >= 0){
274 longjmp(catchStack.envs[catchStack.cursor], 1);
275 }
276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
277 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
278 fatal_exit(1);
279 }
280 var13 = var15;
281 RET_LABEL14:(void)0;
282 }
283 }
284 {
285 { /* Inline typing$TypeVisitor$anchor= (self,var13) on <self:TypeVisitor> */
286 self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val = var13; /* _anchor on <self:TypeVisitor> */
287 RET_LABEL16:(void)0;
288 }
289 }
290 {
291 { /* Inline model$MClassDef$mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
292 var19 = var_mclassdef->attrs[COLOR_nitc__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
293 if (unlikely(var19 == NULL)) {
294 if(catchStack.cursor >= 0){
295 longjmp(catchStack.envs[catchStack.cursor], 1);
296 }
297 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
298 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 591);
299 fatal_exit(1);
300 }
301 var17 = var19;
302 RET_LABEL18:(void)0;
303 }
304 }
305 var_mclass = var17;
306 var20 = NEW_nitc__Variable(&type_nitc__Variable);
307 if (likely(varonce!=NULL)) {
308 var21 = varonce;
309 } else {
310 var22 = "self";
311 var24 = (val*)(4l<<2|1);
312 var25 = (val*)(4l<<2|1);
313 var26 = (val*)((long)(0)<<2|3);
314 var27 = (val*)((long)(0)<<2|3);
315 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
316 var21 = var23;
317 varonce = var21;
318 }
319 {
320 ((void(*)(val* self, val* p0))(var20->class->vft[COLOR_nitc__scope__Variable__name_61d]))(var20, var21); /* name= on <var20:Variable>*/
321 }
322 {
323 ((void(*)(val* self))(var20->class->vft[COLOR_core__kernel__Object__init]))(var20); /* init on <var20:Variable>*/
324 }
325 var_selfvariable = var20;
326 {
327 { /* Inline typing$TypeVisitor$selfvariable= (self,var_selfvariable) on <self:TypeVisitor> */
328 self->attrs[COLOR_nitc__typing__TypeVisitor___selfvariable].val = var_selfvariable; /* _selfvariable on <self:TypeVisitor> */
329 RET_LABEL28:(void)0;
330 }
331 }
332 {
333 { /* Inline model$MClass$mclass_type (var_mclass) on <var_mclass:MClass> */
334 var31 = var_mclass->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:MClass> */
335 if (unlikely(var31 == NULL)) {
336 if(catchStack.cursor >= 0){
337 longjmp(catchStack.envs[catchStack.cursor], 1);
338 }
339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
340 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 520);
341 fatal_exit(1);
342 }
343 var29 = var31;
344 RET_LABEL30:(void)0;
345 }
346 }
347 {
348 { /* Inline typing$Variable$declared_type= (var_selfvariable,var29) on <var_selfvariable:Variable> */
349 var_selfvariable->attrs[COLOR_nitc__typing__Variable___declared_type].val = var29; /* _declared_type on <var_selfvariable:Variable> */
350 RET_LABEL32:(void)0;
351 }
352 }
353 {
354 { /* Inline model$MPropDef$mproperty (var_mpropdef) on <var_mpropdef:nullable MPropDef(MPropDef)> */
355 var35 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MPropDef(MPropDef)> */
356 if (unlikely(var35 == NULL)) {
357 if(catchStack.cursor >= 0){
358 longjmp(catchStack.envs[catchStack.cursor], 1);
359 }
360 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
361 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
362 fatal_exit(1);
363 }
364 var33 = var35;
365 RET_LABEL34:(void)0;
366 }
367 }
368 var_mprop = var33;
369 /* <var_mprop:MProperty> isa MMethod */
370 cltype = type_nitc__MMethod.color;
371 idtype = type_nitc__MMethod.id;
372 if(cltype >= var_mprop->type->table_size) {
373 var37 = 0;
374 } else {
375 var37 = var_mprop->type->type_table[cltype] == idtype;
376 }
377 var_ = var37;
378 if (var37){
379 {
380 { /* Inline model$MMethod$is_new (var_mprop) on <var_mprop:MProperty(MMethod)> */
381 var40 = var_mprop->attrs[COLOR_nitc__model__MMethod___is_new].s; /* _is_new on <var_mprop:MProperty(MMethod)> */
382 var38 = var40;
383 RET_LABEL39:(void)0;
384 }
385 }
386 var36 = var38;
387 } else {
388 var36 = var_;
389 }
390 if (var36){
391 {
392 { /* Inline typing$TypeVisitor$is_toplevel_context= (self,1) on <self:TypeVisitor> */
393 self->attrs[COLOR_nitc__typing__TypeVisitor___is_toplevel_context].s = 1; /* _is_toplevel_context on <self:TypeVisitor> */
394 RET_LABEL41:(void)0;
395 }
396 }
397 } else {
398 }
399 } else {
400 }
401 RET_LABEL:;
402 }
403 /* method typing$TypeVisitor$anchor_to for (self: TypeVisitor, MType): MType */
404 val* nitc__typing___nitc__typing__TypeVisitor___anchor_to(val* self, val* p0) {
405 val* var /* : MType */;
406 val* var_mtype /* var mtype: MType */;
407 val* var1 /* : nullable MClassType */;
408 val* var3 /* : nullable MClassType */;
409 val* var_anchor /* var anchor: nullable MClassType */;
410 short int var4 /* : Bool */;
411 short int var5 /* : Bool */;
412 val* var_other /* var other: nullable Object */;
413 short int var7 /* : Bool */;
414 short int var9 /* : Bool */;
415 short int var10 /* : Bool */;
416 short int var11 /* : Bool */;
417 val* var12 /* : MModule */;
418 val* var14 /* : MModule */;
419 val* var15 /* : MType */;
420 var_mtype = p0;
421 {
422 { /* Inline typing$TypeVisitor$anchor (self) on <self:TypeVisitor> */
423 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
424 var1 = var3;
425 RET_LABEL2:(void)0;
426 }
427 }
428 var_anchor = var1;
429 if (var_anchor == NULL) {
430 var4 = 1; /* is null */
431 } else {
432 var4 = 0; /* arg is null but recv is not */
433 }
434 if (0) {
435 { /* Inline kernel$Object$== (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
436 var_other = ((val*)NULL);
437 {
438 { /* Inline kernel$Object$is_same_instance (var_anchor,var_other) on <var_anchor:nullable MClassType(MClassType)> */
439 var9 = var_anchor == var_other;
440 var7 = var9;
441 goto RET_LABEL8;
442 RET_LABEL8:(void)0;
443 }
444 }
445 var5 = var7;
446 goto RET_LABEL6;
447 RET_LABEL6:(void)0;
448 }
449 var4 = var5;
450 }
451 if (var4){
452 {
453 var10 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
454 }
455 var11 = !var10;
456 if (unlikely(!var11)) {
457 if(catchStack.cursor >= 0){
458 longjmp(catchStack.envs[catchStack.cursor], 1);
459 }
460 PRINT_ERROR("Runtime error: %s", "Assert failed");
461 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 86);
462 fatal_exit(1);
463 }
464 var = var_mtype;
465 goto RET_LABEL;
466 } else {
467 }
468 {
469 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
470 var14 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
471 if (unlikely(var14 == NULL)) {
472 if(catchStack.cursor >= 0){
473 longjmp(catchStack.envs[catchStack.cursor], 1);
474 }
475 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
476 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
477 fatal_exit(1);
478 }
479 var12 = var14;
480 RET_LABEL13:(void)0;
481 }
482 }
483 {
484 var15 = ((val*(*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nitc__model__MType__anchor_to]))(var_mtype, var12, var_anchor); /* anchor_to on <var_mtype:MType>*/
485 }
486 var = var15;
487 goto RET_LABEL;
488 RET_LABEL:;
489 return var;
490 }
491 /* method typing$TypeVisitor$is_subtype for (self: TypeVisitor, MType, MType): Bool */
492 short int nitc__typing___nitc__typing__TypeVisitor___is_subtype(val* self, val* p0, val* p1) {
493 short int var /* : Bool */;
494 val* var_sub /* var sub: MType */;
495 val* var_sup /* var sup: MType */;
496 val* var1 /* : MModule */;
497 val* var3 /* : MModule */;
498 val* var4 /* : nullable MClassType */;
499 val* var6 /* : nullable MClassType */;
500 short int var7 /* : Bool */;
501 var_sub = p0;
502 var_sup = p1;
503 {
504 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
505 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
506 if (unlikely(var3 == NULL)) {
507 if(catchStack.cursor >= 0){
508 longjmp(catchStack.envs[catchStack.cursor], 1);
509 }
510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
511 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
512 fatal_exit(1);
513 }
514 var1 = var3;
515 RET_LABEL2:(void)0;
516 }
517 }
518 {
519 { /* Inline typing$TypeVisitor$anchor (self) on <self:TypeVisitor> */
520 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
521 var4 = var6;
522 RET_LABEL5:(void)0;
523 }
524 }
525 {
526 var7 = nitc___nitc__MType___is_subtype(var_sub, var1, var4, var_sup);
527 }
528 var = var7;
529 goto RET_LABEL;
530 RET_LABEL:;
531 return var;
532 }
533 /* method typing$TypeVisitor$resolve_for for (self: TypeVisitor, MType, MType, Bool): MType */
534 val* nitc__typing___nitc__typing__TypeVisitor___resolve_for(val* self, val* p0, val* p1, short int p2) {
535 val* var /* : MType */;
536 val* var_mtype /* var mtype: MType */;
537 val* var_subtype /* var subtype: MType */;
538 short int var_for_self /* var for_self: Bool */;
539 val* var1 /* : nullable MClassType */;
540 val* var3 /* : nullable MClassType */;
541 val* var4 /* : MModule */;
542 val* var6 /* : MModule */;
543 short int var7 /* : Bool */;
544 val* var8 /* : MType */;
545 val* var_res /* var res: MType */;
546 var_mtype = p0;
547 var_subtype = p1;
548 var_for_self = p2;
549 {
550 { /* Inline typing$TypeVisitor$anchor (self) on <self:TypeVisitor> */
551 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
552 var1 = var3;
553 RET_LABEL2:(void)0;
554 }
555 }
556 {
557 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
558 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
559 if (unlikely(var6 == NULL)) {
560 if(catchStack.cursor >= 0){
561 longjmp(catchStack.envs[catchStack.cursor], 1);
562 }
563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
564 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
565 fatal_exit(1);
566 }
567 var4 = var6;
568 RET_LABEL5:(void)0;
569 }
570 }
571 var7 = !var_for_self;
572 {
573 var8 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nitc__model__MType__resolve_for]))(var_mtype, var_subtype, var1, var4, var7); /* resolve_for on <var_mtype:MType>*/
574 }
575 var_res = var8;
576 var = var_res;
577 goto RET_LABEL;
578 RET_LABEL:;
579 return var;
580 }
581 /* method typing$TypeVisitor$check_subtype for (self: TypeVisitor, ANode, MType, MType, Bool): nullable MType */
582 val* nitc__typing___nitc__typing__TypeVisitor___check_subtype(val* self, val* p0, val* p1, val* p2, short int p3) {
583 val* var /* : nullable MType */;
584 val* var_node /* var node: ANode */;
585 val* var_sub /* var sub: MType */;
586 val* var_sup /* var sup: MType */;
587 short int var_autocast /* var autocast: Bool */;
588 short int var1 /* : Bool */;
589 short int var2 /* : Bool */;
590 short int var_ /* var : Bool */;
591 val* var3 /* : MType */;
592 short int var4 /* : Bool */;
593 short int var5 /* : Bool */;
594 int cltype;
595 int idtype;
596 short int var6 /* : Bool */;
597 val* var7 /* : MType */;
598 val* var_u /* var u: MType */;
599 val* var8 /* : ModelBuilder */;
600 val* var10 /* : ModelBuilder */;
601 val* var11 /* : NativeArray[String] */;
602 static val* varonce;
603 static val* varonce12;
604 val* var13 /* : String */;
605 char* var14 /* : CString */;
606 val* var15 /* : String */;
607 val* var16 /* : nullable Int */;
608 val* var17 /* : nullable Int */;
609 val* var18 /* : nullable Bool */;
610 val* var19 /* : nullable Bool */;
611 static val* varonce20;
612 val* var21 /* : String */;
613 char* var22 /* : CString */;
614 val* var23 /* : String */;
615 val* var24 /* : nullable Int */;
616 val* var25 /* : nullable Int */;
617 val* var26 /* : nullable Bool */;
618 val* var27 /* : nullable Bool */;
619 static val* varonce28;
620 val* var29 /* : String */;
621 char* var30 /* : CString */;
622 val* var31 /* : String */;
623 val* var32 /* : nullable Int */;
624 val* var33 /* : nullable Int */;
625 val* var34 /* : nullable Bool */;
626 val* var35 /* : nullable Bool */;
627 static val* varonce36;
628 val* var37 /* : String */;
629 char* var38 /* : CString */;
630 val* var39 /* : String */;
631 val* var40 /* : nullable Int */;
632 val* var41 /* : nullable Int */;
633 val* var42 /* : nullable Bool */;
634 val* var43 /* : nullable Bool */;
635 val* var44 /* : String */;
636 val* var45 /* : String */;
637 val* var46 /* : String */;
638 val* var47 /* : String */;
639 val* var48 /* : ModelBuilder */;
640 val* var50 /* : ModelBuilder */;
641 val* var52 /* : NativeArray[String] */;
642 static val* varonce51;
643 static val* varonce53;
644 val* var54 /* : String */;
645 char* var55 /* : CString */;
646 val* var56 /* : String */;
647 val* var57 /* : nullable Int */;
648 val* var58 /* : nullable Int */;
649 val* var59 /* : nullable Bool */;
650 val* var60 /* : nullable Bool */;
651 static val* varonce61;
652 val* var62 /* : String */;
653 char* var63 /* : CString */;
654 val* var64 /* : String */;
655 val* var65 /* : nullable Int */;
656 val* var66 /* : nullable Int */;
657 val* var67 /* : nullable Bool */;
658 val* var68 /* : nullable Bool */;
659 static val* varonce69;
660 val* var70 /* : String */;
661 char* var71 /* : CString */;
662 val* var72 /* : String */;
663 val* var73 /* : nullable Int */;
664 val* var74 /* : nullable Int */;
665 val* var75 /* : nullable Bool */;
666 val* var76 /* : nullable Bool */;
667 val* var77 /* : String */;
668 val* var78 /* : String */;
669 val* var79 /* : String */;
670 var_node = p0;
671 var_sub = p1;
672 var_sup = p2;
673 var_autocast = p3;
674 {
675 var1 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_sub, var_sup);
676 }
677 if (var1){
678 var = var_sub;
679 goto RET_LABEL;
680 } else {
681 }
682 var_ = var_autocast;
683 if (var_autocast){
684 {
685 var3 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_sup);
686 }
687 {
688 var4 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_sub, var3);
689 }
690 var2 = var4;
691 } else {
692 var2 = var_;
693 }
694 if (var2){
695 var = var_sup;
696 goto RET_LABEL;
697 } else {
698 }
699 /* <var_sup:MType> isa MErrorType */
700 cltype = type_nitc__MErrorType.color;
701 idtype = type_nitc__MErrorType.id;
702 if(cltype >= var_sup->type->table_size) {
703 var5 = 0;
704 } else {
705 var5 = var_sup->type->type_table[cltype] == idtype;
706 }
707 if (var5){
708 var = ((val*)NULL);
709 goto RET_LABEL;
710 } else {
711 }
712 {
713 var6 = ((short int(*)(val* self))(var_sub->class->vft[COLOR_nitc__model__MType__need_anchor]))(var_sub); /* need_anchor on <var_sub:MType>*/
714 }
715 if (var6){
716 {
717 var7 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_sub);
718 }
719 var_u = var7;
720 {
721 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
722 var10 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
723 if (unlikely(var10 == NULL)) {
724 if(catchStack.cursor >= 0){
725 longjmp(catchStack.envs[catchStack.cursor], 1);
726 }
727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
728 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
729 fatal_exit(1);
730 }
731 var8 = var10;
732 RET_LABEL9:(void)0;
733 }
734 }
735 if (unlikely(varonce==NULL)) {
736 var11 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
737 if (likely(varonce12!=NULL)) {
738 var13 = varonce12;
739 } else {
740 var14 = "Type Error: expected `";
741 var16 = (val*)(22l<<2|1);
742 var17 = (val*)(22l<<2|1);
743 var18 = (val*)((long)(0)<<2|3);
744 var19 = (val*)((long)(0)<<2|3);
745 var15 = core__flat___CString___to_s_unsafe(var14, var16, var17, var18, var19);
746 var13 = var15;
747 varonce12 = var13;
748 }
749 ((struct instance_core__NativeArray*)var11)->values[0]=var13;
750 if (likely(varonce20!=NULL)) {
751 var21 = varonce20;
752 } else {
753 var22 = "`, got `";
754 var24 = (val*)(8l<<2|1);
755 var25 = (val*)(8l<<2|1);
756 var26 = (val*)((long)(0)<<2|3);
757 var27 = (val*)((long)(0)<<2|3);
758 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
759 var21 = var23;
760 varonce20 = var21;
761 }
762 ((struct instance_core__NativeArray*)var11)->values[2]=var21;
763 if (likely(varonce28!=NULL)) {
764 var29 = varonce28;
765 } else {
766 var30 = ": ";
767 var32 = (val*)(2l<<2|1);
768 var33 = (val*)(2l<<2|1);
769 var34 = (val*)((long)(0)<<2|3);
770 var35 = (val*)((long)(0)<<2|3);
771 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
772 var29 = var31;
773 varonce28 = var29;
774 }
775 ((struct instance_core__NativeArray*)var11)->values[4]=var29;
776 if (likely(varonce36!=NULL)) {
777 var37 = varonce36;
778 } else {
779 var38 = "`.";
780 var40 = (val*)(2l<<2|1);
781 var41 = (val*)(2l<<2|1);
782 var42 = (val*)((long)(0)<<2|3);
783 var43 = (val*)((long)(0)<<2|3);
784 var39 = core__flat___CString___to_s_unsafe(var38, var40, var41, var42, var43);
785 var37 = var39;
786 varonce36 = var37;
787 }
788 ((struct instance_core__NativeArray*)var11)->values[6]=var37;
789 } else {
790 var11 = varonce;
791 varonce = NULL;
792 }
793 {
794 var44 = ((val*(*)(val* self))(var_sup->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sup); /* to_s on <var_sup:MType>*/
795 }
796 ((struct instance_core__NativeArray*)var11)->values[1]=var44;
797 {
798 var45 = ((val*(*)(val* self))(var_sub->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sub); /* to_s on <var_sub:MType>*/
799 }
800 ((struct instance_core__NativeArray*)var11)->values[3]=var45;
801 {
802 var46 = ((val*(*)(val* self))(var_u->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_u); /* to_s on <var_u:MType>*/
803 }
804 ((struct instance_core__NativeArray*)var11)->values[5]=var46;
805 {
806 var47 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
807 }
808 varonce = var11;
809 {
810 nitc___nitc__ModelBuilder___error(var8, var_node, var47); /* Direct call modelbuilder_base$ModelBuilder$error on <var8:ModelBuilder>*/
811 }
812 } else {
813 {
814 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
815 var50 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
816 if (unlikely(var50 == NULL)) {
817 if(catchStack.cursor >= 0){
818 longjmp(catchStack.envs[catchStack.cursor], 1);
819 }
820 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
821 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
822 fatal_exit(1);
823 }
824 var48 = var50;
825 RET_LABEL49:(void)0;
826 }
827 }
828 if (unlikely(varonce51==NULL)) {
829 var52 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
830 if (likely(varonce53!=NULL)) {
831 var54 = varonce53;
832 } else {
833 var55 = "Type Error: expected `";
834 var57 = (val*)(22l<<2|1);
835 var58 = (val*)(22l<<2|1);
836 var59 = (val*)((long)(0)<<2|3);
837 var60 = (val*)((long)(0)<<2|3);
838 var56 = core__flat___CString___to_s_unsafe(var55, var57, var58, var59, var60);
839 var54 = var56;
840 varonce53 = var54;
841 }
842 ((struct instance_core__NativeArray*)var52)->values[0]=var54;
843 if (likely(varonce61!=NULL)) {
844 var62 = varonce61;
845 } else {
846 var63 = "`, got `";
847 var65 = (val*)(8l<<2|1);
848 var66 = (val*)(8l<<2|1);
849 var67 = (val*)((long)(0)<<2|3);
850 var68 = (val*)((long)(0)<<2|3);
851 var64 = core__flat___CString___to_s_unsafe(var63, var65, var66, var67, var68);
852 var62 = var64;
853 varonce61 = var62;
854 }
855 ((struct instance_core__NativeArray*)var52)->values[2]=var62;
856 if (likely(varonce69!=NULL)) {
857 var70 = varonce69;
858 } else {
859 var71 = "`.";
860 var73 = (val*)(2l<<2|1);
861 var74 = (val*)(2l<<2|1);
862 var75 = (val*)((long)(0)<<2|3);
863 var76 = (val*)((long)(0)<<2|3);
864 var72 = core__flat___CString___to_s_unsafe(var71, var73, var74, var75, var76);
865 var70 = var72;
866 varonce69 = var70;
867 }
868 ((struct instance_core__NativeArray*)var52)->values[4]=var70;
869 } else {
870 var52 = varonce51;
871 varonce51 = NULL;
872 }
873 {
874 var77 = ((val*(*)(val* self))(var_sup->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sup); /* to_s on <var_sup:MType>*/
875 }
876 ((struct instance_core__NativeArray*)var52)->values[1]=var77;
877 {
878 var78 = ((val*(*)(val* self))(var_sub->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sub); /* to_s on <var_sub:MType>*/
879 }
880 ((struct instance_core__NativeArray*)var52)->values[3]=var78;
881 {
882 var79 = ((val*(*)(val* self))(var52->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var52); /* native_to_s on <var52:NativeArray[String]>*/
883 }
884 varonce51 = var52;
885 {
886 nitc___nitc__ModelBuilder___error(var48, var_node, var79); /* Direct call modelbuilder_base$ModelBuilder$error on <var48:ModelBuilder>*/
887 }
888 }
889 var = ((val*)NULL);
890 goto RET_LABEL;
891 RET_LABEL:;
892 return var;
893 }
894 /* method typing$TypeVisitor$visit_stmt for (self: TypeVisitor, nullable AExpr) */
895 void nitc__typing___nitc__typing__TypeVisitor___visit_stmt(val* self, val* p0) {
896 val* var_nexpr /* var nexpr: nullable AExpr */;
897 short int var /* : Bool */;
898 short int var1 /* : Bool */;
899 val* var_other /* var other: nullable Object */;
900 short int var3 /* : Bool */;
901 short int var5 /* : Bool */;
902 var_nexpr = p0;
903 if (var_nexpr == NULL) {
904 var = 1; /* is null */
905 } else {
906 var = 0; /* arg is null but recv is not */
907 }
908 if (0) {
909 { /* Inline kernel$Object$== (var_nexpr,((val*)NULL)) on <var_nexpr:nullable AExpr> */
910 var_other = ((val*)NULL);
911 {
912 { /* Inline kernel$Object$is_same_instance (var_nexpr,var_other) on <var_nexpr:nullable AExpr(AExpr)> */
913 var5 = var_nexpr == var_other;
914 var3 = var5;
915 goto RET_LABEL4;
916 RET_LABEL4:(void)0;
917 }
918 }
919 var1 = var3;
920 goto RET_LABEL2;
921 RET_LABEL2:(void)0;
922 }
923 var = var1;
924 }
925 if (var){
926 goto RET_LABEL;
927 } else {
928 }
929 {
930 ((void(*)(val* self, val* p0))(var_nexpr->class->vft[COLOR_nitc__typing__AExpr__accept_typing]))(var_nexpr, self); /* accept_typing on <var_nexpr:nullable AExpr(AExpr)>*/
931 }
932 RET_LABEL:;
933 }
934 /* method typing$TypeVisitor$visit_expr for (self: TypeVisitor, AExpr): nullable MType */
935 val* nitc__typing___nitc__typing__TypeVisitor___visit_expr(val* self, val* p0) {
936 val* var /* : nullable MType */;
937 val* var_nexpr /* var nexpr: AExpr */;
938 val* var1 /* : nullable MType */;
939 val* var_mtype /* var mtype: nullable MType */;
940 short int var2 /* : Bool */;
941 short int var3 /* : Bool */;
942 val* var_other /* var other: nullable Object */;
943 short int var5 /* : Bool */;
944 short int var6 /* : Bool */;
945 short int var7 /* : Bool */;
946 short int var9 /* : Bool */;
947 short int var10 /* : Bool */;
948 val* var11 /* : ModelBuilder */;
949 val* var13 /* : ModelBuilder */;
950 val* var14 /* : ToolContext */;
951 val* var16 /* : ToolContext */;
952 long var17 /* : Int */;
953 long var19 /* : Int */;
954 short int var20 /* : Bool */;
955 short int var22 /* : Bool */;
956 int cltype;
957 int idtype;
958 const char* var_class_name;
959 short int var23 /* : Bool */;
960 short int var24 /* : Bool */;
961 val* var25 /* : ModelBuilder */;
962 val* var27 /* : ModelBuilder */;
963 val* var28 /* : ToolContext */;
964 val* var30 /* : ToolContext */;
965 long var31 /* : Int */;
966 long var33 /* : Int */;
967 short int var34 /* : Bool */;
968 short int var36 /* : Bool */;
969 int cltype37;
970 int idtype38;
971 const char* var_class_name39;
972 short int var40 /* : Bool */;
973 static val* varonce;
974 val* var41 /* : String */;
975 char* var42 /* : CString */;
976 val* var43 /* : String */;
977 val* var44 /* : nullable Int */;
978 val* var45 /* : nullable Int */;
979 val* var46 /* : nullable Bool */;
980 val* var47 /* : nullable Bool */;
981 val* var_more_message /* var more_message: nullable Object */;
982 val* var48 /* : nullable ANode */;
983 val* var50 /* : nullable ANode */;
984 val* var_p /* var p: nullable ANode */;
985 short int var51 /* : Bool */;
986 short int var52 /* : Bool */;
987 short int var54 /* : Bool */;
988 short int var55 /* : Bool */;
989 val* var56 /* : nullable String */;
990 short int var57 /* : Bool */;
991 short int var58 /* : Bool */;
992 static val* varonce59;
993 val* var60 /* : String */;
994 char* var61 /* : CString */;
995 val* var62 /* : String */;
996 val* var63 /* : nullable Int */;
997 val* var64 /* : nullable Int */;
998 val* var65 /* : nullable Bool */;
999 val* var66 /* : nullable Bool */;
1000 static val* varonce67;
1001 val* var68 /* : String */;
1002 char* var69 /* : CString */;
1003 val* var70 /* : String */;
1004 val* var71 /* : nullable Int */;
1005 val* var72 /* : nullable Int */;
1006 val* var73 /* : nullable Bool */;
1007 val* var74 /* : nullable Bool */;
1008 val* var75 /* : Text */;
1009 val* var77 /* : NativeArray[String] */;
1010 static val* varonce76;
1011 static val* varonce78;
1012 val* var79 /* : String */;
1013 char* var80 /* : CString */;
1014 val* var81 /* : String */;
1015 val* var82 /* : nullable Int */;
1016 val* var83 /* : nullable Int */;
1017 val* var84 /* : nullable Bool */;
1018 val* var85 /* : nullable Bool */;
1019 static val* varonce86;
1020 val* var87 /* : String */;
1021 char* var88 /* : CString */;
1022 val* var89 /* : String */;
1023 val* var90 /* : nullable Int */;
1024 val* var91 /* : nullable Int */;
1025 val* var92 /* : nullable Bool */;
1026 val* var93 /* : nullable Bool */;
1027 val* var94 /* : String */;
1028 var_nexpr = p0;
1029 {
1030 ((void(*)(val* self, val* p0))(var_nexpr->class->vft[COLOR_nitc__typing__AExpr__accept_typing]))(var_nexpr, self); /* accept_typing on <var_nexpr:AExpr>*/
1031 }
1032 {
1033 var1 = ((val*(*)(val* self))(var_nexpr->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var_nexpr); /* mtype on <var_nexpr:AExpr>*/
1034 }
1035 var_mtype = var1;
1036 if (var_mtype == NULL) {
1037 var2 = 0; /* is null */
1038 } else {
1039 var2 = 1; /* arg is null and recv is not */
1040 }
1041 if (0) {
1042 { /* Inline kernel$Object$!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1043 var_other = ((val*)NULL);
1044 {
1045 var5 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on <var_mtype:nullable MType(MType)>*/
1046 }
1047 var6 = !var5;
1048 var3 = var6;
1049 goto RET_LABEL4;
1050 RET_LABEL4:(void)0;
1051 }
1052 var2 = var3;
1053 }
1054 if (var2){
1055 var = var_mtype;
1056 goto RET_LABEL;
1057 } else {
1058 }
1059 {
1060 { /* Inline typing$AExpr$is_typed (var_nexpr) on <var_nexpr:AExpr> */
1061 var9 = var_nexpr->attrs[COLOR_nitc__typing__AExpr___is_typed].s; /* _is_typed on <var_nexpr:AExpr> */
1062 var7 = var9;
1063 RET_LABEL8:(void)0;
1064 }
1065 }
1066 var10 = !var7;
1067 if (var10){
1068 {
1069 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
1070 var13 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1071 if (unlikely(var13 == NULL)) {
1072 if(catchStack.cursor >= 0){
1073 longjmp(catchStack.envs[catchStack.cursor], 1);
1074 }
1075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1076 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
1077 fatal_exit(1);
1078 }
1079 var11 = var13;
1080 RET_LABEL12:(void)0;
1081 }
1082 }
1083 {
1084 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var11) on <var11:ModelBuilder> */
1085 var16 = var11->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var11:ModelBuilder> */
1086 if (unlikely(var16 == NULL)) {
1087 if(catchStack.cursor >= 0){
1088 longjmp(catchStack.envs[catchStack.cursor], 1);
1089 }
1090 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1091 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1092 fatal_exit(1);
1093 }
1094 var14 = var16;
1095 RET_LABEL15:(void)0;
1096 }
1097 }
1098 {
1099 { /* Inline toolcontext$ToolContext$error_count (var14) on <var14:ToolContext> */
1100 var19 = var14->attrs[COLOR_nitc__toolcontext__ToolContext___error_count].l; /* _error_count on <var14:ToolContext> */
1101 var17 = var19;
1102 RET_LABEL18:(void)0;
1103 }
1104 }
1105 {
1106 { /* Inline kernel$Int$> (var17,0l) on <var17:Int> */
1107 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1108 /* <0l:Int> isa OTHER */
1109 var22 = 1; /* easy <0l:Int> isa OTHER*/
1110 if (unlikely(!var22)) {
1111 var_class_name = type_core__Int.name;
1112 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1113 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
1114 fatal_exit(1);
1115 }
1116 var23 = var17 > 0l;
1117 var20 = var23;
1118 goto RET_LABEL21;
1119 RET_LABEL21:(void)0;
1120 }
1121 }
1122 var24 = !var20;
1123 if (var24){
1124 {
1125 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
1126 var27 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1127 if (unlikely(var27 == NULL)) {
1128 if(catchStack.cursor >= 0){
1129 longjmp(catchStack.envs[catchStack.cursor], 1);
1130 }
1131 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1132 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
1133 fatal_exit(1);
1134 }
1135 var25 = var27;
1136 RET_LABEL26:(void)0;
1137 }
1138 }
1139 {
1140 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var25) on <var25:ModelBuilder> */
1141 var30 = var25->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var25:ModelBuilder> */
1142 if (unlikely(var30 == NULL)) {
1143 if(catchStack.cursor >= 0){
1144 longjmp(catchStack.envs[catchStack.cursor], 1);
1145 }
1146 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1147 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1148 fatal_exit(1);
1149 }
1150 var28 = var30;
1151 RET_LABEL29:(void)0;
1152 }
1153 }
1154 {
1155 { /* Inline toolcontext$ToolContext$verbose_level (var28) on <var28:ToolContext> */
1156 var33 = var28->attrs[COLOR_nitc__toolcontext__ToolContext___verbose_level].l; /* _verbose_level on <var28:ToolContext> */
1157 var31 = var33;
1158 RET_LABEL32:(void)0;
1159 }
1160 }
1161 {
1162 { /* Inline kernel$Int$> (var31,1l) on <var31:Int> */
1163 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1164 /* <1l:Int> isa OTHER */
1165 var36 = 1; /* easy <1l:Int> isa OTHER*/
1166 if (unlikely(!var36)) {
1167 var_class_name39 = type_core__Int.name;
1168 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
1169 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
1170 fatal_exit(1);
1171 }
1172 var40 = var31 > 1l;
1173 var34 = var40;
1174 goto RET_LABEL35;
1175 RET_LABEL35:(void)0;
1176 }
1177 }
1178 if (var34){
1179 if (likely(varonce!=NULL)) {
1180 var41 = varonce;
1181 } else {
1182 var42 = "No return type but no error.";
1183 var44 = (val*)(28l<<2|1);
1184 var45 = (val*)(28l<<2|1);
1185 var46 = (val*)((long)(0)<<2|3);
1186 var47 = (val*)((long)(0)<<2|3);
1187 var43 = core__flat___CString___to_s_unsafe(var42, var44, var45, var46, var47);
1188 var41 = var43;
1189 varonce = var41;
1190 }
1191 {
1192 nitc___nitc__ANode___debug(var_nexpr, var41); /* Direct call parser_nodes$ANode$debug on <var_nexpr:AExpr>*/
1193 }
1194 } else {
1195 }
1196 } else {
1197 }
1198 var = ((val*)NULL);
1199 goto RET_LABEL;
1200 } else {
1201 }
1202 var_more_message = ((val*)NULL);
1203 {
1204 { /* Inline parser_nodes$ANode$parent (var_nexpr) on <var_nexpr:AExpr> */
1205 var50 = var_nexpr->attrs[COLOR_nitc__parser_nodes__ANode___parent].val; /* _parent on <var_nexpr:AExpr> */
1206 var48 = var50;
1207 RET_LABEL49:(void)0;
1208 }
1209 }
1210 var_p = var48;
1211 if (var_p == NULL) {
1212 var51 = 0; /* is null */
1213 } else {
1214 var51 = 1; /* arg is null and recv is not */
1215 }
1216 if (0) {
1217 { /* Inline kernel$Object$!= (var_p,((val*)NULL)) on <var_p:nullable ANode> */
1218 var_other = ((val*)NULL);
1219 {
1220 var54 = ((short int(*)(val* self, val* p0))(var_p->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_p, var_other); /* == on <var_p:nullable ANode(ANode)>*/
1221 }
1222 var55 = !var54;
1223 var52 = var55;
1224 goto RET_LABEL53;
1225 RET_LABEL53:(void)0;
1226 }
1227 var51 = var52;
1228 }
1229 if (var51){
1230 {
1231 var56 = ((val*(*)(val* self, val* p0))(var_p->class->vft[COLOR_nitc__typing__ANode__bad_expr_message]))(var_p, var_nexpr); /* bad_expr_message on <var_p:nullable ANode(ANode)>*/
1232 }
1233 var_more_message = var56;
1234 } else {
1235 }
1236 if (var_more_message == NULL) {
1237 var57 = 1; /* is null */
1238 } else {
1239 var57 = 0; /* arg is null but recv is not */
1240 }
1241 if (0) {
1242 var58 = ((short int(*)(val* self, val* p0))(var_more_message->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_more_message, ((val*)NULL)); /* == on <var_more_message:nullable Object(nullable String)>*/
1243 var57 = var58;
1244 }
1245 if (var57){
1246 if (likely(varonce59!=NULL)) {
1247 var60 = varonce59;
1248 } else {
1249 var61 = "";
1250 var63 = (val*)(0l<<2|1);
1251 var64 = (val*)(0l<<2|1);
1252 var65 = (val*)((long)(0)<<2|3);
1253 var66 = (val*)((long)(0)<<2|3);
1254 var62 = core__flat___CString___to_s_unsafe(var61, var63, var64, var65, var66);
1255 var60 = var62;
1256 varonce59 = var60;
1257 }
1258 var_more_message = var60;
1259 } else {
1260 if (likely(varonce67!=NULL)) {
1261 var68 = varonce67;
1262 } else {
1263 var69 = " ";
1264 var71 = (val*)(1l<<2|1);
1265 var72 = (val*)(1l<<2|1);
1266 var73 = (val*)((long)(0)<<2|3);
1267 var74 = (val*)((long)(0)<<2|3);
1268 var70 = core__flat___CString___to_s_unsafe(var69, var71, var72, var73, var74);
1269 var68 = var70;
1270 varonce67 = var68;
1271 }
1272 {
1273 var75 = ((val*(*)(val* self, val* p0))(var68->class->vft[COLOR_core__abstract_text__Text___43d]))(var68, var_more_message); /* + on <var68:String>*/
1274 }
1275 var_more_message = var75;
1276 }
1277 if (unlikely(varonce76==NULL)) {
1278 var77 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
1279 if (likely(varonce78!=NULL)) {
1280 var79 = varonce78;
1281 } else {
1282 var80 = "Error: expected an expression";
1283 var82 = (val*)(29l<<2|1);
1284 var83 = (val*)(29l<<2|1);
1285 var84 = (val*)((long)(0)<<2|3);
1286 var85 = (val*)((long)(0)<<2|3);
1287 var81 = core__flat___CString___to_s_unsafe(var80, var82, var83, var84, var85);
1288 var79 = var81;
1289 varonce78 = var79;
1290 }
1291 ((struct instance_core__NativeArray*)var77)->values[0]=var79;
1292 if (likely(varonce86!=NULL)) {
1293 var87 = varonce86;
1294 } else {
1295 var88 = ".";
1296 var90 = (val*)(1l<<2|1);
1297 var91 = (val*)(1l<<2|1);
1298 var92 = (val*)((long)(0)<<2|3);
1299 var93 = (val*)((long)(0)<<2|3);
1300 var89 = core__flat___CString___to_s_unsafe(var88, var90, var91, var92, var93);
1301 var87 = var89;
1302 varonce86 = var87;
1303 }
1304 ((struct instance_core__NativeArray*)var77)->values[2]=var87;
1305 } else {
1306 var77 = varonce76;
1307 varonce76 = NULL;
1308 }
1309 ((struct instance_core__NativeArray*)var77)->values[1]=var_more_message;
1310 {
1311 var94 = ((val*(*)(val* self))(var77->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var77); /* native_to_s on <var77:NativeArray[String]>*/
1312 }
1313 varonce76 = var77;
1314 {
1315 nitc__typing___nitc__typing__TypeVisitor___error(self, var_nexpr, var94); /* Direct call typing$TypeVisitor$error on <self:TypeVisitor>*/
1316 }
1317 var = ((val*)NULL);
1318 goto RET_LABEL;
1319 RET_LABEL:;
1320 return var;
1321 }
1322 /* method typing$TypeVisitor$visit_expr_subtype for (self: TypeVisitor, AExpr, nullable MType): nullable MType */
1323 val* nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(val* self, val* p0, val* p1) {
1324 val* var /* : nullable MType */;
1325 val* var_nexpr /* var nexpr: AExpr */;
1326 val* var_sup /* var sup: nullable MType */;
1327 val* var1 /* : nullable MType */;
1328 val* var_sub /* var sub: nullable MType */;
1329 short int var2 /* : Bool */;
1330 short int var3 /* : Bool */;
1331 val* var_other /* var other: nullable Object */;
1332 short int var5 /* : Bool */;
1333 short int var7 /* : Bool */;
1334 short int var8 /* : Bool */;
1335 short int var9 /* : Bool */;
1336 short int var11 /* : Bool */;
1337 short int var13 /* : Bool */;
1338 val* var14 /* : nullable MType */;
1339 val* var_res /* var res: nullable MType */;
1340 short int var15 /* : Bool */;
1341 short int var16 /* : Bool */;
1342 val* var_other18 /* var other: nullable Object */;
1343 short int var19 /* : Bool */;
1344 short int var20 /* : Bool */;
1345 var_nexpr = p0;
1346 var_sup = p1;
1347 {
1348 var1 = nitc__typing___nitc__typing__TypeVisitor___visit_expr(self, var_nexpr);
1349 }
1350 var_sub = var1;
1351 if (var_sub == NULL) {
1352 var2 = 1; /* is null */
1353 } else {
1354 var2 = 0; /* arg is null but recv is not */
1355 }
1356 if (0) {
1357 { /* Inline kernel$Object$== (var_sub,((val*)NULL)) on <var_sub:nullable MType> */
1358 var_other = ((val*)NULL);
1359 {
1360 { /* Inline kernel$Object$is_same_instance (var_sub,var_other) on <var_sub:nullable MType(MType)> */
1361 var7 = var_sub == var_other;
1362 var5 = var7;
1363 goto RET_LABEL6;
1364 RET_LABEL6:(void)0;
1365 }
1366 }
1367 var3 = var5;
1368 goto RET_LABEL4;
1369 RET_LABEL4:(void)0;
1370 }
1371 var2 = var3;
1372 }
1373 if (var2){
1374 var = ((val*)NULL);
1375 goto RET_LABEL;
1376 } else {
1377 }
1378 if (var_sup == NULL) {
1379 var8 = 1; /* is null */
1380 } else {
1381 var8 = 0; /* arg is null but recv is not */
1382 }
1383 if (0) {
1384 { /* Inline kernel$Object$== (var_sup,((val*)NULL)) on <var_sup:nullable MType> */
1385 var_other = ((val*)NULL);
1386 {
1387 { /* Inline kernel$Object$is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1388 var13 = var_sup == var_other;
1389 var11 = var13;
1390 goto RET_LABEL12;
1391 RET_LABEL12:(void)0;
1392 }
1393 }
1394 var9 = var11;
1395 goto RET_LABEL10;
1396 RET_LABEL10:(void)0;
1397 }
1398 var8 = var9;
1399 }
1400 if (var8){
1401 var = ((val*)NULL);
1402 goto RET_LABEL;
1403 } else {
1404 }
1405 {
1406 var14 = nitc__typing___nitc__typing__TypeVisitor___check_subtype(self, var_nexpr, var_sub, var_sup, 1);
1407 }
1408 var_res = var14;
1409 if (var_res == NULL) {
1410 var15 = 1; /* <var_sub:nullable MType(MType)> cannot be null */
1411 } else {
1412 { /* Inline kernel$Object$!= (var_res,var_sub) on <var_res:nullable MType> */
1413 var_other18 = var_sub;
1414 {
1415 var19 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other18); /* == on <var_res:nullable MType(MType)>*/
1416 }
1417 var20 = !var19;
1418 var16 = var20;
1419 goto RET_LABEL17;
1420 RET_LABEL17:(void)0;
1421 }
1422 var15 = var16;
1423 }
1424 if (var15){
1425 {
1426 { /* Inline typing$AExpr$implicit_cast_to= (var_nexpr,var_res) on <var_nexpr:AExpr> */
1427 var_nexpr->attrs[COLOR_nitc__typing__AExpr___implicit_cast_to].val = var_res; /* _implicit_cast_to on <var_nexpr:AExpr> */
1428 RET_LABEL21:(void)0;
1429 }
1430 }
1431 } else {
1432 }
1433 var = var_res;
1434 goto RET_LABEL;
1435 RET_LABEL:;
1436 return var;
1437 }
1438 /* method typing$TypeVisitor$visit_expr_bool for (self: TypeVisitor, AExpr): nullable MType */
1439 val* nitc__typing___nitc__typing__TypeVisitor___visit_expr_bool(val* self, val* p0) {
1440 val* var /* : nullable MType */;
1441 val* var_nexpr /* var nexpr: AExpr */;
1442 val* var1 /* : nullable MType */;
1443 val* var2 /* : nullable MType */;
1444 var_nexpr = p0;
1445 {
1446 var1 = nitc__typing___nitc__typing__TypeVisitor___type_bool(self, var_nexpr);
1447 }
1448 {
1449 var2 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var_nexpr, var1);
1450 }
1451 var = var2;
1452 goto RET_LABEL;
1453 RET_LABEL:;
1454 return var;
1455 }
1456 /* method typing$TypeVisitor$check_expr_cast for (self: TypeVisitor, ANode, AExpr, AType): nullable MType */
1457 val* nitc__typing___nitc__typing__TypeVisitor___check_expr_cast(val* self, val* p0, val* p1, val* p2) {
1458 val* var /* : nullable MType */;
1459 val* var_node /* var node: ANode */;
1460 val* var_nexpr /* var nexpr: AExpr */;
1461 val* var_ntype /* var ntype: AType */;
1462 val* var1 /* : nullable MType */;
1463 val* var_sub /* var sub: nullable MType */;
1464 short int var2 /* : Bool */;
1465 short int var3 /* : Bool */;
1466 val* var_other /* var other: nullable Object */;
1467 short int var5 /* : Bool */;
1468 short int var7 /* : Bool */;
1469 val* var8 /* : nullable MType */;
1470 val* var10 /* : nullable MType */;
1471 val* var_sup /* var sup: nullable MType */;
1472 short int var11 /* : Bool */;
1473 short int var12 /* : Bool */;
1474 short int var14 /* : Bool */;
1475 short int var16 /* : Bool */;
1476 short int var17 /* : Bool */;
1477 short int var19 /* : Bool */;
1478 short int var21 /* : Bool */;
1479 val* var22 /* : ModelBuilder */;
1480 val* var24 /* : ModelBuilder */;
1481 static val* varonce;
1482 val* var25 /* : String */;
1483 char* var26 /* : CString */;
1484 val* var27 /* : String */;
1485 val* var28 /* : nullable Int */;
1486 val* var29 /* : nullable Int */;
1487 val* var30 /* : nullable Bool */;
1488 val* var31 /* : nullable Bool */;
1489 val* var33 /* : NativeArray[String] */;
1490 static val* varonce32;
1491 static val* varonce34;
1492 val* var35 /* : String */;
1493 char* var36 /* : CString */;
1494 val* var37 /* : String */;
1495 val* var38 /* : nullable Int */;
1496 val* var39 /* : nullable Int */;
1497 val* var40 /* : nullable Bool */;
1498 val* var41 /* : nullable Bool */;
1499 static val* varonce42;
1500 val* var43 /* : String */;
1501 char* var44 /* : CString */;
1502 val* var45 /* : String */;
1503 val* var46 /* : nullable Int */;
1504 val* var47 /* : nullable Int */;
1505 val* var48 /* : nullable Bool */;
1506 val* var49 /* : nullable Bool */;
1507 val* var50 /* : String */;
1508 val* var51 /* : String */;
1509 short int var52 /* : Bool */;
1510 val* var53 /* : ModelBuilder */;
1511 val* var55 /* : ModelBuilder */;
1512 static val* varonce56;
1513 val* var57 /* : String */;
1514 char* var58 /* : CString */;
1515 val* var59 /* : String */;
1516 val* var60 /* : nullable Int */;
1517 val* var61 /* : nullable Int */;
1518 val* var62 /* : nullable Bool */;
1519 val* var63 /* : nullable Bool */;
1520 val* var65 /* : NativeArray[String] */;
1521 static val* varonce64;
1522 static val* varonce66;
1523 val* var67 /* : String */;
1524 char* var68 /* : CString */;
1525 val* var69 /* : String */;
1526 val* var70 /* : nullable Int */;
1527 val* var71 /* : nullable Int */;
1528 val* var72 /* : nullable Bool */;
1529 val* var73 /* : nullable Bool */;
1530 static val* varonce74;
1531 val* var75 /* : String */;
1532 char* var76 /* : CString */;
1533 val* var77 /* : String */;
1534 val* var78 /* : nullable Int */;
1535 val* var79 /* : nullable Int */;
1536 val* var80 /* : nullable Bool */;
1537 val* var81 /* : nullable Bool */;
1538 static val* varonce82;
1539 val* var83 /* : String */;
1540 char* var84 /* : CString */;
1541 val* var85 /* : String */;
1542 val* var86 /* : nullable Int */;
1543 val* var87 /* : nullable Int */;
1544 val* var88 /* : nullable Bool */;
1545 val* var89 /* : nullable Bool */;
1546 val* var90 /* : String */;
1547 val* var91 /* : String */;
1548 val* var92 /* : String */;
1549 var_node = p0;
1550 var_nexpr = p1;
1551 var_ntype = p2;
1552 {
1553 var1 = ((val*(*)(val* self))(var_nexpr->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var_nexpr); /* mtype on <var_nexpr:AExpr>*/
1554 }
1555 var_sub = var1;
1556 if (var_sub == NULL) {
1557 var2 = 1; /* is null */
1558 } else {
1559 var2 = 0; /* arg is null but recv is not */
1560 }
1561 if (0) {
1562 { /* Inline kernel$Object$== (var_sub,((val*)NULL)) on <var_sub:nullable MType> */
1563 var_other = ((val*)NULL);
1564 {
1565 { /* Inline kernel$Object$is_same_instance (var_sub,var_other) on <var_sub:nullable MType(MType)> */
1566 var7 = var_sub == var_other;
1567 var5 = var7;
1568 goto RET_LABEL6;
1569 RET_LABEL6:(void)0;
1570 }
1571 }
1572 var3 = var5;
1573 goto RET_LABEL4;
1574 RET_LABEL4:(void)0;
1575 }
1576 var2 = var3;
1577 }
1578 if (var2){
1579 var = ((val*)NULL);
1580 goto RET_LABEL;
1581 } else {
1582 }
1583 {
1584 { /* Inline modelbuilder_base$AType$mtype (var_ntype) on <var_ntype:AType> */
1585 var10 = var_ntype->attrs[COLOR_nitc__modelbuilder_base__AType___mtype].val; /* _mtype on <var_ntype:AType> */
1586 var8 = var10;
1587 RET_LABEL9:(void)0;
1588 }
1589 }
1590 var_sup = var8;
1591 if (var_sup == NULL) {
1592 var11 = 1; /* is null */
1593 } else {
1594 var11 = 0; /* arg is null but recv is not */
1595 }
1596 if (0) {
1597 { /* Inline kernel$Object$== (var_sup,((val*)NULL)) on <var_sup:nullable MType> */
1598 var_other = ((val*)NULL);
1599 {
1600 { /* Inline kernel$Object$is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1601 var16 = var_sup == var_other;
1602 var14 = var16;
1603 goto RET_LABEL15;
1604 RET_LABEL15:(void)0;
1605 }
1606 }
1607 var12 = var14;
1608 goto RET_LABEL13;
1609 RET_LABEL13:(void)0;
1610 }
1611 var11 = var12;
1612 }
1613 if (var11){
1614 var = ((val*)NULL);
1615 goto RET_LABEL;
1616 } else {
1617 }
1618 {
1619 { /* Inline kernel$Object$== (var_sup,var_sub) on <var_sup:nullable MType(MType)> */
1620 var_other = var_sub;
1621 {
1622 { /* Inline kernel$Object$is_same_instance (var_sup,var_other) on <var_sup:nullable MType(MType)> */
1623 var21 = var_sup == var_other;
1624 var19 = var21;
1625 goto RET_LABEL20;
1626 RET_LABEL20:(void)0;
1627 }
1628 }
1629 var17 = var19;
1630 goto RET_LABEL18;
1631 RET_LABEL18:(void)0;
1632 }
1633 }
1634 if (var17){
1635 {
1636 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
1637 var24 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1638 if (unlikely(var24 == NULL)) {
1639 if(catchStack.cursor >= 0){
1640 longjmp(catchStack.envs[catchStack.cursor], 1);
1641 }
1642 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1643 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
1644 fatal_exit(1);
1645 }
1646 var22 = var24;
1647 RET_LABEL23:(void)0;
1648 }
1649 }
1650 if (likely(varonce!=NULL)) {
1651 var25 = varonce;
1652 } else {
1653 var26 = "useless-type-test";
1654 var28 = (val*)(17l<<2|1);
1655 var29 = (val*)(17l<<2|1);
1656 var30 = (val*)((long)(0)<<2|3);
1657 var31 = (val*)((long)(0)<<2|3);
1658 var27 = core__flat___CString___to_s_unsafe(var26, var28, var29, var30, var31);
1659 var25 = var27;
1660 varonce = var25;
1661 }
1662 if (unlikely(varonce32==NULL)) {
1663 var33 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
1664 if (likely(varonce34!=NULL)) {
1665 var35 = varonce34;
1666 } else {
1667 var36 = "Warning: expression is already a `";
1668 var38 = (val*)(34l<<2|1);
1669 var39 = (val*)(34l<<2|1);
1670 var40 = (val*)((long)(0)<<2|3);
1671 var41 = (val*)((long)(0)<<2|3);
1672 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
1673 var35 = var37;
1674 varonce34 = var35;
1675 }
1676 ((struct instance_core__NativeArray*)var33)->values[0]=var35;
1677 if (likely(varonce42!=NULL)) {
1678 var43 = varonce42;
1679 } else {
1680 var44 = "`.";
1681 var46 = (val*)(2l<<2|1);
1682 var47 = (val*)(2l<<2|1);
1683 var48 = (val*)((long)(0)<<2|3);
1684 var49 = (val*)((long)(0)<<2|3);
1685 var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
1686 var43 = var45;
1687 varonce42 = var43;
1688 }
1689 ((struct instance_core__NativeArray*)var33)->values[2]=var43;
1690 } else {
1691 var33 = varonce32;
1692 varonce32 = NULL;
1693 }
1694 {
1695 var50 = ((val*(*)(val* self))(var_sup->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sup); /* to_s on <var_sup:nullable MType(MType)>*/
1696 }
1697 ((struct instance_core__NativeArray*)var33)->values[1]=var50;
1698 {
1699 var51 = ((val*(*)(val* self))(var33->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var33); /* native_to_s on <var33:NativeArray[String]>*/
1700 }
1701 varonce32 = var33;
1702 {
1703 nitc___nitc__ModelBuilder___warning(var22, var_node, var25, var51); /* Direct call modelbuilder_base$ModelBuilder$warning on <var22:ModelBuilder>*/
1704 }
1705 } else {
1706 {
1707 var52 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_sub, var_sup);
1708 }
1709 if (var52){
1710 {
1711 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
1712 var55 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
1713 if (unlikely(var55 == NULL)) {
1714 if(catchStack.cursor >= 0){
1715 longjmp(catchStack.envs[catchStack.cursor], 1);
1716 }
1717 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1718 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
1719 fatal_exit(1);
1720 }
1721 var53 = var55;
1722 RET_LABEL54:(void)0;
1723 }
1724 }
1725 if (likely(varonce56!=NULL)) {
1726 var57 = varonce56;
1727 } else {
1728 var58 = "useless-type-test";
1729 var60 = (val*)(17l<<2|1);
1730 var61 = (val*)(17l<<2|1);
1731 var62 = (val*)((long)(0)<<2|3);
1732 var63 = (val*)((long)(0)<<2|3);
1733 var59 = core__flat___CString___to_s_unsafe(var58, var60, var61, var62, var63);
1734 var57 = var59;
1735 varonce56 = var57;
1736 }
1737 if (unlikely(varonce64==NULL)) {
1738 var65 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
1739 if (likely(varonce66!=NULL)) {
1740 var67 = varonce66;
1741 } else {
1742 var68 = "Warning: expression is already a `";
1743 var70 = (val*)(34l<<2|1);
1744 var71 = (val*)(34l<<2|1);
1745 var72 = (val*)((long)(0)<<2|3);
1746 var73 = (val*)((long)(0)<<2|3);
1747 var69 = core__flat___CString___to_s_unsafe(var68, var70, var71, var72, var73);
1748 var67 = var69;
1749 varonce66 = var67;
1750 }
1751 ((struct instance_core__NativeArray*)var65)->values[0]=var67;
1752 if (likely(varonce74!=NULL)) {
1753 var75 = varonce74;
1754 } else {
1755 var76 = "` since it is a `";
1756 var78 = (val*)(17l<<2|1);
1757 var79 = (val*)(17l<<2|1);
1758 var80 = (val*)((long)(0)<<2|3);
1759 var81 = (val*)((long)(0)<<2|3);
1760 var77 = core__flat___CString___to_s_unsafe(var76, var78, var79, var80, var81);
1761 var75 = var77;
1762 varonce74 = var75;
1763 }
1764 ((struct instance_core__NativeArray*)var65)->values[2]=var75;
1765 if (likely(varonce82!=NULL)) {
1766 var83 = varonce82;
1767 } else {
1768 var84 = "`.";
1769 var86 = (val*)(2l<<2|1);
1770 var87 = (val*)(2l<<2|1);
1771 var88 = (val*)((long)(0)<<2|3);
1772 var89 = (val*)((long)(0)<<2|3);
1773 var85 = core__flat___CString___to_s_unsafe(var84, var86, var87, var88, var89);
1774 var83 = var85;
1775 varonce82 = var83;
1776 }
1777 ((struct instance_core__NativeArray*)var65)->values[4]=var83;
1778 } else {
1779 var65 = varonce64;
1780 varonce64 = NULL;
1781 }
1782 {
1783 var90 = ((val*(*)(val* self))(var_sup->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sup); /* to_s on <var_sup:nullable MType(MType)>*/
1784 }
1785 ((struct instance_core__NativeArray*)var65)->values[1]=var90;
1786 {
1787 var91 = ((val*(*)(val* self))(var_sub->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_sub); /* to_s on <var_sub:nullable MType(MType)>*/
1788 }
1789 ((struct instance_core__NativeArray*)var65)->values[3]=var91;
1790 {
1791 var92 = ((val*(*)(val* self))(var65->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var65); /* native_to_s on <var65:NativeArray[String]>*/
1792 }
1793 varonce64 = var65;
1794 {
1795 nitc___nitc__ModelBuilder___warning(var53, var_node, var57, var92); /* Direct call modelbuilder_base$ModelBuilder$warning on <var53:ModelBuilder>*/
1796 }
1797 } else {
1798 }
1799 }
1800 var = var_sup;
1801 goto RET_LABEL;
1802 RET_LABEL:;
1803 return var;
1804 }
1805 /* method typing$TypeVisitor$can_be_null for (self: TypeVisitor, MType): Bool */
1806 short int nitc__typing___nitc__typing__TypeVisitor___can_be_null(val* self, val* p0) {
1807 short int var /* : Bool */;
1808 val* var_mtype /* var mtype: MType */;
1809 short int var1 /* : Bool */;
1810 short int var2 /* : Bool */;
1811 int cltype;
1812 int idtype;
1813 short int var_ /* var : Bool */;
1814 short int var3 /* : Bool */;
1815 int cltype4;
1816 int idtype5;
1817 short int var6 /* : Bool */;
1818 int cltype7;
1819 int idtype8;
1820 val* var9 /* : MType */;
1821 val* var_x /* var x: MType */;
1822 short int var10 /* : Bool */;
1823 short int var11 /* : Bool */;
1824 int cltype12;
1825 int idtype13;
1826 short int var_14 /* var : Bool */;
1827 short int var15 /* : Bool */;
1828 int cltype16;
1829 int idtype17;
1830 var_mtype = p0;
1831 /* <var_mtype:MType> isa MNullableType */
1832 cltype = type_nitc__MNullableType.color;
1833 idtype = type_nitc__MNullableType.id;
1834 if(cltype >= var_mtype->type->table_size) {
1835 var2 = 0;
1836 } else {
1837 var2 = var_mtype->type->type_table[cltype] == idtype;
1838 }
1839 var_ = var2;
1840 if (var2){
1841 var1 = var_;
1842 } else {
1843 /* <var_mtype:MType> isa MNullType */
1844 cltype4 = type_nitc__MNullType.color;
1845 idtype5 = type_nitc__MNullType.id;
1846 if(cltype4 >= var_mtype->type->table_size) {
1847 var3 = 0;
1848 } else {
1849 var3 = var_mtype->type->type_table[cltype4] == idtype5;
1850 }
1851 var1 = var3;
1852 }
1853 if (var1){
1854 var = 1;
1855 goto RET_LABEL;
1856 } else {
1857 }
1858 /* <var_mtype:MType> isa MFormalType */
1859 cltype7 = type_nitc__MFormalType.color;
1860 idtype8 = type_nitc__MFormalType.id;
1861 if(cltype7 >= var_mtype->type->table_size) {
1862 var6 = 0;
1863 } else {
1864 var6 = var_mtype->type->type_table[cltype7] == idtype8;
1865 }
1866 if (var6){
1867 {
1868 var9 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_mtype);
1869 }
1870 var_x = var9;
1871 /* <var_x:MType> isa MNullableType */
1872 cltype12 = type_nitc__MNullableType.color;
1873 idtype13 = type_nitc__MNullableType.id;
1874 if(cltype12 >= var_x->type->table_size) {
1875 var11 = 0;
1876 } else {
1877 var11 = var_x->type->type_table[cltype12] == idtype13;
1878 }
1879 var_14 = var11;
1880 if (var11){
1881 var10 = var_14;
1882 } else {
1883 /* <var_x:MType> isa MNullType */
1884 cltype16 = type_nitc__MNullType.color;
1885 idtype17 = type_nitc__MNullType.id;
1886 if(cltype16 >= var_x->type->table_size) {
1887 var15 = 0;
1888 } else {
1889 var15 = var_x->type->type_table[cltype16] == idtype17;
1890 }
1891 var10 = var15;
1892 }
1893 if (var10){
1894 var = 1;
1895 goto RET_LABEL;
1896 } else {
1897 }
1898 } else {
1899 }
1900 var = 0;
1901 goto RET_LABEL;
1902 RET_LABEL:;
1903 return var;
1904 }
1905 /* method typing$TypeVisitor$check_can_be_null for (self: TypeVisitor, ANode, MType): Bool */
1906 short int nitc__typing___nitc__typing__TypeVisitor___check_can_be_null(val* self, val* p0, val* p1) {
1907 short int var /* : Bool */;
1908 val* var_anode /* var anode: ANode */;
1909 val* var_mtype /* var mtype: MType */;
1910 short int var1 /* : Bool */;
1911 int cltype;
1912 int idtype;
1913 val* var2 /* : ModelBuilder */;
1914 val* var4 /* : ModelBuilder */;
1915 static val* varonce;
1916 val* var5 /* : String */;
1917 char* var6 /* : CString */;
1918 val* var7 /* : String */;
1919 val* var8 /* : nullable Int */;
1920 val* var9 /* : nullable Int */;
1921 val* var10 /* : nullable Bool */;
1922 val* var11 /* : nullable Bool */;
1923 static val* varonce12;
1924 val* var13 /* : String */;
1925 char* var14 /* : CString */;
1926 val* var15 /* : String */;
1927 val* var16 /* : nullable Int */;
1928 val* var17 /* : nullable Int */;
1929 val* var18 /* : nullable Bool */;
1930 val* var19 /* : nullable Bool */;
1931 short int var20 /* : Bool */;
1932 short int var21 /* : Bool */;
1933 int cltype22;
1934 int idtype23;
1935 val* var24 /* : MType */;
1936 val* var_res /* var res: MType */;
1937 val* var25 /* : ModelBuilder */;
1938 val* var27 /* : ModelBuilder */;
1939 static val* varonce28;
1940 val* var29 /* : String */;
1941 char* var30 /* : CString */;
1942 val* var31 /* : String */;
1943 val* var32 /* : nullable Int */;
1944 val* var33 /* : nullable Int */;
1945 val* var34 /* : nullable Bool */;
1946 val* var35 /* : nullable Bool */;
1947 val* var37 /* : NativeArray[String] */;
1948 static val* varonce36;
1949 static val* varonce38;
1950 val* var39 /* : String */;
1951 char* var40 /* : CString */;
1952 val* var41 /* : String */;
1953 val* var42 /* : nullable Int */;
1954 val* var43 /* : nullable Int */;
1955 val* var44 /* : nullable Bool */;
1956 val* var45 /* : nullable Bool */;
1957 static val* varonce46;
1958 val* var47 /* : String */;
1959 char* var48 /* : CString */;
1960 val* var49 /* : String */;
1961 val* var50 /* : nullable Int */;
1962 val* var51 /* : nullable Int */;
1963 val* var52 /* : nullable Bool */;
1964 val* var53 /* : nullable Bool */;
1965 static val* varonce54;
1966 val* var55 /* : String */;
1967 char* var56 /* : CString */;
1968 val* var57 /* : String */;
1969 val* var58 /* : nullable Int */;
1970 val* var59 /* : nullable Int */;
1971 val* var60 /* : nullable Bool */;
1972 val* var61 /* : nullable Bool */;
1973 val* var62 /* : String */;
1974 val* var63 /* : String */;
1975 val* var64 /* : String */;
1976 val* var65 /* : ModelBuilder */;
1977 val* var67 /* : ModelBuilder */;
1978 static val* varonce68;
1979 val* var69 /* : String */;
1980 char* var70 /* : CString */;
1981 val* var71 /* : String */;
1982 val* var72 /* : nullable Int */;
1983 val* var73 /* : nullable Int */;
1984 val* var74 /* : nullable Bool */;
1985 val* var75 /* : nullable Bool */;
1986 val* var77 /* : NativeArray[String] */;
1987 static val* varonce76;
1988 static val* varonce78;
1989 val* var79 /* : String */;
1990 char* var80 /* : CString */;
1991 val* var81 /* : String */;
1992 val* var82 /* : nullable Int */;
1993 val* var83 /* : nullable Int */;
1994 val* var84 /* : nullable Bool */;
1995 val* var85 /* : nullable Bool */;
1996 static val* varonce86;
1997 val* var87 /* : String */;
1998 char* var88 /* : CString */;
1999 val* var89 /* : String */;
2000 val* var90 /* : nullable Int */;
2001 val* var91 /* : nullable Int */;
2002 val* var92 /* : nullable Bool */;
2003 val* var93 /* : nullable Bool */;
2004 val* var94 /* : String */;
2005 val* var95 /* : String */;
2006 var_anode = p0;
2007 var_mtype = p1;
2008 /* <var_mtype:MType> isa MNullType */
2009 cltype = type_nitc__MNullType.color;
2010 idtype = type_nitc__MNullType.id;
2011 if(cltype >= var_mtype->type->table_size) {
2012 var1 = 0;
2013 } else {
2014 var1 = var_mtype->type->type_table[cltype] == idtype;
2015 }
2016 if (var1){
2017 {
2018 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2019 var4 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2020 if (unlikely(var4 == NULL)) {
2021 if(catchStack.cursor >= 0){
2022 longjmp(catchStack.envs[catchStack.cursor], 1);
2023 }
2024 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2025 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2026 fatal_exit(1);
2027 }
2028 var2 = var4;
2029 RET_LABEL3:(void)0;
2030 }
2031 }
2032 if (likely(varonce!=NULL)) {
2033 var5 = varonce;
2034 } else {
2035 var6 = "useless-null-test";
2036 var8 = (val*)(17l<<2|1);
2037 var9 = (val*)(17l<<2|1);
2038 var10 = (val*)((long)(0)<<2|3);
2039 var11 = (val*)((long)(0)<<2|3);
2040 var7 = core__flat___CString___to_s_unsafe(var6, var8, var9, var10, var11);
2041 var5 = var7;
2042 varonce = var5;
2043 }
2044 if (likely(varonce12!=NULL)) {
2045 var13 = varonce12;
2046 } else {
2047 var14 = "Warning: expression is always `null`.";
2048 var16 = (val*)(37l<<2|1);
2049 var17 = (val*)(37l<<2|1);
2050 var18 = (val*)((long)(0)<<2|3);
2051 var19 = (val*)((long)(0)<<2|3);
2052 var15 = core__flat___CString___to_s_unsafe(var14, var16, var17, var18, var19);
2053 var13 = var15;
2054 varonce12 = var13;
2055 }
2056 {
2057 nitc___nitc__ModelBuilder___warning(var2, var_anode, var5, var13); /* Direct call modelbuilder_base$ModelBuilder$warning on <var2:ModelBuilder>*/
2058 }
2059 var = 1;
2060 goto RET_LABEL;
2061 } else {
2062 }
2063 {
2064 var20 = nitc__typing___nitc__typing__TypeVisitor___can_be_null(self, var_mtype);
2065 }
2066 if (var20){
2067 var = 1;
2068 goto RET_LABEL;
2069 } else {
2070 }
2071 /* <var_mtype:MType> isa MFormalType */
2072 cltype22 = type_nitc__MFormalType.color;
2073 idtype23 = type_nitc__MFormalType.id;
2074 if(cltype22 >= var_mtype->type->table_size) {
2075 var21 = 0;
2076 } else {
2077 var21 = var_mtype->type->type_table[cltype22] == idtype23;
2078 }
2079 if (var21){
2080 {
2081 var24 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_mtype);
2082 }
2083 var_res = var24;
2084 {
2085 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2086 var27 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2087 if (unlikely(var27 == NULL)) {
2088 if(catchStack.cursor >= 0){
2089 longjmp(catchStack.envs[catchStack.cursor], 1);
2090 }
2091 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2092 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2093 fatal_exit(1);
2094 }
2095 var25 = var27;
2096 RET_LABEL26:(void)0;
2097 }
2098 }
2099 if (likely(varonce28!=NULL)) {
2100 var29 = varonce28;
2101 } else {
2102 var30 = "useless-null-test";
2103 var32 = (val*)(17l<<2|1);
2104 var33 = (val*)(17l<<2|1);
2105 var34 = (val*)((long)(0)<<2|3);
2106 var35 = (val*)((long)(0)<<2|3);
2107 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
2108 var29 = var31;
2109 varonce28 = var29;
2110 }
2111 if (unlikely(varonce36==NULL)) {
2112 var37 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
2113 if (likely(varonce38!=NULL)) {
2114 var39 = varonce38;
2115 } else {
2116 var40 = "Warning: expression is not null, since it is a `";
2117 var42 = (val*)(48l<<2|1);
2118 var43 = (val*)(48l<<2|1);
2119 var44 = (val*)((long)(0)<<2|3);
2120 var45 = (val*)((long)(0)<<2|3);
2121 var41 = core__flat___CString___to_s_unsafe(var40, var42, var43, var44, var45);
2122 var39 = var41;
2123 varonce38 = var39;
2124 }
2125 ((struct instance_core__NativeArray*)var37)->values[0]=var39;
2126 if (likely(varonce46!=NULL)) {
2127 var47 = varonce46;
2128 } else {
2129 var48 = ": ";
2130 var50 = (val*)(2l<<2|1);
2131 var51 = (val*)(2l<<2|1);
2132 var52 = (val*)((long)(0)<<2|3);
2133 var53 = (val*)((long)(0)<<2|3);
2134 var49 = core__flat___CString___to_s_unsafe(var48, var50, var51, var52, var53);
2135 var47 = var49;
2136 varonce46 = var47;
2137 }
2138 ((struct instance_core__NativeArray*)var37)->values[2]=var47;
2139 if (likely(varonce54!=NULL)) {
2140 var55 = varonce54;
2141 } else {
2142 var56 = "`.";
2143 var58 = (val*)(2l<<2|1);
2144 var59 = (val*)(2l<<2|1);
2145 var60 = (val*)((long)(0)<<2|3);
2146 var61 = (val*)((long)(0)<<2|3);
2147 var57 = core__flat___CString___to_s_unsafe(var56, var58, var59, var60, var61);
2148 var55 = var57;
2149 varonce54 = var55;
2150 }
2151 ((struct instance_core__NativeArray*)var37)->values[4]=var55;
2152 } else {
2153 var37 = varonce36;
2154 varonce36 = NULL;
2155 }
2156 {
2157 var62 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType(MFormalType)>*/
2158 }
2159 ((struct instance_core__NativeArray*)var37)->values[1]=var62;
2160 {
2161 var63 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:MType>*/
2162 }
2163 ((struct instance_core__NativeArray*)var37)->values[3]=var63;
2164 {
2165 var64 = ((val*(*)(val* self))(var37->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
2166 }
2167 varonce36 = var37;
2168 {
2169 nitc___nitc__ModelBuilder___warning(var25, var_anode, var29, var64); /* Direct call modelbuilder_base$ModelBuilder$warning on <var25:ModelBuilder>*/
2170 }
2171 } else {
2172 {
2173 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2174 var67 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2175 if (unlikely(var67 == NULL)) {
2176 if(catchStack.cursor >= 0){
2177 longjmp(catchStack.envs[catchStack.cursor], 1);
2178 }
2179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2180 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2181 fatal_exit(1);
2182 }
2183 var65 = var67;
2184 RET_LABEL66:(void)0;
2185 }
2186 }
2187 if (likely(varonce68!=NULL)) {
2188 var69 = varonce68;
2189 } else {
2190 var70 = "useless-null-test";
2191 var72 = (val*)(17l<<2|1);
2192 var73 = (val*)(17l<<2|1);
2193 var74 = (val*)((long)(0)<<2|3);
2194 var75 = (val*)((long)(0)<<2|3);
2195 var71 = core__flat___CString___to_s_unsafe(var70, var72, var73, var74, var75);
2196 var69 = var71;
2197 varonce68 = var69;
2198 }
2199 if (unlikely(varonce76==NULL)) {
2200 var77 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2201 if (likely(varonce78!=NULL)) {
2202 var79 = varonce78;
2203 } else {
2204 var80 = "Warning: expression is not null, since it is a `";
2205 var82 = (val*)(48l<<2|1);
2206 var83 = (val*)(48l<<2|1);
2207 var84 = (val*)((long)(0)<<2|3);
2208 var85 = (val*)((long)(0)<<2|3);
2209 var81 = core__flat___CString___to_s_unsafe(var80, var82, var83, var84, var85);
2210 var79 = var81;
2211 varonce78 = var79;
2212 }
2213 ((struct instance_core__NativeArray*)var77)->values[0]=var79;
2214 if (likely(varonce86!=NULL)) {
2215 var87 = varonce86;
2216 } else {
2217 var88 = "`.";
2218 var90 = (val*)(2l<<2|1);
2219 var91 = (val*)(2l<<2|1);
2220 var92 = (val*)((long)(0)<<2|3);
2221 var93 = (val*)((long)(0)<<2|3);
2222 var89 = core__flat___CString___to_s_unsafe(var88, var90, var91, var92, var93);
2223 var87 = var89;
2224 varonce86 = var87;
2225 }
2226 ((struct instance_core__NativeArray*)var77)->values[2]=var87;
2227 } else {
2228 var77 = varonce76;
2229 varonce76 = NULL;
2230 }
2231 {
2232 var94 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
2233 }
2234 ((struct instance_core__NativeArray*)var77)->values[1]=var94;
2235 {
2236 var95 = ((val*(*)(val* self))(var77->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var77); /* native_to_s on <var77:NativeArray[String]>*/
2237 }
2238 varonce76 = var77;
2239 {
2240 nitc___nitc__ModelBuilder___warning(var65, var_anode, var69, var95); /* Direct call modelbuilder_base$ModelBuilder$warning on <var65:ModelBuilder>*/
2241 }
2242 }
2243 var = 0;
2244 goto RET_LABEL;
2245 RET_LABEL:;
2246 return var;
2247 }
2248 /* method typing$TypeVisitor$null_test for (self: TypeVisitor, ABinopExpr) */
2249 void nitc__typing___nitc__typing__TypeVisitor___null_test(val* self, val* p0) {
2250 val* var_anode /* var anode: ABinopExpr */;
2251 val* var /* : AExpr */;
2252 val* var2 /* : AExpr */;
2253 val* var3 /* : nullable MType */;
2254 val* var_mtype /* var mtype: nullable MType */;
2255 val* var4 /* : AExpr */;
2256 val* var6 /* : AExpr */;
2257 val* var7 /* : nullable MType */;
2258 val* var_mtype2 /* var mtype2: nullable MType */;
2259 short int var8 /* : Bool */;
2260 short int var9 /* : Bool */;
2261 short int var10 /* : Bool */;
2262 val* var_other /* var other: nullable Object */;
2263 short int var12 /* : Bool */;
2264 short int var14 /* : Bool */;
2265 short int var_ /* var : Bool */;
2266 short int var15 /* : Bool */;
2267 short int var16 /* : Bool */;
2268 short int var18 /* : Bool */;
2269 short int var20 /* : Bool */;
2270 short int var21 /* : Bool */;
2271 int cltype;
2272 int idtype;
2273 short int var22 /* : Bool */;
2274 short int var23 /* : Bool */;
2275 short int var24 /* : Bool */;
2276 short int var25 /* : Bool */;
2277 int cltype26;
2278 int idtype27;
2279 val* var28 /* : MType */;
2280 val* var29 /* : AExpr */;
2281 val* var31 /* : AExpr */;
2282 val* var32 /* : nullable Variable */;
2283 val* var_variable /* var variable: nullable Variable */;
2284 short int var33 /* : Bool */;
2285 short int var34 /* : Bool */;
2286 short int var36 /* : Bool */;
2287 short int var38 /* : Bool */;
2288 short int var39 /* : Bool */;
2289 int cltype40;
2290 int idtype41;
2291 val* var42 /* : nullable FlowContext */;
2292 val* var44 /* : nullable FlowContext */;
2293 val* var45 /* : FlowContext */;
2294 val* var47 /* : FlowContext */;
2295 val* var48 /* : nullable FlowContext */;
2296 val* var50 /* : nullable FlowContext */;
2297 val* var51 /* : FlowContext */;
2298 val* var53 /* : FlowContext */;
2299 short int var54 /* : Bool */;
2300 int cltype55;
2301 int idtype56;
2302 val* var57 /* : nullable FlowContext */;
2303 val* var59 /* : nullable FlowContext */;
2304 val* var60 /* : FlowContext */;
2305 val* var62 /* : FlowContext */;
2306 val* var63 /* : nullable FlowContext */;
2307 val* var65 /* : nullable FlowContext */;
2308 val* var66 /* : FlowContext */;
2309 val* var68 /* : FlowContext */;
2310 var_anode = p0;
2311 {
2312 { /* Inline parser_nodes$ASendExpr$n_expr (var_anode) on <var_anode:ABinopExpr> */
2313 var2 = var_anode->attrs[COLOR_nitc__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <var_anode:ABinopExpr> */
2314 if (unlikely(var2 == NULL)) {
2315 if(catchStack.cursor >= 0){
2316 longjmp(catchStack.envs[catchStack.cursor], 1);
2317 }
2318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2319 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2103);
2320 fatal_exit(1);
2321 }
2322 var = var2;
2323 RET_LABEL1:(void)0;
2324 }
2325 }
2326 {
2327 var3 = ((val*(*)(val* self))(var->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var); /* mtype on <var:AExpr>*/
2328 }
2329 var_mtype = var3;
2330 {
2331 { /* Inline parser_nodes$ABinopExpr$n_expr2 (var_anode) on <var_anode:ABinopExpr> */
2332 var6 = var_anode->attrs[COLOR_nitc__parser_nodes__ABinopExpr___n_expr2].val; /* _n_expr2 on <var_anode:ABinopExpr> */
2333 if (unlikely(var6 == NULL)) {
2334 if(catchStack.cursor >= 0){
2335 longjmp(catchStack.envs[catchStack.cursor], 1);
2336 }
2337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr2");
2338 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2114);
2339 fatal_exit(1);
2340 }
2341 var4 = var6;
2342 RET_LABEL5:(void)0;
2343 }
2344 }
2345 {
2346 var7 = ((val*(*)(val* self))(var4->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var4); /* mtype on <var4:AExpr>*/
2347 }
2348 var_mtype2 = var7;
2349 if (var_mtype == NULL) {
2350 var9 = 1; /* is null */
2351 } else {
2352 var9 = 0; /* arg is null but recv is not */
2353 }
2354 if (0) {
2355 { /* Inline kernel$Object$== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
2356 var_other = ((val*)NULL);
2357 {
2358 { /* Inline kernel$Object$is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
2359 var14 = var_mtype == var_other;
2360 var12 = var14;
2361 goto RET_LABEL13;
2362 RET_LABEL13:(void)0;
2363 }
2364 }
2365 var10 = var12;
2366 goto RET_LABEL11;
2367 RET_LABEL11:(void)0;
2368 }
2369 var9 = var10;
2370 }
2371 var_ = var9;
2372 if (var9){
2373 var8 = var_;
2374 } else {
2375 if (var_mtype2 == NULL) {
2376 var15 = 1; /* is null */
2377 } else {
2378 var15 = 0; /* arg is null but recv is not */
2379 }
2380 if (0) {
2381 { /* Inline kernel$Object$== (var_mtype2,((val*)NULL)) on <var_mtype2:nullable MType> */
2382 var_other = ((val*)NULL);
2383 {
2384 { /* Inline kernel$Object$is_same_instance (var_mtype2,var_other) on <var_mtype2:nullable MType(MType)> */
2385 var20 = var_mtype2 == var_other;
2386 var18 = var20;
2387 goto RET_LABEL19;
2388 RET_LABEL19:(void)0;
2389 }
2390 }
2391 var16 = var18;
2392 goto RET_LABEL17;
2393 RET_LABEL17:(void)0;
2394 }
2395 var15 = var16;
2396 }
2397 var8 = var15;
2398 }
2399 if (var8){
2400 goto RET_LABEL;
2401 } else {
2402 }
2403 /* <var_mtype2:nullable MType(MType)> isa MNullType */
2404 cltype = type_nitc__MNullType.color;
2405 idtype = type_nitc__MNullType.id;
2406 if(cltype >= var_mtype2->type->table_size) {
2407 var21 = 0;
2408 } else {
2409 var21 = var_mtype2->type->type_table[cltype] == idtype;
2410 }
2411 var22 = !var21;
2412 if (var22){
2413 goto RET_LABEL;
2414 } else {
2415 }
2416 {
2417 var23 = nitc__typing___nitc__typing__TypeVisitor___can_be_null(self, var_mtype);
2418 }
2419 var24 = !var23;
2420 if (var24){
2421 goto RET_LABEL;
2422 } else {
2423 }
2424 /* <var_mtype:nullable MType(MType)> isa MNullType */
2425 cltype26 = type_nitc__MNullType.color;
2426 idtype27 = type_nitc__MNullType.id;
2427 if(cltype26 >= var_mtype->type->table_size) {
2428 var25 = 0;
2429 } else {
2430 var25 = var_mtype->type->type_table[cltype26] == idtype27;
2431 }
2432 if (var25){
2433 var_mtype = ((val*)NULL);
2434 } else {
2435 {
2436 var28 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__as_notnull]))(var_mtype); /* as_notnull on <var_mtype:nullable MType(MType)>*/
2437 }
2438 var_mtype = var28;
2439 }
2440 {
2441 { /* Inline parser_nodes$ASendExpr$n_expr (var_anode) on <var_anode:ABinopExpr> */
2442 var31 = var_anode->attrs[COLOR_nitc__parser_nodes__ASendExpr___n_expr].val; /* _n_expr on <var_anode:ABinopExpr> */
2443 if (unlikely(var31 == NULL)) {
2444 if(catchStack.cursor >= 0){
2445 longjmp(catchStack.envs[catchStack.cursor], 1);
2446 }
2447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
2448 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2103);
2449 fatal_exit(1);
2450 }
2451 var29 = var31;
2452 RET_LABEL30:(void)0;
2453 }
2454 }
2455 {
2456 var32 = ((val*(*)(val* self))(var29->class->vft[COLOR_nitc__typing__AExpr__its_variable]))(var29); /* its_variable on <var29:AExpr>*/
2457 }
2458 var_variable = var32;
2459 if (var_variable == NULL) {
2460 var33 = 1; /* is null */
2461 } else {
2462 var33 = 0; /* arg is null but recv is not */
2463 }
2464 if (0) {
2465 { /* Inline kernel$Object$== (var_variable,((val*)NULL)) on <var_variable:nullable Variable> */
2466 var_other = ((val*)NULL);
2467 {
2468 { /* Inline kernel$Object$is_same_instance (var_variable,var_other) on <var_variable:nullable Variable(Variable)> */
2469 var38 = var_variable == var_other;
2470 var36 = var38;
2471 goto RET_LABEL37;
2472 RET_LABEL37:(void)0;
2473 }
2474 }
2475 var34 = var36;
2476 goto RET_LABEL35;
2477 RET_LABEL35:(void)0;
2478 }
2479 var33 = var34;
2480 }
2481 if (var33){
2482 goto RET_LABEL;
2483 } else {
2484 }
2485 /* <var_anode:ABinopExpr> isa AEqExpr */
2486 cltype40 = type_nitc__AEqExpr.color;
2487 idtype41 = type_nitc__AEqExpr.id;
2488 if(cltype40 >= var_anode->type->table_size) {
2489 var39 = 0;
2490 } else {
2491 var39 = var_anode->type->type_table[cltype40] == idtype41;
2492 }
2493 if (var39){
2494 {
2495 { /* Inline flow$AExpr$after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
2496 var44 = var_anode->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
2497 var42 = var44;
2498 RET_LABEL43:(void)0;
2499 }
2500 }
2501 if (var42 == NULL) {
2502 if(catchStack.cursor >= 0){
2503 longjmp(catchStack.envs[catchStack.cursor], 1);
2504 }
2505 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2506 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 269);
2507 fatal_exit(1);
2508 } else {
2509 { /* Inline flow$FlowContext$when_true (var42) on <var42:nullable FlowContext> */
2510 if (unlikely(var42 == NULL)) {
2511 if(catchStack.cursor >= 0){
2512 longjmp(catchStack.envs[catchStack.cursor], 1);
2513 }
2514 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2515 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 225);
2516 fatal_exit(1);
2517 }
2518 var47 = var42->attrs[COLOR_nitc__flow__FlowContext___when_true].val; /* _when_true on <var42:nullable FlowContext> */
2519 if (unlikely(var47 == NULL)) {
2520 if(catchStack.cursor >= 0){
2521 longjmp(catchStack.envs[catchStack.cursor], 1);
2522 }
2523 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2524 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 225);
2525 fatal_exit(1);
2526 }
2527 var45 = var47;
2528 RET_LABEL46:(void)0;
2529 }
2530 }
2531 {
2532 nitc__typing___FlowContext___set_var(var45, self, var_variable, var_mtype2); /* Direct call typing$FlowContext$set_var on <var45:FlowContext>*/
2533 }
2534 {
2535 { /* Inline flow$AExpr$after_flow_context (var_anode) on <var_anode:ABinopExpr(AEqExpr)> */
2536 var50 = var_anode->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(AEqExpr)> */
2537 var48 = var50;
2538 RET_LABEL49:(void)0;
2539 }
2540 }
2541 if (var48 == NULL) {
2542 if(catchStack.cursor >= 0){
2543 longjmp(catchStack.envs[catchStack.cursor], 1);
2544 }
2545 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2546 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 270);
2547 fatal_exit(1);
2548 } else {
2549 { /* Inline flow$FlowContext$when_false (var48) on <var48:nullable FlowContext> */
2550 if (unlikely(var48 == NULL)) {
2551 if(catchStack.cursor >= 0){
2552 longjmp(catchStack.envs[catchStack.cursor], 1);
2553 }
2554 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2555 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 228);
2556 fatal_exit(1);
2557 }
2558 var53 = var48->attrs[COLOR_nitc__flow__FlowContext___when_false].val; /* _when_false on <var48:nullable FlowContext> */
2559 if (unlikely(var53 == NULL)) {
2560 if(catchStack.cursor >= 0){
2561 longjmp(catchStack.envs[catchStack.cursor], 1);
2562 }
2563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2564 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 228);
2565 fatal_exit(1);
2566 }
2567 var51 = var53;
2568 RET_LABEL52:(void)0;
2569 }
2570 }
2571 {
2572 nitc__typing___FlowContext___set_var(var51, self, var_variable, var_mtype); /* Direct call typing$FlowContext$set_var on <var51:FlowContext>*/
2573 }
2574 } else {
2575 /* <var_anode:ABinopExpr> isa ANeExpr */
2576 cltype55 = type_nitc__ANeExpr.color;
2577 idtype56 = type_nitc__ANeExpr.id;
2578 if(cltype55 >= var_anode->type->table_size) {
2579 var54 = 0;
2580 } else {
2581 var54 = var_anode->type->type_table[cltype55] == idtype56;
2582 }
2583 if (var54){
2584 {
2585 { /* Inline flow$AExpr$after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
2586 var59 = var_anode->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
2587 var57 = var59;
2588 RET_LABEL58:(void)0;
2589 }
2590 }
2591 if (var57 == NULL) {
2592 if(catchStack.cursor >= 0){
2593 longjmp(catchStack.envs[catchStack.cursor], 1);
2594 }
2595 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2596 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 272);
2597 fatal_exit(1);
2598 } else {
2599 { /* Inline flow$FlowContext$when_false (var57) on <var57:nullable FlowContext> */
2600 if (unlikely(var57 == NULL)) {
2601 if(catchStack.cursor >= 0){
2602 longjmp(catchStack.envs[catchStack.cursor], 1);
2603 }
2604 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2605 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 228);
2606 fatal_exit(1);
2607 }
2608 var62 = var57->attrs[COLOR_nitc__flow__FlowContext___when_false].val; /* _when_false on <var57:nullable FlowContext> */
2609 if (unlikely(var62 == NULL)) {
2610 if(catchStack.cursor >= 0){
2611 longjmp(catchStack.envs[catchStack.cursor], 1);
2612 }
2613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_false");
2614 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 228);
2615 fatal_exit(1);
2616 }
2617 var60 = var62;
2618 RET_LABEL61:(void)0;
2619 }
2620 }
2621 {
2622 nitc__typing___FlowContext___set_var(var60, self, var_variable, var_mtype2); /* Direct call typing$FlowContext$set_var on <var60:FlowContext>*/
2623 }
2624 {
2625 { /* Inline flow$AExpr$after_flow_context (var_anode) on <var_anode:ABinopExpr(ANeExpr)> */
2626 var65 = var_anode->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_anode:ABinopExpr(ANeExpr)> */
2627 var63 = var65;
2628 RET_LABEL64:(void)0;
2629 }
2630 }
2631 if (var63 == NULL) {
2632 if(catchStack.cursor >= 0){
2633 longjmp(catchStack.envs[catchStack.cursor], 1);
2634 }
2635 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2636 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 273);
2637 fatal_exit(1);
2638 } else {
2639 { /* Inline flow$FlowContext$when_true (var63) on <var63:nullable FlowContext> */
2640 if (unlikely(var63 == NULL)) {
2641 if(catchStack.cursor >= 0){
2642 longjmp(catchStack.envs[catchStack.cursor], 1);
2643 }
2644 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2645 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 225);
2646 fatal_exit(1);
2647 }
2648 var68 = var63->attrs[COLOR_nitc__flow__FlowContext___when_true].val; /* _when_true on <var63:nullable FlowContext> */
2649 if (unlikely(var68 == NULL)) {
2650 if(catchStack.cursor >= 0){
2651 longjmp(catchStack.envs[catchStack.cursor], 1);
2652 }
2653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _when_true");
2654 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 225);
2655 fatal_exit(1);
2656 }
2657 var66 = var68;
2658 RET_LABEL67:(void)0;
2659 }
2660 }
2661 {
2662 nitc__typing___FlowContext___set_var(var66, self, var_variable, var_mtype); /* Direct call typing$FlowContext$set_var on <var66:FlowContext>*/
2663 }
2664 } else {
2665 if(catchStack.cursor >= 0){
2666 longjmp(catchStack.envs[catchStack.cursor], 1);
2667 }
2668 PRINT_ERROR("Runtime error: %s", "Aborted");
2669 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 275);
2670 fatal_exit(1);
2671 }
2672 }
2673 RET_LABEL:;
2674 }
2675 /* method typing$TypeVisitor$try_get_mproperty_by_name2 for (self: TypeVisitor, ANode, MType, String): nullable MProperty */
2676 val* nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(val* self, val* p0, val* p1, val* p2) {
2677 val* var /* : nullable MProperty */;
2678 val* var_anode /* var anode: ANode */;
2679 val* var_mtype /* var mtype: MType */;
2680 val* var_name /* var name: String */;
2681 val* var1 /* : ModelBuilder */;
2682 val* var3 /* : ModelBuilder */;
2683 val* var4 /* : MModule */;
2684 val* var6 /* : MModule */;
2685 val* var7 /* : nullable MProperty */;
2686 var_anode = p0;
2687 var_mtype = p1;
2688 var_name = p2;
2689 {
2690 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2691 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2692 if (unlikely(var3 == NULL)) {
2693 if(catchStack.cursor >= 0){
2694 longjmp(catchStack.envs[catchStack.cursor], 1);
2695 }
2696 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2697 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2698 fatal_exit(1);
2699 }
2700 var1 = var3;
2701 RET_LABEL2:(void)0;
2702 }
2703 }
2704 {
2705 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
2706 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2707 if (unlikely(var6 == NULL)) {
2708 if(catchStack.cursor >= 0){
2709 longjmp(catchStack.envs[catchStack.cursor], 1);
2710 }
2711 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2712 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
2713 fatal_exit(1);
2714 }
2715 var4 = var6;
2716 RET_LABEL5:(void)0;
2717 }
2718 }
2719 {
2720 var7 = nitc___nitc__ModelBuilder___try_get_mproperty_by_name2(var1, var_anode, var4, var_mtype, var_name);
2721 }
2722 var = var7;
2723 goto RET_LABEL;
2724 RET_LABEL:;
2725 return var;
2726 }
2727 /* method typing$TypeVisitor$resolve_mtype for (self: TypeVisitor, AType): nullable MType */
2728 val* nitc__typing___nitc__typing__TypeVisitor___resolve_mtype(val* self, val* p0) {
2729 val* var /* : nullable MType */;
2730 val* var_node /* var node: AType */;
2731 val* var1 /* : ModelBuilder */;
2732 val* var3 /* : ModelBuilder */;
2733 val* var4 /* : MModule */;
2734 val* var6 /* : MModule */;
2735 val* var7 /* : nullable MClassDef */;
2736 val* var9 /* : nullable MClassDef */;
2737 val* var10 /* : nullable MType */;
2738 var_node = p0;
2739 {
2740 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2741 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2742 if (unlikely(var3 == NULL)) {
2743 if(catchStack.cursor >= 0){
2744 longjmp(catchStack.envs[catchStack.cursor], 1);
2745 }
2746 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2747 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2748 fatal_exit(1);
2749 }
2750 var1 = var3;
2751 RET_LABEL2:(void)0;
2752 }
2753 }
2754 {
2755 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
2756 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2757 if (unlikely(var6 == NULL)) {
2758 if(catchStack.cursor >= 0){
2759 longjmp(catchStack.envs[catchStack.cursor], 1);
2760 }
2761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2762 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
2763 fatal_exit(1);
2764 }
2765 var4 = var6;
2766 RET_LABEL5:(void)0;
2767 }
2768 }
2769 {
2770 { /* Inline typing$TypeVisitor$mclassdef (self) on <self:TypeVisitor> */
2771 var9 = self->attrs[COLOR_nitc__typing__TypeVisitor___mclassdef].val; /* _mclassdef on <self:TypeVisitor> */
2772 var7 = var9;
2773 RET_LABEL8:(void)0;
2774 }
2775 }
2776 {
2777 var10 = nitc___nitc__ModelBuilder___resolve_mtype(var1, var4, var7, var_node);
2778 }
2779 var = var10;
2780 goto RET_LABEL;
2781 RET_LABEL:;
2782 return var;
2783 }
2784 /* method typing$TypeVisitor$try_get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
2785 val* nitc__typing___nitc__typing__TypeVisitor___try_get_mclass(val* self, val* p0, val* p1) {
2786 val* var /* : nullable MClass */;
2787 val* var_node /* var node: ANode */;
2788 val* var_name /* var name: String */;
2789 val* var1 /* : ModelBuilder */;
2790 val* var3 /* : ModelBuilder */;
2791 val* var4 /* : MModule */;
2792 val* var6 /* : MModule */;
2793 val* var7 /* : nullable MClass */;
2794 val* var_mclass /* var mclass: nullable MClass */;
2795 var_node = p0;
2796 var_name = p1;
2797 {
2798 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2799 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2800 if (unlikely(var3 == NULL)) {
2801 if(catchStack.cursor >= 0){
2802 longjmp(catchStack.envs[catchStack.cursor], 1);
2803 }
2804 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2805 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2806 fatal_exit(1);
2807 }
2808 var1 = var3;
2809 RET_LABEL2:(void)0;
2810 }
2811 }
2812 {
2813 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
2814 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2815 if (unlikely(var6 == NULL)) {
2816 if(catchStack.cursor >= 0){
2817 longjmp(catchStack.envs[catchStack.cursor], 1);
2818 }
2819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2820 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
2821 fatal_exit(1);
2822 }
2823 var4 = var6;
2824 RET_LABEL5:(void)0;
2825 }
2826 }
2827 {
2828 var7 = nitc___nitc__ModelBuilder___try_get_mclass_by_name(var1, var_node, var4, var_name);
2829 }
2830 var_mclass = var7;
2831 var = var_mclass;
2832 goto RET_LABEL;
2833 RET_LABEL:;
2834 return var;
2835 }
2836 /* method typing$TypeVisitor$get_mclass for (self: TypeVisitor, ANode, String): nullable MClass */
2837 val* nitc__typing___nitc__typing__TypeVisitor___get_mclass(val* self, val* p0, val* p1) {
2838 val* var /* : nullable MClass */;
2839 val* var_node /* var node: ANode */;
2840 val* var_name /* var name: String */;
2841 val* var1 /* : ModelBuilder */;
2842 val* var3 /* : ModelBuilder */;
2843 val* var4 /* : MModule */;
2844 val* var6 /* : MModule */;
2845 val* var7 /* : nullable MClass */;
2846 val* var_mclass /* var mclass: nullable MClass */;
2847 var_node = p0;
2848 var_name = p1;
2849 {
2850 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
2851 var3 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
2852 if (unlikely(var3 == NULL)) {
2853 if(catchStack.cursor >= 0){
2854 longjmp(catchStack.envs[catchStack.cursor], 1);
2855 }
2856 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2857 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
2858 fatal_exit(1);
2859 }
2860 var1 = var3;
2861 RET_LABEL2:(void)0;
2862 }
2863 }
2864 {
2865 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
2866 var6 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
2867 if (unlikely(var6 == NULL)) {
2868 if(catchStack.cursor >= 0){
2869 longjmp(catchStack.envs[catchStack.cursor], 1);
2870 }
2871 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
2872 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
2873 fatal_exit(1);
2874 }
2875 var4 = var6;
2876 RET_LABEL5:(void)0;
2877 }
2878 }
2879 {
2880 var7 = nitc___nitc__ModelBuilder___get_mclass_by_name(var1, var_node, var4, var_name);
2881 }
2882 var_mclass = var7;
2883 var = var_mclass;
2884 goto RET_LABEL;
2885 RET_LABEL:;
2886 return var;
2887 }
2888 /* method typing$TypeVisitor$type_bool for (self: TypeVisitor, ANode): nullable MType */
2889 val* nitc__typing___nitc__typing__TypeVisitor___type_bool(val* self, val* p0) {
2890 val* var /* : nullable MType */;
2891 val* var_node /* var node: ANode */;
2892 static val* varonce;
2893 val* var1 /* : String */;
2894 char* var2 /* : CString */;
2895 val* var3 /* : String */;
2896 val* var4 /* : nullable Int */;
2897 val* var5 /* : nullable Int */;
2898 val* var6 /* : nullable Bool */;
2899 val* var7 /* : nullable Bool */;
2900 val* var8 /* : nullable MClass */;
2901 val* var_mclass /* var mclass: nullable MClass */;
2902 short int var9 /* : Bool */;
2903 short int var10 /* : Bool */;
2904 val* var_other /* var other: nullable Object */;
2905 short int var12 /* : Bool */;
2906 short int var14 /* : Bool */;
2907 val* var15 /* : MClassType */;
2908 val* var17 /* : MClassType */;
2909 var_node = p0;
2910 if (likely(varonce!=NULL)) {
2911 var1 = varonce;
2912 } else {
2913 var2 = "Bool";
2914 var4 = (val*)(4l<<2|1);
2915 var5 = (val*)(4l<<2|1);
2916 var6 = (val*)((long)(0)<<2|3);
2917 var7 = (val*)((long)(0)<<2|3);
2918 var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
2919 var1 = var3;
2920 varonce = var1;
2921 }
2922 {
2923 var8 = nitc__typing___nitc__typing__TypeVisitor___get_mclass(self, var_node, var1);
2924 }
2925 var_mclass = var8;
2926 if (var_mclass == NULL) {
2927 var9 = 1; /* is null */
2928 } else {
2929 var9 = 0; /* arg is null but recv is not */
2930 }
2931 if (0) {
2932 { /* Inline kernel$Object$== (var_mclass,((val*)NULL)) on <var_mclass:nullable MClass> */
2933 var_other = ((val*)NULL);
2934 {
2935 { /* Inline kernel$Object$is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
2936 var14 = var_mclass == var_other;
2937 var12 = var14;
2938 goto RET_LABEL13;
2939 RET_LABEL13:(void)0;
2940 }
2941 }
2942 var10 = var12;
2943 goto RET_LABEL11;
2944 RET_LABEL11:(void)0;
2945 }
2946 var9 = var10;
2947 }
2948 if (var9){
2949 var = ((val*)NULL);
2950 goto RET_LABEL;
2951 } else {
2952 }
2953 {
2954 { /* Inline model$MClass$mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
2955 var17 = var_mclass->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
2956 if (unlikely(var17 == NULL)) {
2957 if(catchStack.cursor >= 0){
2958 longjmp(catchStack.envs[catchStack.cursor], 1);
2959 }
2960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
2961 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 520);
2962 fatal_exit(1);
2963 }
2964 var15 = var17;
2965 RET_LABEL16:(void)0;
2966 }
2967 }
2968 var = var15;
2969 goto RET_LABEL;
2970 RET_LABEL:;
2971 return var;
2972 }
2973 /* method typing$TypeVisitor$get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
2974 val* nitc__typing___nitc__typing__TypeVisitor___get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
2975 val* var /* : nullable CallSite */;
2976 val* var_node /* var node: ANode */;
2977 val* var_recvtype /* var recvtype: MType */;
2978 val* var_name /* var name: String */;
2979 short int var_recv_is_self /* var recv_is_self: Bool */;
2980 val* var1 /* : MType */;
2981 val* var_unsafe_type /* var unsafe_type: MType */;
2982 short int var2 /* : Bool */;
2983 int cltype;
2984 int idtype;
2985 static val* varonce;
2986 val* var3 /* : String */;
2987 char* var4 /* : CString */;
2988 val* var5 /* : String */;
2989 val* var6 /* : nullable Int */;
2990 val* var7 /* : nullable Int */;
2991 val* var8 /* : nullable Bool */;
2992 val* var9 /* : nullable Bool */;
2993 val* var10 /* : nullable MClass */;
2994 val* var_objclass /* var objclass: nullable MClass */;
2995 short int var11 /* : Bool */;
2996 short int var12 /* : Bool */;
2997 val* var_other /* var other: nullable Object */;
2998 short int var14 /* : Bool */;
2999 short int var16 /* : Bool */;
3000 val* var17 /* : MClassType */;
3001 val* var19 /* : MClassType */;
3002 val* var20 /* : nullable MProperty */;
3003 val* var_mproperty /* var mproperty: nullable MProperty */;
3004 short int var21 /* : Bool */;
3005 static val* varonce22;
3006 val* var23 /* : String */;
3007 char* var24 /* : CString */;
3008 val* var25 /* : String */;
3009 val* var26 /* : nullable Int */;
3010 val* var27 /* : nullable Int */;
3011 val* var28 /* : nullable Bool */;
3012 val* var29 /* : nullable Bool */;
3013 short int var30 /* : Bool */;
3014 short int var_ /* var : Bool */;
3015 short int var31 /* : Bool */;
3016 short int var32 /* : Bool */;
3017 short int var34 /* : Bool */;
3018 short int var36 /* : Bool */;
3019 static val* varonce37;
3020 val* var38 /* : String */;
3021 char* var39 /* : CString */;
3022 val* var40 /* : String */;
3023 val* var41 /* : nullable Int */;
3024 val* var42 /* : nullable Int */;
3025 val* var43 /* : nullable Bool */;
3026 val* var44 /* : nullable Bool */;
3027 val* var45 /* : nullable MProperty */;
3028 short int var46 /* : Bool */;
3029 short int var47 /* : Bool */;
3030 short int var49 /* : Bool */;
3031 short int var51 /* : Bool */;
3032 val* var52 /* : ModelBuilder */;
3033 val* var54 /* : ModelBuilder */;
3034 val* var56 /* : NativeArray[String] */;
3035 static val* varonce55;
3036 static val* varonce57;
3037 val* var58 /* : String */;
3038 char* var59 /* : CString */;
3039 val* var60 /* : String */;
3040 val* var61 /* : nullable Int */;
3041 val* var62 /* : nullable Int */;
3042 val* var63 /* : nullable Bool */;
3043 val* var64 /* : nullable Bool */;
3044 static val* varonce65;
3045 val* var66 /* : String */;
3046 char* var67 /* : CString */;
3047 val* var68 /* : String */;
3048 val* var69 /* : nullable Int */;
3049 val* var70 /* : nullable Int */;
3050 val* var71 /* : nullable Bool */;
3051 val* var72 /* : nullable Bool */;
3052 static val* varonce73;
3053 val* var74 /* : String */;
3054 char* var75 /* : CString */;
3055 val* var76 /* : String */;
3056 val* var77 /* : nullable Int */;
3057 val* var78 /* : nullable Int */;
3058 val* var79 /* : nullable Bool */;
3059 val* var80 /* : nullable Bool */;
3060 val* var81 /* : String */;
3061 val* var82 /* : String */;
3062 short int var83 /* : Bool */;
3063 val* var84 /* : ModelBuilder */;
3064 val* var86 /* : ModelBuilder */;
3065 val* var88 /* : NativeArray[String] */;
3066 static val* varonce87;
3067 static val* varonce89;
3068 val* var90 /* : String */;
3069 char* var91 /* : CString */;
3070 val* var92 /* : String */;
3071 val* var93 /* : nullable Int */;
3072 val* var94 /* : nullable Int */;
3073 val* var95 /* : nullable Bool */;
3074 val* var96 /* : nullable Bool */;
3075 static val* varonce97;
3076 val* var98 /* : String */;
3077 char* var99 /* : CString */;
3078 val* var100 /* : String */;
3079 val* var101 /* : nullable Int */;
3080 val* var102 /* : nullable Int */;
3081 val* var103 /* : nullable Bool */;
3082 val* var104 /* : nullable Bool */;
3083 static val* varonce105;
3084 val* var106 /* : String */;
3085 char* var107 /* : CString */;
3086 val* var108 /* : String */;
3087 val* var109 /* : nullable Int */;
3088 val* var110 /* : nullable Int */;
3089 val* var111 /* : nullable Bool */;
3090 val* var112 /* : nullable Bool */;
3091 static val* varonce113;
3092 val* var114 /* : String */;
3093 char* var115 /* : CString */;
3094 val* var116 /* : String */;
3095 val* var117 /* : nullable Int */;
3096 val* var118 /* : nullable Int */;
3097 val* var119 /* : nullable Bool */;
3098 val* var120 /* : nullable Bool */;
3099 val* var121 /* : String */;
3100 val* var122 /* : String */;
3101 val* var123 /* : String */;
3102 val* var124 /* : ModelBuilder */;
3103 val* var126 /* : ModelBuilder */;
3104 val* var128 /* : NativeArray[String] */;
3105 static val* varonce127;
3106 static val* varonce129;
3107 val* var130 /* : String */;
3108 char* var131 /* : CString */;
3109 val* var132 /* : String */;
3110 val* var133 /* : nullable Int */;
3111 val* var134 /* : nullable Int */;
3112 val* var135 /* : nullable Bool */;
3113 val* var136 /* : nullable Bool */;
3114 static val* varonce137;
3115 val* var138 /* : String */;
3116 char* var139 /* : CString */;
3117 val* var140 /* : String */;
3118 val* var141 /* : nullable Int */;
3119 val* var142 /* : nullable Int */;
3120 val* var143 /* : nullable Bool */;
3121 val* var144 /* : nullable Bool */;
3122 static val* varonce145;
3123 val* var146 /* : String */;
3124 char* var147 /* : CString */;
3125 val* var148 /* : String */;
3126 val* var149 /* : nullable Int */;
3127 val* var150 /* : nullable Int */;
3128 val* var151 /* : nullable Bool */;
3129 val* var152 /* : nullable Bool */;
3130 val* var153 /* : String */;
3131 val* var154 /* : String */;
3132 short int var155 /* : Bool */;
3133 int cltype156;
3134 int idtype157;
3135 short int var158 /* : Bool */;
3136 short int var159 /* : Bool */;
3137 int cltype160;
3138 int idtype161;
3139 short int var_162 /* var : Bool */;
3140 short int var163 /* : Bool */;
3141 short int var164 /* : Bool */;
3142 val* var166 /* : NativeArray[String] */;
3143 static val* varonce165;
3144 static val* varonce167;
3145 val* var168 /* : String */;
3146 char* var169 /* : CString */;
3147 val* var170 /* : String */;
3148 val* var171 /* : nullable Int */;
3149 val* var172 /* : nullable Int */;
3150 val* var173 /* : nullable Bool */;
3151 val* var174 /* : nullable Bool */;
3152 static val* varonce175;
3153 val* var176 /* : String */;
3154 char* var177 /* : CString */;
3155 val* var178 /* : String */;
3156 val* var179 /* : nullable Int */;
3157 val* var180 /* : nullable Int */;
3158 val* var181 /* : nullable Bool */;
3159 val* var182 /* : nullable Bool */;
3160 val* var183 /* : String */;
3161 short int var184 /* : Bool */;
3162 short int var185 /* : Bool */;
3163 int cltype186;
3164 int idtype187;
3165 short int var_188 /* var : Bool */;
3166 short int var189 /* : Bool */;
3167 short int var190 /* : Bool */;
3168 val* var191 /* : ModelBuilder */;
3169 val* var193 /* : ModelBuilder */;
3170 static val* varonce194;
3171 val* var195 /* : String */;
3172 char* var196 /* : CString */;
3173 val* var197 /* : String */;
3174 val* var198 /* : nullable Int */;
3175 val* var199 /* : nullable Int */;
3176 val* var200 /* : nullable Bool */;
3177 val* var201 /* : nullable Bool */;
3178 val* var203 /* : NativeArray[String] */;
3179 static val* varonce202;
3180 static val* varonce204;
3181 val* var205 /* : String */;
3182 char* var206 /* : CString */;
3183 val* var207 /* : String */;
3184 val* var208 /* : nullable Int */;
3185 val* var209 /* : nullable Int */;
3186 val* var210 /* : nullable Bool */;
3187 val* var211 /* : nullable Bool */;
3188 static val* varonce212;
3189 val* var213 /* : String */;
3190 char* var214 /* : CString */;
3191 val* var215 /* : String */;
3192 val* var216 /* : nullable Int */;
3193 val* var217 /* : nullable Int */;
3194 val* var218 /* : nullable Bool */;
3195 val* var219 /* : nullable Bool */;
3196 val* var220 /* : String */;
3197 val* var221 /* : String */;
3198 short int var222 /* : Bool */;
3199 short int var223 /* : Bool */;
3200 short int var224 /* : Bool */;
3201 short int var226 /* : Bool */;
3202 short int var_227 /* var : Bool */;
3203 short int var_228 /* var : Bool */;
3204 short int var229 /* : Bool */;
3205 short int var231 /* : Bool */;
3206 short int var232 /* : Bool */;
3207 val* var234 /* : NativeArray[String] */;
3208 static val* varonce233;
3209 static val* varonce235;
3210 val* var236 /* : String */;
3211 char* var237 /* : CString */;
3212 val* var238 /* : String */;
3213 val* var239 /* : nullable Int */;
3214 val* var240 /* : nullable Int */;
3215 val* var241 /* : nullable Bool */;
3216 val* var242 /* : nullable Bool */;
3217 static val* varonce243;
3218 val* var244 /* : String */;
3219 char* var245 /* : CString */;
3220 val* var246 /* : String */;
3221 val* var247 /* : nullable Int */;
3222 val* var248 /* : nullable Int */;
3223 val* var249 /* : nullable Bool */;
3224 val* var250 /* : nullable Bool */;
3225 val* var251 /* : String */;
3226 short int var252 /* : Bool */;
3227 short int var253 /* : Bool */;
3228 short int var_254 /* var : Bool */;
3229 short int var255 /* : Bool */;
3230 short int var257 /* : Bool */;
3231 val* var259 /* : NativeArray[String] */;
3232 static val* varonce258;
3233 static val* varonce260;
3234 val* var261 /* : String */;
3235 char* var262 /* : CString */;
3236 val* var263 /* : String */;
3237 val* var264 /* : nullable Int */;
3238 val* var265 /* : nullable Int */;
3239 val* var266 /* : nullable Bool */;
3240 val* var267 /* : nullable Bool */;
3241 static val* varonce268;
3242 val* var269 /* : String */;
3243 char* var270 /* : CString */;
3244 val* var271 /* : String */;
3245 val* var272 /* : nullable Int */;
3246 val* var273 /* : nullable Int */;
3247 val* var274 /* : nullable Bool */;
3248 val* var275 /* : nullable Bool */;
3249 val* var276 /* : String */;
3250 short int var277 /* : Bool */;
3251 short int var278 /* : Bool */;
3252 short int var279 /* : Bool */;
3253 val* var280 /* : MVisibility */;
3254 val* var282 /* : MVisibility */;
3255 val* var283 /* : Sys */;
3256 val* var284 /* : MVisibility */;
3257 short int var285 /* : Bool */;
3258 short int var287 /* : Bool */;
3259 short int var289 /* : Bool */;
3260 short int var_290 /* var : Bool */;
3261 short int var291 /* : Bool */;
3262 short int var_292 /* var : Bool */;
3263 val* var293 /* : MModule */;
3264 val* var295 /* : MModule */;
3265 val* var296 /* : MClassDef */;
3266 val* var298 /* : MClassDef */;
3267 val* var299 /* : MModule */;
3268 val* var301 /* : MModule */;
3269 val* var302 /* : MVisibility */;
3270 val* var303 /* : Sys */;
3271 val* var304 /* : MVisibility */;
3272 short int var305 /* : Bool */;
3273 short int var_306 /* var : Bool */;
3274 val* var307 /* : ModelBuilder */;
3275 val* var309 /* : ModelBuilder */;
3276 val* var310 /* : ToolContext */;
3277 val* var312 /* : ToolContext */;
3278 val* var313 /* : OptionBool */;
3279 val* var315 /* : OptionBool */;
3280 val* var316 /* : nullable Object */;
3281 val* var318 /* : nullable Object */;
3282 short int var319 /* : Bool */;
3283 short int var320 /* : Bool */;
3284 val* var321 /* : ModelBuilder */;
3285 val* var323 /* : ModelBuilder */;
3286 val* var325 /* : NativeArray[String] */;
3287 static val* varonce324;
3288 static val* varonce326;
3289 val* var327 /* : String */;
3290 char* var328 /* : CString */;
3291 val* var329 /* : String */;
3292 val* var330 /* : nullable Int */;
3293 val* var331 /* : nullable Int */;
3294 val* var332 /* : nullable Bool */;
3295 val* var333 /* : nullable Bool */;
3296 static val* varonce334;
3297 val* var335 /* : String */;
3298 char* var336 /* : CString */;
3299 val* var337 /* : String */;
3300 val* var338 /* : nullable Int */;
3301 val* var339 /* : nullable Int */;
3302 val* var340 /* : nullable Bool */;
3303 val* var341 /* : nullable Bool */;
3304 val* var342 /* : String */;
3305 val* var343 /* : nullable MDeprecationInfo */;
3306 val* var345 /* : nullable MDeprecationInfo */;
3307 val* var_info /* var info: nullable MDeprecationInfo */;
3308 short int var346 /* : Bool */;
3309 short int var347 /* : Bool */;
3310 short int var348 /* : Bool */;
3311 val* var_other350 /* var other: nullable Object */;
3312 short int var351 /* : Bool */;
3313 short int var352 /* : Bool */;
3314 short int var_353 /* var : Bool */;
3315 val* var354 /* : nullable MPropDef */;
3316 val* var356 /* : nullable MPropDef */;
3317 val* var357 /* : MProperty */;
3318 val* var359 /* : MProperty */;
3319 val* var360 /* : nullable MDeprecationInfo */;
3320 val* var362 /* : nullable MDeprecationInfo */;
3321 short int var363 /* : Bool */;
3322 short int var364 /* : Bool */;
3323 short int var366 /* : Bool */;
3324 short int var368 /* : Bool */;
3325 val* var369 /* : nullable MDoc */;
3326 val* var371 /* : nullable MDoc */;
3327 val* var_mdoc /* var mdoc: nullable MDoc */;
3328 short int var372 /* : Bool */;
3329 short int var373 /* : Bool */;
3330 short int var375 /* : Bool */;
3331 short int var376 /* : Bool */;
3332 val* var377 /* : ModelBuilder */;
3333 val* var379 /* : ModelBuilder */;
3334 static val* varonce380;
3335 val* var381 /* : String */;
3336 char* var382 /* : CString */;
3337 val* var383 /* : String */;
3338 val* var384 /* : nullable Int */;
3339 val* var385 /* : nullable Int */;
3340 val* var386 /* : nullable Bool */;
3341 val* var387 /* : nullable Bool */;
3342 val* var389 /* : NativeArray[String] */;
3343 static val* varonce388;
3344 static val* varonce390;
3345 val* var391 /* : String */;
3346 char* var392 /* : CString */;
3347 val* var393 /* : String */;
3348 val* var394 /* : nullable Int */;
3349 val* var395 /* : nullable Int */;
3350 val* var396 /* : nullable Bool */;
3351 val* var397 /* : nullable Bool */;
3352 static val* varonce398;
3353 val* var399 /* : String */;
3354 char* var400 /* : CString */;
3355 val* var401 /* : String */;
3356 val* var402 /* : nullable Int */;
3357 val* var403 /* : nullable Int */;
3358 val* var404 /* : nullable Bool */;
3359 val* var405 /* : nullable Bool */;
3360 val* var406 /* : Array[String] */;
3361 val* var408 /* : Array[String] */;
3362 val* var409 /* : nullable Object */;
3363 val* var410 /* : String */;
3364 val* var411 /* : ModelBuilder */;
3365 val* var413 /* : ModelBuilder */;
3366 static val* varonce414;
3367 val* var415 /* : String */;
3368 char* var416 /* : CString */;
3369 val* var417 /* : String */;
3370 val* var418 /* : nullable Int */;
3371 val* var419 /* : nullable Int */;
3372 val* var420 /* : nullable Bool */;
3373 val* var421 /* : nullable Bool */;
3374 val* var423 /* : NativeArray[String] */;
3375 static val* varonce422;
3376 static val* varonce424;
3377 val* var425 /* : String */;
3378 char* var426 /* : CString */;
3379 val* var427 /* : String */;
3380 val* var428 /* : nullable Int */;
3381 val* var429 /* : nullable Int */;
3382 val* var430 /* : nullable Bool */;
3383 val* var431 /* : nullable Bool */;
3384 static val* varonce432;
3385 val* var433 /* : String */;
3386 char* var434 /* : CString */;
3387 val* var435 /* : String */;
3388 val* var436 /* : nullable Int */;
3389 val* var437 /* : nullable Int */;
3390 val* var438 /* : nullable Bool */;
3391 val* var439 /* : nullable Bool */;
3392 val* var440 /* : String */;
3393 val* var441 /* : MModule */;
3394 val* var443 /* : MModule */;
3395 val* var444 /* : Array[MPropDef] */;
3396 val* var_propdefs /* var propdefs: Array[MMethodDef] */;
3397 long var445 /* : Int */;
3398 long var447 /* : Int */;
3399 short int var448 /* : Bool */;
3400 short int var450 /* : Bool */;
3401 val* var451 /* : ModelBuilder */;
3402 val* var453 /* : ModelBuilder */;
3403 val* var455 /* : NativeArray[String] */;
3404 static val* varonce454;
3405 static val* varonce456;
3406 val* var457 /* : String */;
3407 char* var458 /* : CString */;
3408 val* var459 /* : String */;
3409 val* var460 /* : nullable Int */;
3410 val* var461 /* : nullable Int */;
3411 val* var462 /* : nullable Bool */;
3412 val* var463 /* : nullable Bool */;
3413 static val* varonce464;
3414 val* var465 /* : String */;
3415 char* var466 /* : CString */;
3416 val* var467 /* : String */;
3417 val* var468 /* : nullable Int */;
3418 val* var469 /* : nullable Int */;
3419 val* var470 /* : nullable Bool */;
3420 val* var471 /* : nullable Bool */;
3421 static val* varonce472;
3422 val* var473 /* : String */;
3423 char* var474 /* : CString */;
3424 val* var475 /* : String */;
3425 val* var476 /* : nullable Int */;
3426 val* var477 /* : nullable Int */;
3427 val* var478 /* : nullable Bool */;
3428 val* var479 /* : nullable Bool */;
3429 val* var480 /* : String */;
3430 val* var481 /* : String */;
3431 long var482 /* : Int */;
3432 long var484 /* : Int */;
3433 short int var485 /* : Bool */;
3434 short int var487 /* : Bool */;
3435 val* var488 /* : nullable Object */;
3436 val* var_mpropdef /* var mpropdef: nullable Object */;
3437 val* var489 /* : ModelBuilder */;
3438 val* var491 /* : ModelBuilder */;
3439 static val* varonce492;
3440 val* var493 /* : String */;
3441 char* var494 /* : CString */;
3442 val* var495 /* : String */;
3443 val* var496 /* : nullable Int */;
3444 val* var497 /* : nullable Int */;
3445 val* var498 /* : nullable Bool */;
3446 val* var499 /* : nullable Bool */;
3447 val* var501 /* : NativeArray[String] */;
3448 static val* varonce500;
3449 static val* varonce502;
3450 val* var503 /* : String */;
3451 char* var504 /* : CString */;
3452 val* var505 /* : String */;
3453 val* var506 /* : nullable Int */;
3454 val* var507 /* : nullable Int */;
3455 val* var508 /* : nullable Bool */;
3456 val* var509 /* : nullable Bool */;
3457 static val* varonce510;
3458 val* var511 /* : String */;
3459 char* var512 /* : CString */;
3460 val* var513 /* : String */;
3461 val* var514 /* : nullable Int */;
3462 val* var515 /* : nullable Int */;
3463 val* var516 /* : nullable Bool */;
3464 val* var517 /* : nullable Bool */;
3465 static val* varonce518;
3466 val* var519 /* : String */;
3467 char* var520 /* : CString */;
3468 val* var521 /* : String */;
3469 val* var522 /* : nullable Int */;
3470 val* var523 /* : nullable Int */;
3471 val* var524 /* : nullable Bool */;
3472 val* var525 /* : nullable Bool */;
3473 val* var526 /* : String */;
3474 static val* varonce527;
3475 val* var528 /* : String */;
3476 char* var529 /* : CString */;
3477 val* var530 /* : String */;
3478 val* var531 /* : nullable Int */;
3479 val* var532 /* : nullable Int */;
3480 val* var533 /* : nullable Bool */;
3481 val* var534 /* : nullable Bool */;
3482 val* var535 /* : String */;
3483 val* var536 /* : String */;
3484 val* var537 /* : MPropDef */;
3485 val* var539 /* : MPropDef */;
3486 val* var540 /* : nullable MSignature */;
3487 val* var541 /* : nullable MSignature */;
3488 val* var543 /* : nullable MSignature */;
3489 val* var544 /* : nullable MSignature */;
3490 val* var546 /* : nullable MSignature */;
3491 val* var_msignature /* var msignature: nullable MSignature */;
3492 short int var547 /* : Bool */;
3493 short int var548 /* : Bool */;
3494 short int var550 /* : Bool */;
3495 short int var552 /* : Bool */;
3496 val* var553 /* : MType */;
3497 short int var554 /* : Bool */;
3498 int cltype555;
3499 int idtype556;
3500 const char* var_class_name;
3501 short int var_erasure_cast /* var erasure_cast: Bool */;
3502 val* var557 /* : nullable MSignature */;
3503 val* var559 /* : nullable MSignature */;
3504 val* var560 /* : nullable MType */;
3505 val* var562 /* : nullable MType */;
3506 val* var_rettype /* var rettype: nullable MType */;
3507 short int var563 /* : Bool */;
3508 short int var564 /* : Bool */;
3509 short int var_565 /* var : Bool */;
3510 short int var566 /* : Bool */;
3511 short int var567 /* : Bool */;
3512 short int var569 /* : Bool */;
3513 short int var570 /* : Bool */;
3514 val* var571 /* : MType */;
3515 short int var572 /* : Bool */;
3516 int cltype573;
3517 int idtype574;
3518 val* var575 /* : nullable MType */;
3519 val* var577 /* : nullable MType */;
3520 val* var_erased_rettype /* var erased_rettype: nullable MType */;
3521 short int var578 /* : Bool */;
3522 short int var579 /* : Bool */;
3523 short int var581 /* : Bool */;
3524 short int var582 /* : Bool */;
3525 val* var583 /* : CallSite */;
3526 val* var584 /* : Location */;
3527 val* var585 /* : MModule */;
3528 val* var587 /* : MModule */;
3529 val* var588 /* : nullable MClassType */;
3530 val* var590 /* : nullable MClassType */;
3531 val* var_callsite /* var callsite: CallSite */;
3532 var_node = p0;
3533 var_recvtype = p1;
3534 var_name = p2;
3535 var_recv_is_self = p3;
3536 {
3537 var1 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_recvtype);
3538 }
3539 var_unsafe_type = var1;
3540 /* <var_recvtype:MType> isa MNullType */
3541 cltype = type_nitc__MNullType.color;
3542 idtype = type_nitc__MNullType.id;
3543 if(cltype >= var_recvtype->type->table_size) {
3544 var2 = 0;
3545 } else {
3546 var2 = var_recvtype->type->type_table[cltype] == idtype;
3547 }
3548 if (var2){
3549 if (likely(varonce!=NULL)) {
3550 var3 = varonce;
3551 } else {
3552 var4 = "Object";
3553 var6 = (val*)(6l<<2|1);
3554 var7 = (val*)(6l<<2|1);
3555 var8 = (val*)((long)(0)<<2|3);
3556 var9 = (val*)((long)(0)<<2|3);
3557 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
3558 var3 = var5;
3559 varonce = var3;
3560 }
3561 {
3562 var10 = nitc__typing___nitc__typing__TypeVisitor___get_mclass(self, var_node, var3);
3563 }
3564 var_objclass = var10;
3565 if (var_objclass == NULL) {
3566 var11 = 1; /* is null */
3567 } else {
3568 var11 = 0; /* arg is null but recv is not */
3569 }
3570 if (0) {
3571 { /* Inline kernel$Object$== (var_objclass,((val*)NULL)) on <var_objclass:nullable MClass> */
3572 var_other = ((val*)NULL);
3573 {
3574 { /* Inline kernel$Object$is_same_instance (var_objclass,var_other) on <var_objclass:nullable MClass(MClass)> */
3575 var16 = var_objclass == var_other;
3576 var14 = var16;
3577 goto RET_LABEL15;
3578 RET_LABEL15:(void)0;
3579 }
3580 }
3581 var12 = var14;
3582 goto RET_LABEL13;
3583 RET_LABEL13:(void)0;
3584 }
3585 var11 = var12;
3586 }
3587 if (var11){
3588 var = ((val*)NULL);
3589 goto RET_LABEL;
3590 } else {
3591 }
3592 {
3593 { /* Inline model$MClass$mclass_type (var_objclass) on <var_objclass:nullable MClass(MClass)> */
3594 var19 = var_objclass->attrs[COLOR_nitc__model__MClass___mclass_type].val; /* _mclass_type on <var_objclass:nullable MClass(MClass)> */
3595 if (unlikely(var19 == NULL)) {
3596 if(catchStack.cursor >= 0){
3597 longjmp(catchStack.envs[catchStack.cursor], 1);
3598 }
3599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
3600 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 520);
3601 fatal_exit(1);
3602 }
3603 var17 = var19;
3604 RET_LABEL18:(void)0;
3605 }
3606 }
3607 var_unsafe_type = var17;
3608 } else {
3609 }
3610 {
3611 var20 = nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
3612 }
3613 var_mproperty = var20;
3614 if (likely(varonce22!=NULL)) {
3615 var23 = varonce22;
3616 } else {
3617 var24 = "new";
3618 var26 = (val*)(3l<<2|1);
3619 var27 = (val*)(3l<<2|1);
3620 var28 = (val*)((long)(0)<<2|3);
3621 var29 = (val*)((long)(0)<<2|3);
3622 var25 = core__flat___CString___to_s_unsafe(var24, var26, var27, var28, var29);
3623 var23 = var25;
3624 varonce22 = var23;
3625 }
3626 {
3627 var30 = ((short int(*)(val* self, val* p0))(var_name->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_name, var23); /* == on <var_name:String>*/
3628 }
3629 var_ = var30;
3630 if (var30){
3631 if (var_mproperty == NULL) {
3632 var31 = 1; /* is null */
3633 } else {
3634 var31 = 0; /* arg is null but recv is not */
3635 }
3636 if (0) {
3637 { /* Inline kernel$Object$== (var_mproperty,((val*)NULL)) on <var_mproperty:nullable MProperty> */
3638 var_other = ((val*)NULL);
3639 {
3640 { /* Inline kernel$Object$is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
3641 var36 = var_mproperty == var_other;
3642 var34 = var36;
3643 goto RET_LABEL35;
3644 RET_LABEL35:(void)0;
3645 }
3646 }
3647 var32 = var34;
3648 goto RET_LABEL33;
3649 RET_LABEL33:(void)0;
3650 }
3651 var31 = var32;
3652 }
3653 var21 = var31;
3654 } else {
3655 var21 = var_;
3656 }
3657 if (var21){
3658 if (likely(varonce37!=NULL)) {
3659 var38 = varonce37;
3660 } else {
3661 var39 = "init";
3662 var41 = (val*)(4l<<2|1);
3663 var42 = (val*)(4l<<2|1);
3664 var43 = (val*)((long)(0)<<2|3);
3665 var44 = (val*)((long)(0)<<2|3);
3666 var40 = core__flat___CString___to_s_unsafe(var39, var41, var42, var43, var44);
3667 var38 = var40;
3668 varonce37 = var38;
3669 }
3670 var_name = var38;
3671 {
3672 var45 = nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
3673 }
3674 var_mproperty = var45;
3675 } else {
3676 }
3677 if (var_mproperty == NULL) {
3678 var46 = 1; /* is null */
3679 } else {
3680 var46 = 0; /* arg is null but recv is not */
3681 }
3682 if (0) {
3683 { /* Inline kernel$Object$== (var_mproperty,((val*)NULL)) on <var_mproperty:nullable MProperty> */
3684 var_other = ((val*)NULL);
3685 {
3686 { /* Inline kernel$Object$is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
3687 var51 = var_mproperty == var_other;
3688 var49 = var51;
3689 goto RET_LABEL50;
3690 RET_LABEL50:(void)0;
3691 }
3692 }
3693 var47 = var49;
3694 goto RET_LABEL48;
3695 RET_LABEL48:(void)0;
3696 }
3697 var46 = var47;
3698 }
3699 if (var46){
3700 if (var_recv_is_self){
3701 {
3702 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
3703 var54 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3704 if (unlikely(var54 == NULL)) {
3705 if(catchStack.cursor >= 0){
3706 longjmp(catchStack.envs[catchStack.cursor], 1);
3707 }
3708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3709 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
3710 fatal_exit(1);
3711 }
3712 var52 = var54;
3713 RET_LABEL53:(void)0;
3714 }
3715 }
3716 if (unlikely(varonce55==NULL)) {
3717 var56 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3718 if (likely(varonce57!=NULL)) {
3719 var58 = varonce57;
3720 } else {
3721 var59 = "Error: method or variable `";
3722 var61 = (val*)(27l<<2|1);
3723 var62 = (val*)(27l<<2|1);
3724 var63 = (val*)((long)(0)<<2|3);
3725 var64 = (val*)((long)(0)<<2|3);
3726 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
3727 var58 = var60;
3728 varonce57 = var58;
3729 }
3730 ((struct instance_core__NativeArray*)var56)->values[0]=var58;
3731 if (likely(varonce65!=NULL)) {
3732 var66 = varonce65;
3733 } else {
3734 var67 = "` unknown in `";
3735 var69 = (val*)(14l<<2|1);
3736 var70 = (val*)(14l<<2|1);
3737 var71 = (val*)((long)(0)<<2|3);
3738 var72 = (val*)((long)(0)<<2|3);
3739 var68 = core__flat___CString___to_s_unsafe(var67, var69, var70, var71, var72);
3740 var66 = var68;
3741 varonce65 = var66;
3742 }
3743 ((struct instance_core__NativeArray*)var56)->values[2]=var66;
3744 if (likely(varonce73!=NULL)) {
3745 var74 = varonce73;
3746 } else {
3747 var75 = "`.";
3748 var77 = (val*)(2l<<2|1);
3749 var78 = (val*)(2l<<2|1);
3750 var79 = (val*)((long)(0)<<2|3);
3751 var80 = (val*)((long)(0)<<2|3);
3752 var76 = core__flat___CString___to_s_unsafe(var75, var77, var78, var79, var80);
3753 var74 = var76;
3754 varonce73 = var74;
3755 }
3756 ((struct instance_core__NativeArray*)var56)->values[4]=var74;
3757 } else {
3758 var56 = varonce55;
3759 varonce55 = NULL;
3760 }
3761 ((struct instance_core__NativeArray*)var56)->values[1]=var_name;
3762 {
3763 var81 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:MType>*/
3764 }
3765 ((struct instance_core__NativeArray*)var56)->values[3]=var81;
3766 {
3767 var82 = ((val*(*)(val* self))(var56->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var56); /* native_to_s on <var56:NativeArray[String]>*/
3768 }
3769 varonce55 = var56;
3770 {
3771 nitc___nitc__ModelBuilder___error(var52, var_node, var82); /* Direct call modelbuilder_base$ModelBuilder$error on <var52:ModelBuilder>*/
3772 }
3773 } else {
3774 {
3775 var83 = ((short int(*)(val* self))(var_recvtype->class->vft[COLOR_nitc__model__MType__need_anchor]))(var_recvtype); /* need_anchor on <var_recvtype:MType>*/
3776 }
3777 if (var83){
3778 {
3779 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
3780 var86 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3781 if (unlikely(var86 == NULL)) {
3782 if(catchStack.cursor >= 0){
3783 longjmp(catchStack.envs[catchStack.cursor], 1);
3784 }
3785 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3786 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
3787 fatal_exit(1);
3788 }
3789 var84 = var86;
3790 RET_LABEL85:(void)0;
3791 }
3792 }
3793 if (unlikely(varonce87==NULL)) {
3794 var88 = NEW_core__NativeArray((int)7l, &type_core__NativeArray__core__String);
3795 if (likely(varonce89!=NULL)) {
3796 var90 = varonce89;
3797 } else {
3798 var91 = "Error: method `";
3799 var93 = (val*)(15l<<2|1);
3800 var94 = (val*)(15l<<2|1);
3801 var95 = (val*)((long)(0)<<2|3);
3802 var96 = (val*)((long)(0)<<2|3);
3803 var92 = core__flat___CString___to_s_unsafe(var91, var93, var94, var95, var96);
3804 var90 = var92;
3805 varonce89 = var90;
3806 }
3807 ((struct instance_core__NativeArray*)var88)->values[0]=var90;
3808 if (likely(varonce97!=NULL)) {
3809 var98 = varonce97;
3810 } else {
3811 var99 = "` does not exists in `";
3812 var101 = (val*)(22l<<2|1);
3813 var102 = (val*)(22l<<2|1);
3814 var103 = (val*)((long)(0)<<2|3);
3815 var104 = (val*)((long)(0)<<2|3);
3816 var100 = core__flat___CString___to_s_unsafe(var99, var101, var102, var103, var104);
3817 var98 = var100;
3818 varonce97 = var98;
3819 }
3820 ((struct instance_core__NativeArray*)var88)->values[2]=var98;
3821 if (likely(varonce105!=NULL)) {
3822 var106 = varonce105;
3823 } else {
3824 var107 = ": ";
3825 var109 = (val*)(2l<<2|1);
3826 var110 = (val*)(2l<<2|1);
3827 var111 = (val*)((long)(0)<<2|3);
3828 var112 = (val*)((long)(0)<<2|3);
3829 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
3830 var106 = var108;
3831 varonce105 = var106;
3832 }
3833 ((struct instance_core__NativeArray*)var88)->values[4]=var106;
3834 if (likely(varonce113!=NULL)) {
3835 var114 = varonce113;
3836 } else {
3837 var115 = "`.";
3838 var117 = (val*)(2l<<2|1);
3839 var118 = (val*)(2l<<2|1);
3840 var119 = (val*)((long)(0)<<2|3);
3841 var120 = (val*)((long)(0)<<2|3);
3842 var116 = core__flat___CString___to_s_unsafe(var115, var117, var118, var119, var120);
3843 var114 = var116;
3844 varonce113 = var114;
3845 }
3846 ((struct instance_core__NativeArray*)var88)->values[6]=var114;
3847 } else {
3848 var88 = varonce87;
3849 varonce87 = NULL;
3850 }
3851 ((struct instance_core__NativeArray*)var88)->values[1]=var_name;
3852 {
3853 var121 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:MType>*/
3854 }
3855 ((struct instance_core__NativeArray*)var88)->values[3]=var121;
3856 {
3857 var122 = ((val*(*)(val* self))(var_unsafe_type->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_unsafe_type); /* to_s on <var_unsafe_type:MType>*/
3858 }
3859 ((struct instance_core__NativeArray*)var88)->values[5]=var122;
3860 {
3861 var123 = ((val*(*)(val* self))(var88->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var88); /* native_to_s on <var88:NativeArray[String]>*/
3862 }
3863 varonce87 = var88;
3864 {
3865 nitc___nitc__ModelBuilder___error(var84, var_node, var123); /* Direct call modelbuilder_base$ModelBuilder$error on <var84:ModelBuilder>*/
3866 }
3867 } else {
3868 {
3869 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
3870 var126 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
3871 if (unlikely(var126 == NULL)) {
3872 if(catchStack.cursor >= 0){
3873 longjmp(catchStack.envs[catchStack.cursor], 1);
3874 }
3875 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3876 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
3877 fatal_exit(1);
3878 }
3879 var124 = var126;
3880 RET_LABEL125:(void)0;
3881 }
3882 }
3883 if (unlikely(varonce127==NULL)) {
3884 var128 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
3885 if (likely(varonce129!=NULL)) {
3886 var130 = varonce129;
3887 } else {
3888 var131 = "Error: method `";
3889 var133 = (val*)(15l<<2|1);
3890 var134 = (val*)(15l<<2|1);
3891 var135 = (val*)((long)(0)<<2|3);
3892 var136 = (val*)((long)(0)<<2|3);
3893 var132 = core__flat___CString___to_s_unsafe(var131, var133, var134, var135, var136);
3894 var130 = var132;
3895 varonce129 = var130;
3896 }
3897 ((struct instance_core__NativeArray*)var128)->values[0]=var130;
3898 if (likely(varonce137!=NULL)) {
3899 var138 = varonce137;
3900 } else {
3901 var139 = "` does not exists in `";
3902 var141 = (val*)(22l<<2|1);
3903 var142 = (val*)(22l<<2|1);
3904 var143 = (val*)((long)(0)<<2|3);
3905 var144 = (val*)((long)(0)<<2|3);
3906 var140 = core__flat___CString___to_s_unsafe(var139, var141, var142, var143, var144);
3907 var138 = var140;
3908 varonce137 = var138;
3909 }
3910 ((struct instance_core__NativeArray*)var128)->values[2]=var138;
3911 if (likely(varonce145!=NULL)) {
3912 var146 = varonce145;
3913 } else {
3914 var147 = "`.";
3915 var149 = (val*)(2l<<2|1);
3916 var150 = (val*)(2l<<2|1);
3917 var151 = (val*)((long)(0)<<2|3);
3918 var152 = (val*)((long)(0)<<2|3);
3919 var148 = core__flat___CString___to_s_unsafe(var147, var149, var150, var151, var152);
3920 var146 = var148;
3921 varonce145 = var146;
3922 }
3923 ((struct instance_core__NativeArray*)var128)->values[4]=var146;
3924 } else {
3925 var128 = varonce127;
3926 varonce127 = NULL;
3927 }
3928 ((struct instance_core__NativeArray*)var128)->values[1]=var_name;
3929 {
3930 var153 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:MType>*/
3931 }
3932 ((struct instance_core__NativeArray*)var128)->values[3]=var153;
3933 {
3934 var154 = ((val*(*)(val* self))(var128->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var128); /* native_to_s on <var128:NativeArray[String]>*/
3935 }
3936 varonce127 = var128;
3937 {
3938 nitc___nitc__ModelBuilder___error(var124, var_node, var154); /* Direct call modelbuilder_base$ModelBuilder$error on <var124:ModelBuilder>*/
3939 }
3940 }
3941 }
3942 var = ((val*)NULL);
3943 goto RET_LABEL;
3944 } else {
3945 }
3946 /* <var_mproperty:nullable MProperty(MProperty)> isa MMethod */
3947 cltype156 = type_nitc__MMethod.color;
3948 idtype157 = type_nitc__MMethod.id;
3949 if(cltype156 >= var_mproperty->type->table_size) {
3950 var155 = 0;
3951 } else {
3952 var155 = var_mproperty->type->type_table[cltype156] == idtype157;
3953 }
3954 if (unlikely(!var155)) {
3955 if(catchStack.cursor >= 0){
3956 longjmp(catchStack.envs[catchStack.cursor], 1);
3957 }
3958 PRINT_ERROR("Runtime error: %s", "Assert failed");
3959 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 336);
3960 fatal_exit(1);
3961 }
3962 /* <var_recvtype:MType> isa MNullType */
3963 cltype160 = type_nitc__MNullType.color;
3964 idtype161 = type_nitc__MNullType.id;
3965 if(cltype160 >= var_recvtype->type->table_size) {
3966 var159 = 0;
3967 } else {
3968 var159 = var_recvtype->type->type_table[cltype160] == idtype161;
3969 }
3970 var_162 = var159;
3971 if (var159){
3972 {
3973 var163 = nitc___nitc__MMethod___is_null_safe(var_mproperty);
3974 }
3975 var164 = !var163;
3976 var158 = var164;
3977 } else {
3978 var158 = var_162;
3979 }
3980 if (var158){
3981 if (unlikely(varonce165==NULL)) {
3982 var166 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3983 if (likely(varonce167!=NULL)) {
3984 var168 = varonce167;
3985 } else {
3986 var169 = "Error: method `";
3987 var171 = (val*)(15l<<2|1);
3988 var172 = (val*)(15l<<2|1);
3989 var173 = (val*)((long)(0)<<2|3);
3990 var174 = (val*)((long)(0)<<2|3);
3991 var170 = core__flat___CString___to_s_unsafe(var169, var171, var172, var173, var174);
3992 var168 = var170;
3993 varonce167 = var168;
3994 }
3995 ((struct instance_core__NativeArray*)var166)->values[0]=var168;
3996 if (likely(varonce175!=NULL)) {
3997 var176 = varonce175;
3998 } else {
3999 var177 = "` called on `null`.";
4000 var179 = (val*)(19l<<2|1);
4001 var180 = (val*)(19l<<2|1);
4002 var181 = (val*)((long)(0)<<2|3);
4003 var182 = (val*)((long)(0)<<2|3);
4004 var178 = core__flat___CString___to_s_unsafe(var177, var179, var180, var181, var182);
4005 var176 = var178;
4006 varonce175 = var176;
4007 }
4008 ((struct instance_core__NativeArray*)var166)->values[2]=var176;
4009 } else {
4010 var166 = varonce165;
4011 varonce165 = NULL;
4012 }
4013 ((struct instance_core__NativeArray*)var166)->values[1]=var_name;
4014 {
4015 var183 = ((val*(*)(val* self))(var166->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var166); /* native_to_s on <var166:NativeArray[String]>*/
4016 }
4017 varonce165 = var166;
4018 {
4019 nitc__typing___nitc__typing__TypeVisitor___error(self, var_node, var183); /* Direct call typing$TypeVisitor$error on <self:TypeVisitor>*/
4020 }
4021 var = ((val*)NULL);
4022 goto RET_LABEL;
4023 } else {
4024 /* <var_unsafe_type:MType> isa MNullableType */
4025 cltype186 = type_nitc__MNullableType.color;
4026 idtype187 = type_nitc__MNullableType.id;
4027 if(cltype186 >= var_unsafe_type->type->table_size) {
4028 var185 = 0;
4029 } else {
4030 var185 = var_unsafe_type->type->type_table[cltype186] == idtype187;
4031 }
4032 var_188 = var185;
4033 if (var185){
4034 {
4035 var189 = nitc___nitc__MMethod___is_null_safe(var_mproperty);
4036 }
4037 var190 = !var189;
4038 var184 = var190;
4039 } else {
4040 var184 = var_188;
4041 }
4042 if (var184){
4043 {
4044 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4045 var193 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4046 if (unlikely(var193 == NULL)) {
4047 if(catchStack.cursor >= 0){
4048 longjmp(catchStack.envs[catchStack.cursor], 1);
4049 }
4050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4051 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4052 fatal_exit(1);
4053 }
4054 var191 = var193;
4055 RET_LABEL192:(void)0;
4056 }
4057 }
4058 if (likely(varonce194!=NULL)) {
4059 var195 = varonce194;
4060 } else {
4061 var196 = "call-on-nullable";
4062 var198 = (val*)(16l<<2|1);
4063 var199 = (val*)(16l<<2|1);
4064 var200 = (val*)((long)(0)<<2|3);
4065 var201 = (val*)((long)(0)<<2|3);
4066 var197 = core__flat___CString___to_s_unsafe(var196, var198, var199, var200, var201);
4067 var195 = var197;
4068 varonce194 = var195;
4069 }
4070 if (unlikely(varonce202==NULL)) {
4071 var203 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4072 if (likely(varonce204!=NULL)) {
4073 var205 = varonce204;
4074 } else {
4075 var206 = "Warning: method call on a nullable receiver `";
4076 var208 = (val*)(45l<<2|1);
4077 var209 = (val*)(45l<<2|1);
4078 var210 = (val*)((long)(0)<<2|3);
4079 var211 = (val*)((long)(0)<<2|3);
4080 var207 = core__flat___CString___to_s_unsafe(var206, var208, var209, var210, var211);
4081 var205 = var207;
4082 varonce204 = var205;
4083 }
4084 ((struct instance_core__NativeArray*)var203)->values[0]=var205;
4085 if (likely(varonce212!=NULL)) {
4086 var213 = varonce212;
4087 } else {
4088 var214 = "`.";
4089 var216 = (val*)(2l<<2|1);
4090 var217 = (val*)(2l<<2|1);
4091 var218 = (val*)((long)(0)<<2|3);
4092 var219 = (val*)((long)(0)<<2|3);
4093 var215 = core__flat___CString___to_s_unsafe(var214, var216, var217, var218, var219);
4094 var213 = var215;
4095 varonce212 = var213;
4096 }
4097 ((struct instance_core__NativeArray*)var203)->values[2]=var213;
4098 } else {
4099 var203 = varonce202;
4100 varonce202 = NULL;
4101 }
4102 {
4103 var220 = ((val*(*)(val* self))(var_recvtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recvtype); /* to_s on <var_recvtype:MType>*/
4104 }
4105 ((struct instance_core__NativeArray*)var203)->values[1]=var220;
4106 {
4107 var221 = ((val*(*)(val* self))(var203->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var203); /* native_to_s on <var203:NativeArray[String]>*/
4108 }
4109 varonce202 = var203;
4110 {
4111 nitc___nitc__ModelBuilder___advice(var191, var_node, var195, var221); /* Direct call modelbuilder_base$ModelBuilder$advice on <var191:ModelBuilder>*/
4112 }
4113 } else {
4114 }
4115 }
4116 {
4117 { /* Inline typing$TypeVisitor$is_toplevel_context (self) on <self:TypeVisitor> */
4118 var226 = self->attrs[COLOR_nitc__typing__TypeVisitor___is_toplevel_context].s; /* _is_toplevel_context on <self:TypeVisitor> */
4119 var224 = var226;
4120 RET_LABEL225:(void)0;
4121 }
4122 }
4123 var_227 = var224;
4124 if (var224){
4125 var223 = var_recv_is_self;
4126 } else {
4127 var223 = var_227;
4128 }
4129 var_228 = var223;
4130 if (var223){
4131 {
4132 { /* Inline model$MMethod$is_toplevel (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4133 var231 = var_mproperty->attrs[COLOR_nitc__model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mproperty:nullable MProperty(MMethod)> */
4134 var229 = var231;
4135 RET_LABEL230:(void)0;
4136 }
4137 }
4138 var232 = !var229;
4139 var222 = var232;
4140 } else {
4141 var222 = var_228;
4142 }
4143 if (var222){
4144 if (unlikely(varonce233==NULL)) {
4145 var234 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4146 if (likely(varonce235!=NULL)) {
4147 var236 = varonce235;
4148 } else {
4149 var237 = "Error: `";
4150 var239 = (val*)(8l<<2|1);
4151 var240 = (val*)(8l<<2|1);
4152 var241 = (val*)((long)(0)<<2|3);
4153 var242 = (val*)((long)(0)<<2|3);
4154 var238 = core__flat___CString___to_s_unsafe(var237, var239, var240, var241, var242);
4155 var236 = var238;
4156 varonce235 = var236;
4157 }
4158 ((struct instance_core__NativeArray*)var234)->values[0]=var236;
4159 if (likely(varonce243!=NULL)) {
4160 var244 = varonce243;
4161 } else {
4162 var245 = "` is not a top-level method, thus need a receiver.";
4163 var247 = (val*)(50l<<2|1);
4164 var248 = (val*)(50l<<2|1);
4165 var249 = (val*)((long)(0)<<2|3);
4166 var250 = (val*)((long)(0)<<2|3);
4167 var246 = core__flat___CString___to_s_unsafe(var245, var247, var248, var249, var250);
4168 var244 = var246;
4169 varonce243 = var244;
4170 }
4171 ((struct instance_core__NativeArray*)var234)->values[2]=var244;
4172 } else {
4173 var234 = varonce233;
4174 varonce233 = NULL;
4175 }
4176 ((struct instance_core__NativeArray*)var234)->values[1]=var_name;
4177 {
4178 var251 = ((val*(*)(val* self))(var234->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var234); /* native_to_s on <var234:NativeArray[String]>*/
4179 }
4180 varonce233 = var234;
4181 {
4182 nitc__typing___nitc__typing__TypeVisitor___error(self, var_node, var251); /* Direct call typing$TypeVisitor$error on <self:TypeVisitor>*/
4183 }
4184 } else {
4185 }
4186 var253 = !var_recv_is_self;
4187 var_254 = var253;
4188 if (var253){
4189 {
4190 { /* Inline model$MMethod$is_toplevel (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4191 var257 = var_mproperty->attrs[COLOR_nitc__model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mproperty:nullable MProperty(MMethod)> */
4192 var255 = var257;
4193 RET_LABEL256:(void)0;
4194 }
4195 }
4196 var252 = var255;
4197 } else {
4198 var252 = var_254;
4199 }
4200 if (var252){
4201 if (unlikely(varonce258==NULL)) {
4202 var259 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4203 if (likely(varonce260!=NULL)) {
4204 var261 = varonce260;
4205 } else {
4206 var262 = "Error: cannot call `";
4207 var264 = (val*)(20l<<2|1);
4208 var265 = (val*)(20l<<2|1);
4209 var266 = (val*)((long)(0)<<2|3);
4210 var267 = (val*)((long)(0)<<2|3);
4211 var263 = core__flat___CString___to_s_unsafe(var262, var264, var265, var266, var267);
4212 var261 = var263;
4213 varonce260 = var261;
4214 }
4215 ((struct instance_core__NativeArray*)var259)->values[0]=var261;
4216 if (likely(varonce268!=NULL)) {
4217 var269 = varonce268;
4218 } else {
4219 var270 = "`, a top-level method, with a receiver.";
4220 var272 = (val*)(39l<<2|1);
4221 var273 = (val*)(39l<<2|1);
4222 var274 = (val*)((long)(0)<<2|3);
4223 var275 = (val*)((long)(0)<<2|3);
4224 var271 = core__flat___CString___to_s_unsafe(var270, var272, var273, var274, var275);
4225 var269 = var271;
4226 varonce268 = var269;
4227 }
4228 ((struct instance_core__NativeArray*)var259)->values[2]=var269;
4229 } else {
4230 var259 = varonce258;
4231 varonce258 = NULL;
4232 }
4233 ((struct instance_core__NativeArray*)var259)->values[1]=var_name;
4234 {
4235 var276 = ((val*(*)(val* self))(var259->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var259); /* native_to_s on <var259:NativeArray[String]>*/
4236 }
4237 varonce258 = var259;
4238 {
4239 nitc__typing___nitc__typing__TypeVisitor___error(self, var_node, var276); /* Direct call typing$TypeVisitor$error on <self:TypeVisitor>*/
4240 }
4241 } else {
4242 }
4243 {
4244 { /* Inline model$MProperty$visibility (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4245 var282 = var_mproperty->attrs[COLOR_nitc__model__MProperty___visibility].val; /* _visibility on <var_mproperty:nullable MProperty(MMethod)> */
4246 if (unlikely(var282 == NULL)) {
4247 if(catchStack.cursor >= 0){
4248 longjmp(catchStack.envs[catchStack.cursor], 1);
4249 }
4250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
4251 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2078);
4252 fatal_exit(1);
4253 }
4254 var280 = var282;
4255 RET_LABEL281:(void)0;
4256 }
4257 }
4258 var283 = glob_sys;
4259 {
4260 var284 = nitc__model_base___core__Sys___protected_visibility(var283);
4261 }
4262 {
4263 { /* Inline kernel$Object$== (var280,var284) on <var280:MVisibility> */
4264 var_other = var284;
4265 {
4266 { /* Inline kernel$Object$is_same_instance (var280,var_other) on <var280:MVisibility> */
4267 var289 = var280 == var_other;
4268 var287 = var289;
4269 goto RET_LABEL288;
4270 RET_LABEL288:(void)0;
4271 }
4272 }
4273 var285 = var287;
4274 goto RET_LABEL286;
4275 RET_LABEL286:(void)0;
4276 }
4277 }
4278 var_290 = var285;
4279 if (var285){
4280 var291 = !var_recv_is_self;
4281 var279 = var291;
4282 } else {
4283 var279 = var_290;
4284 }
4285 var_292 = var279;
4286 if (var279){
4287 {
4288 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
4289 var295 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
4290 if (unlikely(var295 == NULL)) {
4291 if(catchStack.cursor >= 0){
4292 longjmp(catchStack.envs[catchStack.cursor], 1);
4293 }
4294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4295 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
4296 fatal_exit(1);
4297 }
4298 var293 = var295;
4299 RET_LABEL294:(void)0;
4300 }
4301 }
4302 {
4303 { /* Inline model$MProperty$intro_mclassdef (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4304 var298 = var_mproperty->attrs[COLOR_nitc__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mproperty:nullable MProperty(MMethod)> */
4305 if (unlikely(var298 == NULL)) {
4306 if(catchStack.cursor >= 0){
4307 longjmp(catchStack.envs[catchStack.cursor], 1);
4308 }
4309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
4310 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2042);
4311 fatal_exit(1);
4312 }
4313 var296 = var298;
4314 RET_LABEL297:(void)0;
4315 }
4316 }
4317 {
4318 { /* Inline model$MClassDef$mmodule (var296) on <var296:MClassDef> */
4319 var301 = var296->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var296:MClassDef> */
4320 if (unlikely(var301 == NULL)) {
4321 if(catchStack.cursor >= 0){
4322 longjmp(catchStack.envs[catchStack.cursor], 1);
4323 }
4324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4325 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
4326 fatal_exit(1);
4327 }
4328 var299 = var301;
4329 RET_LABEL300:(void)0;
4330 }
4331 }
4332 {
4333 var302 = nitc___nitc__MModule___visibility_for(var293, var299);
4334 }
4335 var303 = glob_sys;
4336 {
4337 var304 = nitc__model_base___core__Sys___intrude_visibility(var303);
4338 }
4339 {
4340 var305 = nitc___nitc__MVisibility___core__kernel__Comparable___60d(var302, var304);
4341 }
4342 var278 = var305;
4343 } else {
4344 var278 = var_292;
4345 }
4346 var_306 = var278;
4347 if (var278){
4348 {
4349 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4350 var309 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4351 if (unlikely(var309 == NULL)) {
4352 if(catchStack.cursor >= 0){
4353 longjmp(catchStack.envs[catchStack.cursor], 1);
4354 }
4355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4356 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4357 fatal_exit(1);
4358 }
4359 var307 = var309;
4360 RET_LABEL308:(void)0;
4361 }
4362 }
4363 {
4364 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var307) on <var307:ModelBuilder> */
4365 var312 = var307->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var307:ModelBuilder> */
4366 if (unlikely(var312 == NULL)) {
4367 if(catchStack.cursor >= 0){
4368 longjmp(catchStack.envs[catchStack.cursor], 1);
4369 }
4370 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4371 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
4372 fatal_exit(1);
4373 }
4374 var310 = var312;
4375 RET_LABEL311:(void)0;
4376 }
4377 }
4378 {
4379 { /* Inline modelbuilder$ToolContext$opt_ignore_visibility (var310) on <var310:ToolContext> */
4380 var315 = var310->attrs[COLOR_nitc__modelbuilder__ToolContext___opt_ignore_visibility].val; /* _opt_ignore_visibility on <var310:ToolContext> */
4381 if (unlikely(var315 == NULL)) {
4382 if(catchStack.cursor >= 0){
4383 longjmp(catchStack.envs[catchStack.cursor], 1);
4384 }
4385 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_ignore_visibility");
4386 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder, 27);
4387 fatal_exit(1);
4388 }
4389 var313 = var315;
4390 RET_LABEL314:(void)0;
4391 }
4392 }
4393 {
4394 { /* Inline opts$Option$value (var313) on <var313:OptionBool> */
4395 var318 = var313->attrs[COLOR_opts__Option___value].val; /* _value on <var313:OptionBool> */
4396 var316 = var318;
4397 RET_LABEL317:(void)0;
4398 }
4399 }
4400 var319 = (short int)((long)(var316)>>2);
4401 var320 = !var319;
4402 var277 = var320;
4403 } else {
4404 var277 = var_306;
4405 }
4406 if (var277){
4407 {
4408 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4409 var323 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4410 if (unlikely(var323 == NULL)) {
4411 if(catchStack.cursor >= 0){
4412 longjmp(catchStack.envs[catchStack.cursor], 1);
4413 }
4414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4415 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4416 fatal_exit(1);
4417 }
4418 var321 = var323;
4419 RET_LABEL322:(void)0;
4420 }
4421 }
4422 if (unlikely(varonce324==NULL)) {
4423 var325 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4424 if (likely(varonce326!=NULL)) {
4425 var327 = varonce326;
4426 } else {
4427 var328 = "Error: method `";
4428 var330 = (val*)(15l<<2|1);
4429 var331 = (val*)(15l<<2|1);
4430 var332 = (val*)((long)(0)<<2|3);
4431 var333 = (val*)((long)(0)<<2|3);
4432 var329 = core__flat___CString___to_s_unsafe(var328, var330, var331, var332, var333);
4433 var327 = var329;
4434 varonce326 = var327;
4435 }
4436 ((struct instance_core__NativeArray*)var325)->values[0]=var327;
4437 if (likely(varonce334!=NULL)) {
4438 var335 = varonce334;
4439 } else {
4440 var336 = "` is protected and can only accessed by `self`.";
4441 var338 = (val*)(47l<<2|1);
4442 var339 = (val*)(47l<<2|1);
4443 var340 = (val*)((long)(0)<<2|3);
4444 var341 = (val*)((long)(0)<<2|3);
4445 var337 = core__flat___CString___to_s_unsafe(var336, var338, var339, var340, var341);
4446 var335 = var337;
4447 varonce334 = var335;
4448 }
4449 ((struct instance_core__NativeArray*)var325)->values[2]=var335;
4450 } else {
4451 var325 = varonce324;
4452 varonce324 = NULL;
4453 }
4454 ((struct instance_core__NativeArray*)var325)->values[1]=var_name;
4455 {
4456 var342 = ((val*(*)(val* self))(var325->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var325); /* native_to_s on <var325:NativeArray[String]>*/
4457 }
4458 varonce324 = var325;
4459 {
4460 nitc___nitc__ModelBuilder___error(var321, var_node, var342); /* Direct call modelbuilder_base$ModelBuilder$error on <var321:ModelBuilder>*/
4461 }
4462 var = ((val*)NULL);
4463 goto RET_LABEL;
4464 } else {
4465 }
4466 {
4467 { /* Inline mdoc$MEntity$deprecation (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4468 var345 = var_mproperty->attrs[COLOR_nitc__mdoc__MEntity___deprecation].val; /* _deprecation on <var_mproperty:nullable MProperty(MMethod)> */
4469 var343 = var345;
4470 RET_LABEL344:(void)0;
4471 }
4472 }
4473 var_info = var343;
4474 if (var_info == NULL) {
4475 var347 = 0; /* is null */
4476 } else {
4477 var347 = 1; /* arg is null and recv is not */
4478 }
4479 if (0) {
4480 { /* Inline kernel$Object$!= (var_info,((val*)NULL)) on <var_info:nullable MDeprecationInfo> */
4481 var_other350 = ((val*)NULL);
4482 {
4483 var351 = ((short int(*)(val* self, val* p0))(var_info->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_info, var_other350); /* == on <var_info:nullable MDeprecationInfo(MDeprecationInfo)>*/
4484 }
4485 var352 = !var351;
4486 var348 = var352;
4487 goto RET_LABEL349;
4488 RET_LABEL349:(void)0;
4489 }
4490 var347 = var348;
4491 }
4492 var_353 = var347;
4493 if (var347){
4494 {
4495 { /* Inline typing$TypeVisitor$mpropdef (self) on <self:TypeVisitor> */
4496 var356 = self->attrs[COLOR_nitc__typing__TypeVisitor___mpropdef].val; /* _mpropdef on <self:TypeVisitor> */
4497 var354 = var356;
4498 RET_LABEL355:(void)0;
4499 }
4500 }
4501 if (var354 == NULL) {
4502 if(catchStack.cursor >= 0){
4503 longjmp(catchStack.envs[catchStack.cursor], 1);
4504 }
4505 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4506 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 359);
4507 fatal_exit(1);
4508 } else {
4509 { /* Inline model$MPropDef$mproperty (var354) on <var354:nullable MPropDef> */
4510 if (unlikely(var354 == NULL)) {
4511 if(catchStack.cursor >= 0){
4512 longjmp(catchStack.envs[catchStack.cursor], 1);
4513 }
4514 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4515 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
4516 fatal_exit(1);
4517 }
4518 var359 = var354->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var354:nullable MPropDef> */
4519 if (unlikely(var359 == NULL)) {
4520 if(catchStack.cursor >= 0){
4521 longjmp(catchStack.envs[catchStack.cursor], 1);
4522 }
4523 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4524 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2357);
4525 fatal_exit(1);
4526 }
4527 var357 = var359;
4528 RET_LABEL358:(void)0;
4529 }
4530 }
4531 {
4532 { /* Inline mdoc$MEntity$deprecation (var357) on <var357:MProperty> */
4533 var362 = var357->attrs[COLOR_nitc__mdoc__MEntity___deprecation].val; /* _deprecation on <var357:MProperty> */
4534 var360 = var362;
4535 RET_LABEL361:(void)0;
4536 }
4537 }
4538 if (var360 == NULL) {
4539 var363 = 1; /* is null */
4540 } else {
4541 var363 = 0; /* arg is null but recv is not */
4542 }
4543 if (0) {
4544 { /* Inline kernel$Object$== (var360,((val*)NULL)) on <var360:nullable MDeprecationInfo> */
4545 var_other = ((val*)NULL);
4546 {
4547 { /* Inline kernel$Object$is_same_instance (var360,var_other) on <var360:nullable MDeprecationInfo(MDeprecationInfo)> */
4548 var368 = var360 == var_other;
4549 var366 = var368;
4550 goto RET_LABEL367;
4551 RET_LABEL367:(void)0;
4552 }
4553 }
4554 var364 = var366;
4555 goto RET_LABEL365;
4556 RET_LABEL365:(void)0;
4557 }
4558 var363 = var364;
4559 }
4560 var346 = var363;
4561 } else {
4562 var346 = var_353;
4563 }
4564 if (var346){
4565 {
4566 { /* Inline mdoc$MDeprecationInfo$mdoc (var_info) on <var_info:nullable MDeprecationInfo(MDeprecationInfo)> */
4567 var371 = var_info->attrs[COLOR_nitc__mdoc__MDeprecationInfo___mdoc].val; /* _mdoc on <var_info:nullable MDeprecationInfo(MDeprecationInfo)> */
4568 var369 = var371;
4569 RET_LABEL370:(void)0;
4570 }
4571 }
4572 var_mdoc = var369;
4573 if (var_mdoc == NULL) {
4574 var372 = 0; /* is null */
4575 } else {
4576 var372 = 1; /* arg is null and recv is not */
4577 }
4578 if (0) {
4579 { /* Inline kernel$Object$!= (var_mdoc,((val*)NULL)) on <var_mdoc:nullable MDoc> */
4580 var_other350 = ((val*)NULL);
4581 {
4582 var375 = ((short int(*)(val* self, val* p0))(var_mdoc->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mdoc, var_other350); /* == on <var_mdoc:nullable MDoc(MDoc)>*/
4583 }
4584 var376 = !var375;
4585 var373 = var376;
4586 goto RET_LABEL374;
4587 RET_LABEL374:(void)0;
4588 }
4589 var372 = var373;
4590 }
4591 if (var372){
4592 {
4593 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4594 var379 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4595 if (unlikely(var379 == NULL)) {
4596 if(catchStack.cursor >= 0){
4597 longjmp(catchStack.envs[catchStack.cursor], 1);
4598 }
4599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4600 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4601 fatal_exit(1);
4602 }
4603 var377 = var379;
4604 RET_LABEL378:(void)0;
4605 }
4606 }
4607 if (likely(varonce380!=NULL)) {
4608 var381 = varonce380;
4609 } else {
4610 var382 = "deprecated-method";
4611 var384 = (val*)(17l<<2|1);
4612 var385 = (val*)(17l<<2|1);
4613 var386 = (val*)((long)(0)<<2|3);
4614 var387 = (val*)((long)(0)<<2|3);
4615 var383 = core__flat___CString___to_s_unsafe(var382, var384, var385, var386, var387);
4616 var381 = var383;
4617 varonce380 = var381;
4618 }
4619 if (unlikely(varonce388==NULL)) {
4620 var389 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4621 if (likely(varonce390!=NULL)) {
4622 var391 = varonce390;
4623 } else {
4624 var392 = "Deprecation Warning: method `";
4625 var394 = (val*)(29l<<2|1);
4626 var395 = (val*)(29l<<2|1);
4627 var396 = (val*)((long)(0)<<2|3);
4628 var397 = (val*)((long)(0)<<2|3);
4629 var393 = core__flat___CString___to_s_unsafe(var392, var394, var395, var396, var397);
4630 var391 = var393;
4631 varonce390 = var391;
4632 }
4633 ((struct instance_core__NativeArray*)var389)->values[0]=var391;
4634 if (likely(varonce398!=NULL)) {
4635 var399 = varonce398;
4636 } else {
4637 var400 = "` is deprecated: ";
4638 var402 = (val*)(17l<<2|1);
4639 var403 = (val*)(17l<<2|1);
4640 var404 = (val*)((long)(0)<<2|3);
4641 var405 = (val*)((long)(0)<<2|3);
4642 var401 = core__flat___CString___to_s_unsafe(var400, var402, var403, var404, var405);
4643 var399 = var401;
4644 varonce398 = var399;
4645 }
4646 ((struct instance_core__NativeArray*)var389)->values[2]=var399;
4647 } else {
4648 var389 = varonce388;
4649 varonce388 = NULL;
4650 }
4651 ((struct instance_core__NativeArray*)var389)->values[1]=var_name;
4652 {
4653 { /* Inline mdoc$MDoc$content (var_mdoc) on <var_mdoc:nullable MDoc(MDoc)> */
4654 var408 = var_mdoc->attrs[COLOR_nitc__mdoc__MDoc___content].val; /* _content on <var_mdoc:nullable MDoc(MDoc)> */
4655 if (unlikely(var408 == NULL)) {
4656 if(catchStack.cursor >= 0){
4657 longjmp(catchStack.envs[catchStack.cursor], 1);
4658 }
4659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
4660 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mdoc, 23);
4661 fatal_exit(1);
4662 }
4663 var406 = var408;
4664 RET_LABEL407:(void)0;
4665 }
4666 }
4667 {
4668 var409 = core___core__SequenceRead___Collection__first(var406);
4669 }
4670 ((struct instance_core__NativeArray*)var389)->values[3]=var409;
4671 {
4672 var410 = ((val*(*)(val* self))(var389->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var389); /* native_to_s on <var389:NativeArray[String]>*/
4673 }
4674 varonce388 = var389;
4675 {
4676 nitc___nitc__ModelBuilder___warning(var377, var_node, var381, var410); /* Direct call modelbuilder_base$ModelBuilder$warning on <var377:ModelBuilder>*/
4677 }
4678 } else {
4679 {
4680 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4681 var413 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4682 if (unlikely(var413 == NULL)) {
4683 if(catchStack.cursor >= 0){
4684 longjmp(catchStack.envs[catchStack.cursor], 1);
4685 }
4686 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4687 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4688 fatal_exit(1);
4689 }
4690 var411 = var413;
4691 RET_LABEL412:(void)0;
4692 }
4693 }
4694 if (likely(varonce414!=NULL)) {
4695 var415 = varonce414;
4696 } else {
4697 var416 = "deprecated-method";
4698 var418 = (val*)(17l<<2|1);
4699 var419 = (val*)(17l<<2|1);
4700 var420 = (val*)((long)(0)<<2|3);
4701 var421 = (val*)((long)(0)<<2|3);
4702 var417 = core__flat___CString___to_s_unsafe(var416, var418, var419, var420, var421);
4703 var415 = var417;
4704 varonce414 = var415;
4705 }
4706 if (unlikely(varonce422==NULL)) {
4707 var423 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4708 if (likely(varonce424!=NULL)) {
4709 var425 = varonce424;
4710 } else {
4711 var426 = "Deprecation Warning: method `";
4712 var428 = (val*)(29l<<2|1);
4713 var429 = (val*)(29l<<2|1);
4714 var430 = (val*)((long)(0)<<2|3);
4715 var431 = (val*)((long)(0)<<2|3);
4716 var427 = core__flat___CString___to_s_unsafe(var426, var428, var429, var430, var431);
4717 var425 = var427;
4718 varonce424 = var425;
4719 }
4720 ((struct instance_core__NativeArray*)var423)->values[0]=var425;
4721 if (likely(varonce432!=NULL)) {
4722 var433 = varonce432;
4723 } else {
4724 var434 = "` is deprecated.";
4725 var436 = (val*)(16l<<2|1);
4726 var437 = (val*)(16l<<2|1);
4727 var438 = (val*)((long)(0)<<2|3);
4728 var439 = (val*)((long)(0)<<2|3);
4729 var435 = core__flat___CString___to_s_unsafe(var434, var436, var437, var438, var439);
4730 var433 = var435;
4731 varonce432 = var433;
4732 }
4733 ((struct instance_core__NativeArray*)var423)->values[2]=var433;
4734 } else {
4735 var423 = varonce422;
4736 varonce422 = NULL;
4737 }
4738 ((struct instance_core__NativeArray*)var423)->values[1]=var_name;
4739 {
4740 var440 = ((val*(*)(val* self))(var423->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var423); /* native_to_s on <var423:NativeArray[String]>*/
4741 }
4742 varonce422 = var423;
4743 {
4744 nitc___nitc__ModelBuilder___warning(var411, var_node, var415, var440); /* Direct call modelbuilder_base$ModelBuilder$warning on <var411:ModelBuilder>*/
4745 }
4746 }
4747 } else {
4748 }
4749 {
4750 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
4751 var443 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
4752 if (unlikely(var443 == NULL)) {
4753 if(catchStack.cursor >= 0){
4754 longjmp(catchStack.envs[catchStack.cursor], 1);
4755 }
4756 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4757 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
4758 fatal_exit(1);
4759 }
4760 var441 = var443;
4761 RET_LABEL442:(void)0;
4762 }
4763 }
4764 {
4765 var444 = nitc___nitc__MProperty___lookup_definitions(var_mproperty, var441, var_unsafe_type);
4766 }
4767 var_propdefs = var444;
4768 {
4769 { /* Inline array$AbstractArrayRead$length (var_propdefs) on <var_propdefs:Array[MMethodDef]> */
4770 var447 = var_propdefs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_propdefs:Array[MMethodDef]> */
4771 var445 = var447;
4772 RET_LABEL446:(void)0;
4773 }
4774 }
4775 {
4776 { /* Inline kernel$Int$== (var445,0l) on <var445:Int> */
4777 var450 = var445 == 0l;
4778 var448 = var450;
4779 goto RET_LABEL449;
4780 RET_LABEL449:(void)0;
4781 }
4782 }
4783 if (var448){
4784 {
4785 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4786 var453 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4787 if (unlikely(var453 == NULL)) {
4788 if(catchStack.cursor >= 0){
4789 longjmp(catchStack.envs[catchStack.cursor], 1);
4790 }
4791 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4792 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4793 fatal_exit(1);
4794 }
4795 var451 = var453;
4796 RET_LABEL452:(void)0;
4797 }
4798 }
4799 if (unlikely(varonce454==NULL)) {
4800 var455 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
4801 if (likely(varonce456!=NULL)) {
4802 var457 = varonce456;
4803 } else {
4804 var458 = "Type Error: no definition found for property `";
4805 var460 = (val*)(46l<<2|1);
4806 var461 = (val*)(46l<<2|1);
4807 var462 = (val*)((long)(0)<<2|3);
4808 var463 = (val*)((long)(0)<<2|3);
4809 var459 = core__flat___CString___to_s_unsafe(var458, var460, var461, var462, var463);
4810 var457 = var459;
4811 varonce456 = var457;
4812 }
4813 ((struct instance_core__NativeArray*)var455)->values[0]=var457;
4814 if (likely(varonce464!=NULL)) {
4815 var465 = varonce464;
4816 } else {
4817 var466 = "` in `";
4818 var468 = (val*)(6l<<2|1);
4819 var469 = (val*)(6l<<2|1);
4820 var470 = (val*)((long)(0)<<2|3);
4821 var471 = (val*)((long)(0)<<2|3);
4822 var467 = core__flat___CString___to_s_unsafe(var466, var468, var469, var470, var471);
4823 var465 = var467;
4824 varonce464 = var465;
4825 }
4826 ((struct instance_core__NativeArray*)var455)->values[2]=var465;
4827 if (likely(varonce472!=NULL)) {
4828 var473 = varonce472;
4829 } else {
4830 var474 = "`.";
4831 var476 = (val*)(2l<<2|1);
4832 var477 = (val*)(2l<<2|1);
4833 var478 = (val*)((long)(0)<<2|3);
4834 var479 = (val*)((long)(0)<<2|3);
4835 var475 = core__flat___CString___to_s_unsafe(var474, var476, var477, var478, var479);
4836 var473 = var475;
4837 varonce472 = var473;
4838 }
4839 ((struct instance_core__NativeArray*)var455)->values[4]=var473;
4840 } else {
4841 var455 = varonce454;
4842 varonce454 = NULL;
4843 }
4844 ((struct instance_core__NativeArray*)var455)->values[1]=var_name;
4845 {
4846 var480 = ((val*(*)(val* self))(var_unsafe_type->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_unsafe_type); /* to_s on <var_unsafe_type:MType>*/
4847 }
4848 ((struct instance_core__NativeArray*)var455)->values[3]=var480;
4849 {
4850 var481 = ((val*(*)(val* self))(var455->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var455); /* native_to_s on <var455:NativeArray[String]>*/
4851 }
4852 varonce454 = var455;
4853 {
4854 nitc___nitc__ModelBuilder___error(var451, var_node, var481); /* Direct call modelbuilder_base$ModelBuilder$error on <var451:ModelBuilder>*/
4855 }
4856 var = ((val*)NULL);
4857 goto RET_LABEL;
4858 } else {
4859 {
4860 { /* Inline array$AbstractArrayRead$length (var_propdefs) on <var_propdefs:Array[MMethodDef]> */
4861 var484 = var_propdefs->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_propdefs:Array[MMethodDef]> */
4862 var482 = var484;
4863 RET_LABEL483:(void)0;
4864 }
4865 }
4866 {
4867 { /* Inline kernel$Int$== (var482,1l) on <var482:Int> */
4868 var487 = var482 == 1l;
4869 var485 = var487;
4870 goto RET_LABEL486;
4871 RET_LABEL486:(void)0;
4872 }
4873 }
4874 if (var485){
4875 {
4876 var488 = core___core__SequenceRead___Collection__first(var_propdefs);
4877 }
4878 var_mpropdef = var488;
4879 } else {
4880 {
4881 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
4882 var491 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
4883 if (unlikely(var491 == NULL)) {
4884 if(catchStack.cursor >= 0){
4885 longjmp(catchStack.envs[catchStack.cursor], 1);
4886 }
4887 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4888 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
4889 fatal_exit(1);
4890 }
4891 var489 = var491;
4892 RET_LABEL490:(void)0;
4893 }
4894 }
4895 if (likely(varonce492!=NULL)) {
4896 var493 = varonce492;
4897 } else {
4898 var494 = "property-conflict";
4899 var496 = (val*)(17l<<2|1);
4900 var497 = (val*)(17l<<2|1);
4901 var498 = (val*)((long)(0)<<2|3);
4902 var499 = (val*)((long)(0)<<2|3);
4903 var495 = core__flat___CString___to_s_unsafe(var494, var496, var497, var498, var499);
4904 var493 = var495;
4905 varonce492 = var493;
4906 }
4907 if (unlikely(varonce500==NULL)) {
4908 var501 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
4909 if (likely(varonce502!=NULL)) {
4910 var503 = varonce502;
4911 } else {
4912 var504 = "Warning: conflicting property definitions for property `";
4913 var506 = (val*)(56l<<2|1);
4914 var507 = (val*)(56l<<2|1);
4915 var508 = (val*)((long)(0)<<2|3);
4916 var509 = (val*)((long)(0)<<2|3);
4917 var505 = core__flat___CString___to_s_unsafe(var504, var506, var507, var508, var509);
4918 var503 = var505;
4919 varonce502 = var503;
4920 }
4921 ((struct instance_core__NativeArray*)var501)->values[0]=var503;
4922 if (likely(varonce510!=NULL)) {
4923 var511 = varonce510;
4924 } else {
4925 var512 = "` in `";
4926 var514 = (val*)(6l<<2|1);
4927 var515 = (val*)(6l<<2|1);
4928 var516 = (val*)((long)(0)<<2|3);
4929 var517 = (val*)((long)(0)<<2|3);
4930 var513 = core__flat___CString___to_s_unsafe(var512, var514, var515, var516, var517);
4931 var511 = var513;
4932 varonce510 = var511;
4933 }
4934 ((struct instance_core__NativeArray*)var501)->values[2]=var511;
4935 if (likely(varonce518!=NULL)) {
4936 var519 = varonce518;
4937 } else {
4938 var520 = "`: ";
4939 var522 = (val*)(3l<<2|1);
4940 var523 = (val*)(3l<<2|1);
4941 var524 = (val*)((long)(0)<<2|3);
4942 var525 = (val*)((long)(0)<<2|3);
4943 var521 = core__flat___CString___to_s_unsafe(var520, var522, var523, var524, var525);
4944 var519 = var521;
4945 varonce518 = var519;
4946 }
4947 ((struct instance_core__NativeArray*)var501)->values[4]=var519;
4948 } else {
4949 var501 = varonce500;
4950 varonce500 = NULL;
4951 }
4952 ((struct instance_core__NativeArray*)var501)->values[1]=var_name;
4953 {
4954 var526 = ((val*(*)(val* self))(var_unsafe_type->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_unsafe_type); /* to_s on <var_unsafe_type:MType>*/
4955 }
4956 ((struct instance_core__NativeArray*)var501)->values[3]=var526;
4957 if (likely(varonce527!=NULL)) {
4958 var528 = varonce527;
4959 } else {
4960 var529 = " ";
4961 var531 = (val*)(1l<<2|1);
4962 var532 = (val*)(1l<<2|1);
4963 var533 = (val*)((long)(0)<<2|3);
4964 var534 = (val*)((long)(0)<<2|3);
4965 var530 = core__flat___CString___to_s_unsafe(var529, var531, var532, var533, var534);
4966 var528 = var530;
4967 varonce527 = var528;
4968 }
4969 {
4970 var535 = core__abstract_text___Collection___join(var_propdefs, var528, ((val*)NULL));
4971 }
4972 ((struct instance_core__NativeArray*)var501)->values[5]=var535;
4973 {
4974 var536 = ((val*(*)(val* self))(var501->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var501); /* native_to_s on <var501:NativeArray[String]>*/
4975 }
4976 varonce500 = var501;
4977 {
4978 nitc___nitc__ModelBuilder___warning(var489, var_node, var493, var536); /* Direct call modelbuilder_base$ModelBuilder$warning on <var489:ModelBuilder>*/
4979 }
4980 {
4981 { /* Inline model$MProperty$intro (var_mproperty) on <var_mproperty:nullable MProperty(MMethod)> */
4982 var539 = var_mproperty->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_mproperty:nullable MProperty(MMethod)> */
4983 if (unlikely(var539 == NULL)) {
4984 if(catchStack.cursor >= 0){
4985 longjmp(catchStack.envs[catchStack.cursor], 1);
4986 }
4987 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
4988 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2097);
4989 fatal_exit(1);
4990 }
4991 var537 = var539;
4992 RET_LABEL538:(void)0;
4993 }
4994 }
4995 var_mpropdef = var537;
4996 }
4997 }
4998 {
4999 { /* Inline model$MMethodDef$new_msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
5000 var543 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_mpropdef:nullable Object(MMethodDef)> */
5001 var541 = var543;
5002 RET_LABEL542:(void)0;
5003 }
5004 }
5005 if (var541!=NULL) {
5006 var540 = var541;
5007 } else {
5008 {
5009 { /* Inline model$MMethodDef$msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
5010 var546 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable Object(MMethodDef)> */
5011 var544 = var546;
5012 RET_LABEL545:(void)0;
5013 }
5014 }
5015 var540 = var544;
5016 }
5017 var_msignature = var540;
5018 if (var_msignature == NULL) {
5019 var547 = 1; /* is null */
5020 } else {
5021 var547 = 0; /* arg is null but recv is not */
5022 }
5023 if (0) {
5024 { /* Inline kernel$Object$== (var_msignature,((val*)NULL)) on <var_msignature:nullable MSignature> */
5025 var_other = ((val*)NULL);
5026 {
5027 { /* Inline kernel$Object$is_same_instance (var_msignature,var_other) on <var_msignature:nullable MSignature(MSignature)> */
5028 var552 = var_msignature == var_other;
5029 var550 = var552;
5030 goto RET_LABEL551;
5031 RET_LABEL551:(void)0;
5032 }
5033 }
5034 var548 = var550;
5035 goto RET_LABEL549;
5036 RET_LABEL549:(void)0;
5037 }
5038 var547 = var548;
5039 }
5040 if (var547){
5041 var = ((val*)NULL);
5042 goto RET_LABEL;
5043 } else {
5044 }
5045 {
5046 var553 = nitc__typing___nitc__typing__TypeVisitor___resolve_for(self, var_msignature, var_recvtype, var_recv_is_self);
5047 }
5048 /* <var553:MType> isa MSignature */
5049 cltype555 = type_nitc__MSignature.color;
5050 idtype556 = type_nitc__MSignature.id;
5051 if(cltype555 >= var553->type->table_size) {
5052 var554 = 0;
5053 } else {
5054 var554 = var553->type->type_table[cltype555] == idtype556;
5055 }
5056 if (unlikely(!var554)) {
5057 var_class_name = var553 == NULL ? "null" : var553->type->name;
5058 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MSignature", var_class_name);
5059 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 383);
5060 fatal_exit(1);
5061 }
5062 var_msignature = var553;
5063 var_erasure_cast = 0;
5064 {
5065 { /* Inline model$MMethodDef$msignature (var_mpropdef) on <var_mpropdef:nullable Object(MMethodDef)> */
5066 var559 = var_mpropdef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mpropdef:nullable Object(MMethodDef)> */
5067 var557 = var559;
5068 RET_LABEL558:(void)0;
5069 }
5070 }
5071 if (var557 == NULL) {
5072 if(catchStack.cursor >= 0){
5073 longjmp(catchStack.envs[catchStack.cursor], 1);
5074 }
5075 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5076 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 386);
5077 fatal_exit(1);
5078 } else {
5079 { /* Inline model$MSignature$return_mtype (var557) on <var557:nullable MSignature> */
5080 if (unlikely(var557 == NULL)) {
5081 if(catchStack.cursor >= 0){
5082 longjmp(catchStack.envs[catchStack.cursor], 1);
5083 }
5084 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5085 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1891);
5086 fatal_exit(1);
5087 }
5088 var562 = var557->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var557:nullable MSignature> */
5089 var560 = var562;
5090 RET_LABEL561:(void)0;
5091 }
5092 }
5093 var_rettype = var560;
5094 var564 = !var_recv_is_self;
5095 var_565 = var564;
5096 if (var564){
5097 if (var_rettype == NULL) {
5098 var566 = 0; /* is null */
5099 } else {
5100 var566 = 1; /* arg is null and recv is not */
5101 }
5102 if (0) {
5103 { /* Inline kernel$Object$!= (var_rettype,((val*)NULL)) on <var_rettype:nullable MType> */
5104 var_other350 = ((val*)NULL);
5105 {
5106 var569 = ((short int(*)(val* self, val* p0))(var_rettype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rettype, var_other350); /* == on <var_rettype:nullable MType(MType)>*/
5107 }
5108 var570 = !var569;
5109 var567 = var570;
5110 goto RET_LABEL568;
5111 RET_LABEL568:(void)0;
5112 }
5113 var566 = var567;
5114 }
5115 var563 = var566;
5116 } else {
5117 var563 = var_565;
5118 }
5119 if (var563){
5120 {
5121 var571 = ((val*(*)(val* self))(var_rettype->class->vft[COLOR_nitc__model__MType__undecorate]))(var_rettype); /* undecorate on <var_rettype:nullable MType(MType)>*/
5122 }
5123 var_rettype = var571;
5124 /* <var_rettype:nullable MType(MType)> isa MParameterType */
5125 cltype573 = type_nitc__MParameterType.color;
5126 idtype574 = type_nitc__MParameterType.id;
5127 if(cltype573 >= var_rettype->type->table_size) {
5128 var572 = 0;
5129 } else {
5130 var572 = var_rettype->type->type_table[cltype573] == idtype574;
5131 }
5132 if (var572){
5133 {
5134 { /* Inline model$MSignature$return_mtype (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
5135 var577 = var_msignature->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:nullable MSignature(MSignature)> */
5136 var575 = var577;
5137 RET_LABEL576:(void)0;
5138 }
5139 }
5140 var_erased_rettype = var575;
5141 if (var_erased_rettype == NULL) {
5142 var578 = 0; /* is null */
5143 } else {
5144 var578 = 1; /* arg is null and recv is not */
5145 }
5146 if (0) {
5147 { /* Inline kernel$Object$!= (var_erased_rettype,((val*)NULL)) on <var_erased_rettype:nullable MType> */
5148 var_other350 = ((val*)NULL);
5149 {
5150 var581 = ((short int(*)(val* self, val* p0))(var_erased_rettype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_erased_rettype, var_other350); /* == on <var_erased_rettype:nullable MType(MType)>*/
5151 }
5152 var582 = !var581;
5153 var579 = var582;
5154 goto RET_LABEL580;
5155 RET_LABEL580:(void)0;
5156 }
5157 var578 = var579;
5158 }
5159 if (unlikely(!var578)) {
5160 if(catchStack.cursor >= 0){
5161 longjmp(catchStack.envs[catchStack.cursor], 1);
5162 }
5163 PRINT_ERROR("Runtime error: %s", "Assert failed");
5164 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 391);
5165 fatal_exit(1);
5166 }
5167 var_erasure_cast = 1;
5168 } else {
5169 }
5170 } else {
5171 }
5172 var583 = NEW_nitc__CallSite(&type_nitc__CallSite);
5173 {
5174 var584 = ((val*(*)(val* self))(var_node->class->vft[COLOR_nitc__parser_nodes__ANode__hot_location]))(var_node); /* hot_location on <var_node:ANode>*/
5175 }
5176 {
5177 { /* Inline typing$TypeVisitor$mmodule (self) on <self:TypeVisitor> */
5178 var587 = self->attrs[COLOR_nitc__typing__TypeVisitor___mmodule].val; /* _mmodule on <self:TypeVisitor> */
5179 if (unlikely(var587 == NULL)) {
5180 if(catchStack.cursor >= 0){
5181 longjmp(catchStack.envs[catchStack.cursor], 1);
5182 }
5183 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
5184 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 37);
5185 fatal_exit(1);
5186 }
5187 var585 = var587;
5188 RET_LABEL586:(void)0;
5189 }
5190 }
5191 {
5192 { /* Inline typing$TypeVisitor$anchor (self) on <self:TypeVisitor> */
5193 var590 = self->attrs[COLOR_nitc__typing__TypeVisitor___anchor].val; /* _anchor on <self:TypeVisitor> */
5194 var588 = var590;
5195 RET_LABEL589:(void)0;
5196 }
5197 }
5198 {
5199 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__location_61d]))(var583, var584); /* location= on <var583:CallSite>*/
5200 }
5201 {
5202 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__recv_61d]))(var583, var_recvtype); /* recv= on <var583:CallSite>*/
5203 }
5204 {
5205 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__mmodule_61d]))(var583, var585); /* mmodule= on <var583:CallSite>*/
5206 }
5207 {
5208 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__anchor_61d]))(var583, var588); /* anchor= on <var583:CallSite>*/
5209 }
5210 {
5211 ((void(*)(val* self, short int p0))(var583->class->vft[COLOR_nitc__typing__CallSite__recv_is_self_61d]))(var583, var_recv_is_self); /* recv_is_self= on <var583:CallSite>*/
5212 }
5213 {
5214 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__mproperty_61d]))(var583, var_mproperty); /* mproperty= on <var583:CallSite>*/
5215 }
5216 {
5217 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__mpropdef_61d]))(var583, var_mpropdef); /* mpropdef= on <var583:CallSite>*/
5218 }
5219 {
5220 ((void(*)(val* self, val* p0))(var583->class->vft[COLOR_nitc__typing__CallSite__msignature_61d]))(var583, var_msignature); /* msignature= on <var583:CallSite>*/
5221 }
5222 {
5223 ((void(*)(val* self, short int p0))(var583->class->vft[COLOR_nitc__typing__CallSite__erasure_cast_61d]))(var583, var_erasure_cast); /* erasure_cast= on <var583:CallSite>*/
5224 }
5225 {
5226 ((void(*)(val* self))(var583->class->vft[COLOR_core__kernel__Object__init]))(var583); /* init on <var583:CallSite>*/
5227 }
5228 var_callsite = var583;
5229 var = var_callsite;
5230 goto RET_LABEL;
5231 RET_LABEL:;
5232 return var;
5233 }
5234 /* method typing$TypeVisitor$try_get_method for (self: TypeVisitor, ANode, MType, String, Bool): nullable CallSite */
5235 val* nitc__typing___nitc__typing__TypeVisitor___try_get_method(val* self, val* p0, val* p1, val* p2, short int p3) {
5236 val* var /* : nullable CallSite */;
5237 val* var_node /* var node: ANode */;
5238 val* var_recvtype /* var recvtype: MType */;
5239 val* var_name /* var name: String */;
5240 short int var_recv_is_self /* var recv_is_self: Bool */;
5241 val* var1 /* : MType */;
5242 val* var_unsafe_type /* var unsafe_type: MType */;
5243 val* var2 /* : nullable MProperty */;
5244 val* var_mproperty /* var mproperty: nullable MProperty */;
5245 short int var3 /* : Bool */;
5246 short int var4 /* : Bool */;
5247 val* var_other /* var other: nullable Object */;
5248 short int var6 /* : Bool */;
5249 short int var8 /* : Bool */;
5250 val* var9 /* : nullable CallSite */;
5251 var_node = p0;
5252 var_recvtype = p1;
5253 var_name = p2;
5254 var_recv_is_self = p3;
5255 {
5256 var1 = nitc__typing___nitc__typing__TypeVisitor___anchor_to(self, var_recvtype);
5257 }
5258 var_unsafe_type = var1;
5259 {
5260 var2 = nitc__typing___nitc__typing__TypeVisitor___try_get_mproperty_by_name2(self, var_node, var_unsafe_type, var_name);
5261 }
5262 var_mproperty = var2;
5263 if (var_mproperty == NULL) {
5264 var3 = 1; /* is null */
5265 } else {
5266 var3 = 0; /* arg is null but recv is not */
5267 }
5268 if (0) {
5269 { /* Inline kernel$Object$== (var_mproperty,((val*)NULL)) on <var_mproperty:nullable MProperty> */
5270 var_other = ((val*)NULL);
5271 {
5272 { /* Inline kernel$Object$is_same_instance (var_mproperty,var_other) on <var_mproperty:nullable MProperty(MProperty)> */
5273 var8 = var_mproperty == var_other;
5274 var6 = var8;
5275 goto RET_LABEL7;
5276 RET_LABEL7:(void)0;
5277 }
5278 }
5279 var4 = var6;
5280 goto RET_LABEL5;
5281 RET_LABEL5:(void)0;
5282 }
5283 var3 = var4;
5284 }
5285 if (var3){
5286 var = ((val*)NULL);
5287 goto RET_LABEL;
5288 } else {
5289 }
5290 {
5291 var9 = nitc__typing___nitc__typing__TypeVisitor___get_method(self, var_node, var_recvtype, var_name, var_recv_is_self);
5292 }
5293 var = var9;
5294 goto RET_LABEL;
5295 RET_LABEL:;
5296 return var;
5297 }
5298 /* method typing$TypeVisitor$check_signature for (self: TypeVisitor, ANode, Array[AExpr], MProperty, MSignature): nullable SignatureMap */
5299 val* nitc__typing___nitc__typing__TypeVisitor___check_signature(val* self, val* p0, val* p1, val* p2, val* p3) {
5300 val* var /* : nullable SignatureMap */;
5301 val* var_node /* var node: ANode */;
5302 val* var_args /* var args: Array[AExpr] */;
5303 val* var_mproperty /* var mproperty: MProperty */;
5304 val* var_msignature /* var msignature: MSignature */;
5305 long var1 /* : Int */;
5306 long var3 /* : Int */;
5307 long var_vararg_rank /* var vararg_rank: Int */;
5308 short int var4 /* : Bool */;
5309 short int var6 /* : Bool */;
5310 int cltype;
5311 int idtype;
5312 const char* var_class_name;
5313 short int var7 /* : Bool */;
5314 long var8 /* : Int */;
5315 long var10 /* : Int */;
5316 long var11 /* : Int */;
5317 short int var12 /* : Bool */;
5318 short int var14 /* : Bool */;
5319 int cltype15;
5320 int idtype16;
5321 const char* var_class_name17;
5322 short int var18 /* : Bool */;
5323 val* var19 /* : ModelBuilder */;
5324 val* var21 /* : ModelBuilder */;
5325 val* var22 /* : NativeArray[String] */;
5326 static val* varonce;
5327 static val* varonce23;
5328 val* var24 /* : String */;
5329 char* var25 /* : CString */;
5330 val* var26 /* : String */;
5331 val* var27 /* : nullable Int */;
5332 val* var28 /* : nullable Int */;
5333 val* var29 /* : nullable Bool */;
5334 val* var30 /* : nullable Bool */;
5335 static val* varonce31;
5336 val* var32 /* : String */;
5337 char* var33 /* : CString */;
5338 val* var34 /* : String */;
5339 val* var35 /* : nullable Int */;
5340 val* var36 /* : nullable Int */;
5341 val* var37 /* : nullable Bool */;
5342 val* var38 /* : nullable Bool */;
5343 static val* varonce39;
5344 val* var40 /* : String */;
5345 char* var41 /* : CString */;
5346 val* var42 /* : String */;
5347 val* var43 /* : nullable Int */;
5348 val* var44 /* : nullable Int */;
5349 val* var45 /* : nullable Bool */;
5350 val* var46 /* : nullable Bool */;
5351 static val* varonce47;
5352 val* var48 /* : String */;
5353 char* var49 /* : CString */;
5354 val* var50 /* : String */;
5355 val* var51 /* : nullable Int */;
5356 val* var52 /* : nullable Int */;
5357 val* var53 /* : nullable Bool */;
5358 val* var54 /* : nullable Bool */;
5359 static val* varonce55;
5360 val* var56 /* : String */;
5361 char* var57 /* : CString */;
5362 val* var58 /* : String */;
5363 val* var59 /* : nullable Int */;
5364 val* var60 /* : nullable Int */;
5365 val* var61 /* : nullable Bool */;
5366 val* var62 /* : nullable Bool */;
5367 long var63 /* : Int */;
5368 val* var64 /* : String */;
5369 val* var65 /* : String */;
5370 val* var66 /* : String */;
5371 long var67 /* : Int */;
5372 long var69 /* : Int */;
5373 val* var70 /* : String */;
5374 val* var71 /* : String */;
5375 val* var72 /* : String */;
5376 long var73 /* : Int */;
5377 long var75 /* : Int */;
5378 long var76 /* : Int */;
5379 short int var77 /* : Bool */;
5380 short int var79 /* : Bool */;
5381 short int var80 /* : Bool */;
5382 long var81 /* : Int */;
5383 long var83 /* : Int */;
5384 long var84 /* : Int */;
5385 short int var85 /* : Bool */;
5386 short int var87 /* : Bool */;
5387 int cltype88;
5388 int idtype89;
5389 const char* var_class_name90;
5390 short int var91 /* : Bool */;
5391 val* var92 /* : ModelBuilder */;
5392 val* var94 /* : ModelBuilder */;
5393 val* var96 /* : NativeArray[String] */;
5394 static val* varonce95;
5395 static val* varonce97;
5396 val* var98 /* : String */;
5397 char* var99 /* : CString */;
5398 val* var100 /* : String */;
5399 val* var101 /* : nullable Int */;
5400 val* var102 /* : nullable Int */;
5401 val* var103 /* : nullable Bool */;
5402 val* var104 /* : nullable Bool */;
5403 static val* varonce105;
5404 val* var106 /* : String */;
5405 char* var107 /* : CString */;
5406 val* var108 /* : String */;
5407 val* var109 /* : nullable Int */;
5408 val* var110 /* : nullable Int */;
5409 val* var111 /* : nullable Bool */;
5410 val* var112 /* : nullable Bool */;
5411 static val* varonce113;
5412 val* var114 /* : String */;
5413 char* var115 /* : CString */;
5414 val* var116 /* : String */;
5415 val* var117 /* : nullable Int */;
5416 val* var118 /* : nullable Int */;
5417 val* var119 /* : nullable Bool */;
5418 val* var120 /* : nullable Bool */;
5419 static val* varonce121;
5420 val* var122 /* : String */;
5421 char* var123 /* : CString */;
5422 val* var124 /* : String */;
5423 val* var125 /* : nullable Int */;
5424 val* var126 /* : nullable Int */;
5425 val* var127 /* : nullable Bool */;
5426 val* var128 /* : nullable Bool */;
5427 static val* varonce129;
5428 val* var130 /* : String */;
5429 char* var131 /* : CString */;
5430 val* var132 /* : String */;
5431 val* var133 /* : nullable Int */;
5432 val* var134 /* : nullable Int */;
5433 val* var135 /* : nullable Bool */;
5434 val* var136 /* : nullable Bool */;
5435 long var137 /* : Int */;
5436 val* var138 /* : String */;
5437 val* var139 /* : String */;
5438 val* var140 /* : String */;
5439 long var141 /* : Int */;
5440 long var143 /* : Int */;
5441 val* var144 /* : String */;
5442 val* var145 /* : String */;
5443 val* var146 /* : String */;
5444 val* var147 /* : SignatureMap */;
5445 val* var_map /* var map: SignatureMap */;
5446 val* var149 /* : String */;
5447 val* var151 /* : String */;
5448 val* var152 /* : SequenceRead[Char] */;
5449 val* var153 /* : nullable Object */;
5450 short int var154 /* : Bool */;
5451 short int var156 /* : Bool */;
5452 uint32_t var157 /* : Char */;
5453 short int var_last_is_padded /* var last_is_padded: Bool */;
5454 long var158 /* : Int */;
5455 long var160 /* : Int */;
5456 long var_nbargs /* var nbargs: Int */;
5457 long var161 /* : Int */;
5458 short int var163 /* : Bool */;
5459 int cltype164;
5460 int idtype165;
5461 const char* var_class_name166;
5462 long var167 /* : Int */;
5463 val* var168 /* : nullable Object */;
5464 short int var169 /* : Bool */;
5465 int cltype170;
5466 int idtype171;
5467 short int var172 /* : Bool */;
5468 val* var173 /* : ArrayMap[Int, Int] */;
5469 val* var175 /* : ArrayMap[Int, Int] */;
5470 long var176 /* : Int */;
5471 long var177 /* : Int */;
5472 short int var179 /* : Bool */;
5473 int cltype180;
5474 int idtype181;
5475 const char* var_class_name182;
5476 long var183 /* : Int */;
5477 long var184 /* : Int */;
5478 long var186 /* : Int */;
5479 long var187 /* : Int */;
5480 short int var189 /* : Bool */;
5481 int cltype190;
5482 int idtype191;
5483 const char* var_class_name192;
5484 long var193 /* : Int */;
5485 val* var194 /* : nullable Object */;
5486 val* var195 /* : nullable Object */;
5487 val* var196 /* : nullable Object */;
5488 val* var197 /* : Array[MParameter] */;
5489 val* var199 /* : Array[MParameter] */;
5490 val* var200 /* : nullable Object */;
5491 val* var201 /* : MType */;
5492 val* var203 /* : MType */;
5493 val* var204 /* : nullable MType */;
5494 long var_i /* var i: Int */;
5495 long var205 /* : Int */;
5496 long var207 /* : Int */;
5497 long var_ /* var : Int */;
5498 short int var208 /* : Bool */;
5499 short int var210 /* : Bool */;
5500 int cltype211;
5501 int idtype212;
5502 const char* var_class_name213;
5503 short int var214 /* : Bool */;
5504 val* var215 /* : nullable Object */;
5505 val* var_e /* var e: AExpr */;
5506 short int var216 /* : Bool */;
5507 int cltype217;
5508 int idtype218;
5509 short int var219 /* : Bool */;
5510 val* var221 /* : TId */;
5511 val* var223 /* : TId */;
5512 val* var224 /* : String */;
5513 val* var_name /* var name: String */;
5514 val* var225 /* : nullable MParameter */;
5515 val* var_param /* var param: nullable MParameter */;
5516 short int var226 /* : Bool */;
5517 short int var227 /* : Bool */;
5518 val* var_other /* var other: nullable Object */;
5519 short int var229 /* : Bool */;
5520 short int var231 /* : Bool */;
5521 val* var232 /* : ModelBuilder */;
5522 val* var234 /* : ModelBuilder */;
5523 val* var235 /* : TId */;
5524 val* var237 /* : TId */;
5525 val* var239 /* : NativeArray[String] */;
5526 static val* varonce238;
5527 static val* varonce240;
5528 val* var241 /* : String */;
5529 char* var242 /* : CString */;
5530 val* var243 /* : String */;
5531 val* var244 /* : nullable Int */;
5532 val* var245 /* : nullable Int */;
5533 val* var246 /* : nullable Bool */;
5534 val* var247 /* : nullable Bool */;
5535 static val* varonce248;
5536 val* var249 /* : String */;
5537 char* var250 /* : CString */;
5538 val* var251 /* : String */;
5539 val* var252 /* : nullable Int */;
5540 val* var253 /* : nullable Int */;
5541 val* var254 /* : nullable Bool */;
5542 val* var255 /* : nullable Bool */;
5543 static val* varonce256;
5544 val* var257 /* : String */;
5545 char* var258 /* : CString */;
5546 val* var259 /* : String */;
5547 val* var260 /* : nullable Int */;
5548 val* var261 /* : nullable Int */;
5549 val* var262 /* : nullable Bool */;
5550 val* var263 /* : nullable Bool */;
5551 val* var264 /* : String */;
5552 val* var265 /* : String */;
5553 val* var266 /* : String */;
5554 val* var267 /* : Array[MParameter] */;
5555 val* var269 /* : Array[MParameter] */;
5556 long var270 /* : Int */;
5557 long var_idx /* var idx: Int */;
5558 val* var271 /* : ArrayMap[Int, Int] */;
5559 val* var273 /* : ArrayMap[Int, Int] */;
5560 val* var274 /* : nullable Object */;
5561 val* var275 /* : nullable Object */;
5562 val* var_prev /* var prev: nullable Int */;
5563 short int var276 /* : Bool */;
5564 short int var277 /* : Bool */;
5565 short int var279 /* : Bool */;
5566 short int var280 /* : Bool */;
5567 val* var281 /* : ModelBuilder */;
5568 val* var283 /* : ModelBuilder */;
5569 val* var285 /* : NativeArray[String] */;
5570 static val* varonce284;
5571 static val* varonce286;
5572 val* var287 /* : String */;
5573 char* var288 /* : CString */;
5574 val* var289 /* : String */;
5575 val* var290 /* : nullable Int */;
5576 val* var291 /* : nullable Int */;
5577 val* var292 /* : nullable Bool */;
5578 val* var293 /* : nullable Bool */;
5579 static val* varonce294;
5580 val* var295 /* : String */;
5581 char* var296 /* : CString */;
5582 val* var297 /* : String */;
5583 val* var298 /* : nullable Int */;
5584 val* var299 /* : nullable Int */;
5585 val* var300 /* : nullable Bool */;
5586 val* var301 /* : nullable Bool */;
5587 static val* varonce302;
5588 val* var303 /* : String */;
5589 char* var304 /* : CString */;
5590 val* var305 /* : String */;
5591 val* var306 /* : nullable Int */;
5592 val* var307 /* : nullable Int */;
5593 val* var308 /* : nullable Bool */;
5594 val* var309 /* : nullable Bool */;
5595 static val* varonce310;
5596 val* var311 /* : String */;
5597 char* var312 /* : CString */;
5598 val* var313 /* : String */;
5599 val* var314 /* : nullable Int */;
5600 val* var315 /* : nullable Int */;
5601 val* var316 /* : nullable Bool */;
5602 val* var317 /* : nullable Bool */;
5603 val* var318 /* : String */;
5604 long var319 /* : Int */;
5605 val* var320 /* : String */;
5606 val* var321 /* : String */;
5607 val* var322 /* : String */;
5608 val* var323 /* : ArrayMap[Int, Int] */;
5609 val* var325 /* : ArrayMap[Int, Int] */;
5610 val* var326 /* : nullable Object */;
5611 val* var327 /* : nullable Object */;
5612 val* var328 /* : AExpr */;
5613 val* var330 /* : AExpr */;
5614 val* var331 /* : MType */;
5615 val* var333 /* : MType */;
5616 val* var334 /* : nullable MType */;
5617 long var336 /* : Int */;
5618 long var_min_arity /* var min_arity: Int */;
5619 long var337 /* : Int */;
5620 long var339 /* : Int */;
5621 long var340 /* : Int */;
5622 long var341 /* : Int */;
5623 short int var343 /* : Bool */;
5624 int cltype344;
5625 int idtype345;
5626 const char* var_class_name346;
5627 long var347 /* : Int */;
5628 long var_vararg_decl /* var vararg_decl: Int */;
5629 long var_j /* var j: Int */;
5630 long var_i348 /* var i: Int */;
5631 long var349 /* : Int */;
5632 long var_350 /* var : Int */;
5633 short int var351 /* : Bool */;
5634 short int var353 /* : Bool */;
5635 int cltype354;
5636 int idtype355;
5637 const char* var_class_name356;
5638 short int var357 /* : Bool */;
5639 val* var359 /* : ArrayMap[Int, Int] */;
5640 val* var361 /* : ArrayMap[Int, Int] */;
5641 short int var362 /* : Bool */;
5642 val* var363 /* : nullable Object */;
5643 val* var365 /* : Array[MParameter] */;
5644 val* var367 /* : Array[MParameter] */;
5645 val* var368 /* : nullable Object */;
5646 val* var_param369 /* var param: MParameter */;
5647 short int var370 /* : Bool */;
5648 short int var371 /* : Bool */;
5649 short int var373 /* : Bool */;
5650 int cltype374;
5651 int idtype375;
5652 const char* var_class_name376;
5653 short int var377 /* : Bool */;
5654 short int var_378 /* var : Bool */;
5655 val* var379 /* : nullable Object */;
5656 short int var380 /* : Bool */;
5657 int cltype381;
5658 int idtype382;
5659 long var383 /* : Int */;
5660 short int var385 /* : Bool */;
5661 int cltype386;
5662 int idtype387;
5663 const char* var_class_name388;
5664 long var389 /* : Int */;
5665 short int var391 /* : Bool */;
5666 short int var393 /* : Bool */;
5667 int cltype394;
5668 int idtype395;
5669 const char* var_class_name396;
5670 short int var397 /* : Bool */;
5671 val* var398 /* : MType */;
5672 val* var400 /* : MType */;
5673 short int var401 /* : Bool */;
5674 int cltype402;
5675 int idtype403;
5676 short int var404 /* : Bool */;
5677 long var405 /* : Int */;
5678 short int var407 /* : Bool */;
5679 int cltype408;
5680 int idtype409;
5681 const char* var_class_name410;
5682 long var411 /* : Int */;
5683 long var412 /* : Int */;
5684 short int var414 /* : Bool */;
5685 int cltype415;
5686 int idtype416;
5687 const char* var_class_name417;
5688 long var418 /* : Int */;
5689 val* var419 /* : nullable Object */;
5690 val* var_arg /* var arg: AExpr */;
5691 val* var420 /* : ArrayMap[Int, Int] */;
5692 val* var422 /* : ArrayMap[Int, Int] */;
5693 val* var423 /* : nullable Object */;
5694 val* var424 /* : nullable Object */;
5695 long var425 /* : Int */;
5696 short int var427 /* : Bool */;
5697 int cltype428;
5698 int idtype429;
5699 const char* var_class_name430;
5700 long var431 /* : Int */;
5701 short int var432 /* : Bool */;
5702 short int var434 /* : Bool */;
5703 long var435 /* : Int */;
5704 short int var437 /* : Bool */;
5705 int cltype438;
5706 int idtype439;
5707 const char* var_class_name440;
5708 long var441 /* : Int */;
5709 short int var442 /* : Bool */;
5710 short int var444 /* : Bool */;
5711 short int var445 /* : Bool */;
5712 val* var446 /* : MType */;
5713 val* var448 /* : MType */;
5714 val* var_paramtype /* var paramtype: MType */;
5715 val* var449 /* : nullable MType */;
5716 short int var450 /* : Bool */;
5717 long var451 /* : Int */;
5718 short int var452 /* : Bool */;
5719 short int var454 /* : Bool */;
5720 int cltype455;
5721 int idtype456;
5722 const char* var_class_name457;
5723 short int var458 /* : Bool */;
5724 long var459 /* : Int */;
5725 short int var461 /* : Bool */;
5726 int cltype462;
5727 int idtype463;
5728 const char* var_class_name464;
5729 long var465 /* : Int */;
5730 long var466 /* : Int */;
5731 short int var467 /* : Bool */;
5732 short int var469 /* : Bool */;
5733 int cltype470;
5734 int idtype471;
5735 const char* var_class_name472;
5736 short int var473 /* : Bool */;
5737 val* var474 /* : ModelBuilder */;
5738 val* var476 /* : ModelBuilder */;
5739 val* var478 /* : NativeArray[String] */;
5740 static val* varonce477;
5741 static val* varonce479;
5742 val* var480 /* : String */;
5743 char* var481 /* : CString */;
5744 val* var482 /* : String */;
5745 val* var483 /* : nullable Int */;
5746 val* var484 /* : nullable Int */;
5747 val* var485 /* : nullable Bool */;
5748 val* var486 /* : nullable Bool */;
5749 static val* varonce487;
5750 val* var488 /* : String */;
5751 char* var489 /* : CString */;
5752 val* var490 /* : String */;
5753 val* var491 /* : nullable Int */;
5754 val* var492 /* : nullable Int */;
5755 val* var493 /* : nullable Bool */;
5756 val* var494 /* : nullable Bool */;
5757 static val* varonce495;
5758 val* var496 /* : String */;
5759 char* var497 /* : CString */;
5760 val* var498 /* : String */;
5761 val* var499 /* : nullable Int */;
5762 val* var500 /* : nullable Int */;
5763 val* var501 /* : nullable Bool */;
5764 val* var502 /* : nullable Bool */;
5765 static val* varonce503;
5766 val* var504 /* : String */;
5767 char* var505 /* : CString */;
5768 val* var506 /* : String */;
5769 val* var507 /* : nullable Int */;
5770 val* var508 /* : nullable Int */;
5771 val* var509 /* : nullable Bool */;
5772 val* var510 /* : nullable Bool */;
5773 static val* varonce511;
5774 val* var512 /* : String */;
5775 char* var513 /* : CString */;
5776 val* var514 /* : String */;
5777 val* var515 /* : nullable Int */;
5778 val* var516 /* : nullable Int */;
5779 val* var517 /* : nullable Bool */;
5780 val* var518 /* : nullable Bool */;
5781 val* var519 /* : String */;
5782 val* var520 /* : String */;
5783 val* var521 /* : String */;
5784 long var522 /* : Int */;
5785 long var524 /* : Int */;
5786 val* var525 /* : String */;
5787 val* var526 /* : String */;
5788 val* var527 /* : String */;
5789 val* var528 /* : ModelBuilder */;
5790 val* var530 /* : ModelBuilder */;
5791 val* var532 /* : NativeArray[String] */;
5792 static val* varonce531;
5793 static val* varonce533;
5794 val* var534 /* : String */;
5795 char* var535 /* : CString */;
5796 val* var536 /* : String */;
5797 val* var537 /* : nullable Int */;
5798 val* var538 /* : nullable Int */;
5799 val* var539 /* : nullable Bool */;
5800 val* var540 /* : nullable Bool */;
5801 static val* varonce541;
5802 val* var542 /* : String */;
5803 char* var543 /* : CString */;
5804 val* var544 /* : String */;
5805 val* var545 /* : nullable Int */;
5806 val* var546 /* : nullable Int */;
5807 val* var547 /* : nullable Bool */;
5808 val* var548 /* : nullable Bool */;
5809 static val* varonce549;
5810 val* var550 /* : String */;
5811 char* var551 /* : CString */;
5812 val* var552 /* : String */;
5813 val* var553 /* : nullable Int */;
5814 val* var554 /* : nullable Int */;
5815 val* var555 /* : nullable Bool */;
5816 val* var556 /* : nullable Bool */;
5817 static val* varonce557;
5818 val* var558 /* : String */;
5819 char* var559 /* : CString */;
5820 val* var560 /* : String */;
5821 val* var561 /* : nullable Int */;
5822 val* var562 /* : nullable Int */;
5823 val* var563 /* : nullable Bool */;
5824 val* var564 /* : nullable Bool */;
5825 static val* varonce565;
5826 val* var566 /* : String */;
5827 char* var567 /* : CString */;
5828 val* var568 /* : String */;
5829 val* var569 /* : nullable Int */;
5830 val* var570 /* : nullable Int */;
5831 val* var571 /* : nullable Bool */;
5832 val* var572 /* : nullable Bool */;
5833 val* var573 /* : String */;
5834 val* var574 /* : String */;
5835 val* var575 /* : String */;
5836 long var576 /* : Int */;
5837 long var578 /* : Int */;
5838 val* var579 /* : String */;
5839 val* var580 /* : String */;
5840 val* var581 /* : String */;
5841 short int var582 /* : Bool */;
5842 short int var584 /* : Bool */;
5843 int cltype585;
5844 int idtype586;
5845 const char* var_class_name587;
5846 short int var588 /* : Bool */;
5847 val* var589 /* : Array[MParameter] */;
5848 val* var591 /* : Array[MParameter] */;
5849 val* var592 /* : nullable Object */;
5850 val* var593 /* : MType */;
5851 val* var595 /* : MType */;
5852 val* var_paramtype596 /* var paramtype: MType */;
5853 val* var597 /* : nullable Object */;
5854 val* var_first /* var first: AExpr */;
5855 short int var598 /* : Bool */;
5856 short int var600 /* : Bool */;
5857 val* var601 /* : Array[MParameter] */;
5858 val* var603 /* : Array[MParameter] */;
5859 val* var604 /* : nullable Object */;
5860 short int var605 /* : Bool */;
5861 short int var606 /* : Bool */;
5862 long var607 /* : Int */;
5863 short int var609 /* : Bool */;
5864 int cltype610;
5865 int idtype611;
5866 const char* var_class_name612;
5867 long var613 /* : Int */;
5868 long var_i615 /* var i: Int */;
5869 long var616 /* : Int */;
5870 short int var618 /* : Bool */;
5871 int cltype619;
5872 int idtype620;
5873 const char* var_class_name621;
5874 long var622 /* : Int */;
5875 long var_623 /* var : Int */;
5876 short int var624 /* : Bool */;
5877 short int var626 /* : Bool */;
5878 int cltype627;
5879 int idtype628;
5880 const char* var_class_name629;
5881 short int var630 /* : Bool */;
5882 val* var632 /* : nullable Object */;
5883 val* var633 /* : nullable MType */;
5884 long var634 /* : Int */;
5885 var_node = p0;
5886 var_args = p1;
5887 var_mproperty = p2;
5888 var_msignature = p3;
5889 {
5890 { /* Inline model$MSignature$vararg_rank (var_msignature) on <var_msignature:MSignature> */
5891 var3 = var_msignature->attrs[COLOR_nitc__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
5892 var1 = var3;
5893 RET_LABEL2:(void)0;
5894 }
5895 }
5896 var_vararg_rank = var1;
5897 {
5898 { /* Inline kernel$Int$>= (var_vararg_rank,0l) on <var_vararg_rank:Int> */
5899 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
5900 /* <0l:Int> isa OTHER */
5901 var6 = 1; /* easy <0l:Int> isa OTHER*/
5902 if (unlikely(!var6)) {
5903 var_class_name = type_core__Int.name;
5904 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5905 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
5906 fatal_exit(1);
5907 }
5908 var7 = var_vararg_rank >= 0l;
5909 var4 = var7;
5910 goto RET_LABEL5;
5911 RET_LABEL5:(void)0;
5912 }
5913 }
5914 if (var4){
5915 {
5916 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
5917 var10 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
5918 var8 = var10;
5919 RET_LABEL9:(void)0;
5920 }
5921 }
5922 {
5923 var11 = nitc___nitc__MSignature___arity(var_msignature);
5924 }
5925 {
5926 { /* Inline kernel$Int$< (var8,var11) on <var8:Int> */
5927 /* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
5928 /* <var11:Int> isa OTHER */
5929 var14 = 1; /* easy <var11:Int> isa OTHER*/
5930 if (unlikely(!var14)) {
5931 var_class_name17 = type_core__Int.name;
5932 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
5933 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
5934 fatal_exit(1);
5935 }
5936 var18 = var8 < var11;
5937 var12 = var18;
5938 goto RET_LABEL13;
5939 RET_LABEL13:(void)0;
5940 }
5941 }
5942 if (var12){
5943 {
5944 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
5945 var21 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
5946 if (unlikely(var21 == NULL)) {
5947 if(catchStack.cursor >= 0){
5948 longjmp(catchStack.envs[catchStack.cursor], 1);
5949 }
5950 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5951 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
5952 fatal_exit(1);
5953 }
5954 var19 = var21;
5955 RET_LABEL20:(void)0;
5956 }
5957 }
5958 if (unlikely(varonce==NULL)) {
5959 var22 = NEW_core__NativeArray((int)10l, &type_core__NativeArray__core__String);
5960 if (likely(varonce23!=NULL)) {
5961 var24 = varonce23;
5962 } else {
5963 var25 = "Error: expected at least ";
5964 var27 = (val*)(25l<<2|1);
5965 var28 = (val*)(25l<<2|1);
5966 var29 = (val*)((long)(0)<<2|3);
5967 var30 = (val*)((long)(0)<<2|3);
5968 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
5969 var24 = var26;
5970 varonce23 = var24;
5971 }
5972 ((struct instance_core__NativeArray*)var22)->values[0]=var24;
5973 if (likely(varonce31!=NULL)) {
5974 var32 = varonce31;
5975 } else {
5976 var33 = " argument(s) for `";
5977 var35 = (val*)(18l<<2|1);
5978 var36 = (val*)(18l<<2|1);
5979 var37 = (val*)((long)(0)<<2|3);
5980 var38 = (val*)((long)(0)<<2|3);
5981 var34 = core__flat___CString___to_s_unsafe(var33, var35, var36, var37, var38);
5982 var32 = var34;
5983 varonce31 = var32;
5984 }
5985 ((struct instance_core__NativeArray*)var22)->values[2]=var32;
5986 if (likely(varonce39!=NULL)) {
5987 var40 = varonce39;
5988 } else {
5989 var41 = "`; got ";
5990 var43 = (val*)(7l<<2|1);
5991 var44 = (val*)(7l<<2|1);
5992 var45 = (val*)((long)(0)<<2|3);
5993 var46 = (val*)((long)(0)<<2|3);
5994 var42 = core__flat___CString___to_s_unsafe(var41, var43, var44, var45, var46);
5995 var40 = var42;
5996 varonce39 = var40;
5997 }
5998 ((struct instance_core__NativeArray*)var22)->values[5]=var40;
5999 if (likely(varonce47!=NULL)) {
6000 var48 = varonce47;
6001 } else {
6002 var49 = ". See introduction at `";
6003 var51 = (val*)(23l<<2|1);
6004 var52 = (val*)(23l<<2|1);
6005 var53 = (val*)((long)(0)<<2|3);
6006 var54 = (val*)((long)(0)<<2|3);
6007 var50 = core__flat___CString___to_s_unsafe(var49, var51, var52, var53, var54);
6008 var48 = var50;
6009 varonce47 = var48;
6010 }
6011 ((struct instance_core__NativeArray*)var22)->values[7]=var48;
6012 if (likely(varonce55!=NULL)) {
6013 var56 = varonce55;
6014 } else {
6015 var57 = "`.";
6016 var59 = (val*)(2l<<2|1);
6017 var60 = (val*)(2l<<2|1);
6018 var61 = (val*)((long)(0)<<2|3);
6019 var62 = (val*)((long)(0)<<2|3);
6020 var58 = core__flat___CString___to_s_unsafe(var57, var59, var60, var61, var62);
6021 var56 = var58;
6022 varonce55 = var56;
6023 }
6024 ((struct instance_core__NativeArray*)var22)->values[9]=var56;
6025 } else {
6026 var22 = varonce;
6027 varonce = NULL;
6028 }
6029 {
6030 var63 = nitc___nitc__MSignature___arity(var_msignature);
6031 }
6032 var64 = core__flat___Int___core__abstract_text__Object__to_s(var63);
6033 ((struct instance_core__NativeArray*)var22)->values[1]=var64;
6034 {
6035 var65 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
6036 }
6037 ((struct instance_core__NativeArray*)var22)->values[3]=var65;
6038 {
6039 var66 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
6040 }
6041 ((struct instance_core__NativeArray*)var22)->values[4]=var66;
6042 {
6043 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6044 var69 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6045 var67 = var69;
6046 RET_LABEL68:(void)0;
6047 }
6048 }
6049 var70 = core__flat___Int___core__abstract_text__Object__to_s(var67);
6050 ((struct instance_core__NativeArray*)var22)->values[6]=var70;
6051 {
6052 var71 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_mproperty);
6053 }
6054 ((struct instance_core__NativeArray*)var22)->values[8]=var71;
6055 {
6056 var72 = ((val*(*)(val* self))(var22->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var22); /* native_to_s on <var22:NativeArray[String]>*/
6057 }
6058 varonce = var22;
6059 {
6060 nitc___nitc__ModelBuilder___error(var19, var_node, var72); /* Direct call modelbuilder_base$ModelBuilder$error on <var19:ModelBuilder>*/
6061 }
6062 var = ((val*)NULL);
6063 goto RET_LABEL;
6064 } else {
6065 }
6066 } else {
6067 {
6068 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6069 var75 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6070 var73 = var75;
6071 RET_LABEL74:(void)0;
6072 }
6073 }
6074 {
6075 var76 = nitc___nitc__MSignature___arity(var_msignature);
6076 }
6077 {
6078 { /* Inline kernel$Int$!= (var73,var76) on <var73:Int> */
6079 var79 = var73 == var76;
6080 var80 = !var79;
6081 var77 = var80;
6082 goto RET_LABEL78;
6083 RET_LABEL78:(void)0;
6084 }
6085 }
6086 if (var77){
6087 {
6088 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6089 var83 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6090 var81 = var83;
6091 RET_LABEL82:(void)0;
6092 }
6093 }
6094 {
6095 var84 = nitc___nitc__MSignature___arity(var_msignature);
6096 }
6097 {
6098 { /* Inline kernel$Int$> (var81,var84) on <var81:Int> */
6099 /* Covariant cast for argument 0 (i) <var84:Int> isa OTHER */
6100 /* <var84:Int> isa OTHER */
6101 var87 = 1; /* easy <var84:Int> isa OTHER*/
6102 if (unlikely(!var87)) {
6103 var_class_name90 = type_core__Int.name;
6104 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name90);
6105 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
6106 fatal_exit(1);
6107 }
6108 var91 = var81 > var84;
6109 var85 = var91;
6110 goto RET_LABEL86;
6111 RET_LABEL86:(void)0;
6112 }
6113 }
6114 if (var85){
6115 {
6116 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
6117 var94 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
6118 if (unlikely(var94 == NULL)) {
6119 if(catchStack.cursor >= 0){
6120 longjmp(catchStack.envs[catchStack.cursor], 1);
6121 }
6122 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6123 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
6124 fatal_exit(1);
6125 }
6126 var92 = var94;
6127 RET_LABEL93:(void)0;
6128 }
6129 }
6130 if (unlikely(varonce95==NULL)) {
6131 var96 = NEW_core__NativeArray((int)10l, &type_core__NativeArray__core__String);
6132 if (likely(varonce97!=NULL)) {
6133 var98 = varonce97;
6134 } else {
6135 var99 = "Error: expected ";
6136 var101 = (val*)(16l<<2|1);
6137 var102 = (val*)(16l<<2|1);
6138 var103 = (val*)((long)(0)<<2|3);
6139 var104 = (val*)((long)(0)<<2|3);
6140 var100 = core__flat___CString___to_s_unsafe(var99, var101, var102, var103, var104);
6141 var98 = var100;
6142 varonce97 = var98;
6143 }
6144 ((struct instance_core__NativeArray*)var96)->values[0]=var98;
6145 if (likely(varonce105!=NULL)) {
6146 var106 = varonce105;
6147 } else {
6148 var107 = " argument(s) for `";
6149 var109 = (val*)(18l<<2|1);
6150 var110 = (val*)(18l<<2|1);
6151 var111 = (val*)((long)(0)<<2|3);
6152 var112 = (val*)((long)(0)<<2|3);
6153 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
6154 var106 = var108;
6155 varonce105 = var106;
6156 }
6157 ((struct instance_core__NativeArray*)var96)->values[2]=var106;
6158 if (likely(varonce113!=NULL)) {
6159 var114 = varonce113;
6160 } else {
6161 var115 = "`; got ";
6162 var117 = (val*)(7l<<2|1);
6163 var118 = (val*)(7l<<2|1);
6164 var119 = (val*)((long)(0)<<2|3);
6165 var120 = (val*)((long)(0)<<2|3);
6166 var116 = core__flat___CString___to_s_unsafe(var115, var117, var118, var119, var120);
6167 var114 = var116;
6168 varonce113 = var114;
6169 }
6170 ((struct instance_core__NativeArray*)var96)->values[5]=var114;
6171 if (likely(varonce121!=NULL)) {
6172 var122 = varonce121;
6173 } else {
6174 var123 = ". See introduction at `";
6175 var125 = (val*)(23l<<2|1);
6176 var126 = (val*)(23l<<2|1);
6177 var127 = (val*)((long)(0)<<2|3);
6178 var128 = (val*)((long)(0)<<2|3);
6179 var124 = core__flat___CString___to_s_unsafe(var123, var125, var126, var127, var128);
6180 var122 = var124;
6181 varonce121 = var122;
6182 }
6183 ((struct instance_core__NativeArray*)var96)->values[7]=var122;
6184 if (likely(varonce129!=NULL)) {
6185 var130 = varonce129;
6186 } else {
6187 var131 = "`.";
6188 var133 = (val*)(2l<<2|1);
6189 var134 = (val*)(2l<<2|1);
6190 var135 = (val*)((long)(0)<<2|3);
6191 var136 = (val*)((long)(0)<<2|3);
6192 var132 = core__flat___CString___to_s_unsafe(var131, var133, var134, var135, var136);
6193 var130 = var132;
6194 varonce129 = var130;
6195 }
6196 ((struct instance_core__NativeArray*)var96)->values[9]=var130;
6197 } else {
6198 var96 = varonce95;
6199 varonce95 = NULL;
6200 }
6201 {
6202 var137 = nitc___nitc__MSignature___arity(var_msignature);
6203 }
6204 var138 = core__flat___Int___core__abstract_text__Object__to_s(var137);
6205 ((struct instance_core__NativeArray*)var96)->values[1]=var138;
6206 {
6207 var139 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
6208 }
6209 ((struct instance_core__NativeArray*)var96)->values[3]=var139;
6210 {
6211 var140 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
6212 }
6213 ((struct instance_core__NativeArray*)var96)->values[4]=var140;
6214 {
6215 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6216 var143 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6217 var141 = var143;
6218 RET_LABEL142:(void)0;
6219 }
6220 }
6221 var144 = core__flat___Int___core__abstract_text__Object__to_s(var141);
6222 ((struct instance_core__NativeArray*)var96)->values[6]=var144;
6223 {
6224 var145 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_mproperty);
6225 }
6226 ((struct instance_core__NativeArray*)var96)->values[8]=var145;
6227 {
6228 var146 = ((val*(*)(val* self))(var96->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var96); /* native_to_s on <var96:NativeArray[String]>*/
6229 }
6230 varonce95 = var96;
6231 {
6232 nitc___nitc__ModelBuilder___error(var92, var_node, var146); /* Direct call modelbuilder_base$ModelBuilder$error on <var92:ModelBuilder>*/
6233 }
6234 var = ((val*)NULL);
6235 goto RET_LABEL;
6236 } else {
6237 }
6238 } else {
6239 }
6240 }
6241 var147 = NEW_nitc__SignatureMap(&type_nitc__SignatureMap);
6242 {
6243 { /* Inline kernel$Object$init (var147) on <var147:SignatureMap> */
6244 RET_LABEL148:(void)0;
6245 }
6246 }
6247 var_map = var147;
6248 {
6249 { /* Inline model$MProperty$name (var_mproperty) on <var_mproperty:MProperty> */
6250 var151 = var_mproperty->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mproperty:MProperty> */
6251 if (unlikely(var151 == NULL)) {
6252 if(catchStack.cursor >= 0){
6253 longjmp(catchStack.envs[catchStack.cursor], 1);
6254 }
6255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
6256 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2047);
6257 fatal_exit(1);
6258 }
6259 var149 = var151;
6260 RET_LABEL150:(void)0;
6261 }
6262 }
6263 {
6264 var152 = ((val*(*)(val* self))(var149->class->vft[COLOR_core__abstract_text__Text__chars]))(var149); /* chars on <var149:String>*/
6265 }
6266 {
6267 var153 = ((val*(*)(val* self))((((long)var152&3)?class_info[((long)var152&3)]:var152->class)->vft[COLOR_core__abstract_collection__SequenceRead__last]))(var152); /* last on <var152:SequenceRead[Char]>*/
6268 }
6269 {
6270 { /* Inline kernel$Char$== (var153,'=') on <var153:nullable Object(Char)> */
6271 var157 = (uint32_t)((long)(var153)>>2);
6272 var156 = var157 == '=';
6273 var154 = var156;
6274 goto RET_LABEL155;
6275 RET_LABEL155:(void)0;
6276 }
6277 }
6278 var_last_is_padded = var154;
6279 {
6280 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6281 var160 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6282 var158 = var160;
6283 RET_LABEL159:(void)0;
6284 }
6285 }
6286 var_nbargs = var158;
6287 if (var_last_is_padded){
6288 {
6289 { /* Inline kernel$Int$- (var_nbargs,1l) on <var_nbargs:Int> */
6290 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6291 /* <1l:Int> isa OTHER */
6292 var163 = 1; /* easy <1l:Int> isa OTHER*/
6293 if (unlikely(!var163)) {
6294 var_class_name166 = type_core__Int.name;
6295 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name166);
6296 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
6297 fatal_exit(1);
6298 }
6299 var167 = var_nbargs - 1l;
6300 var161 = var167;
6301 goto RET_LABEL162;
6302 RET_LABEL162:(void)0;
6303 }
6304 }
6305 var_nbargs = var161;
6306 {
6307 var168 = core___core__SequenceRead___last(var_args);
6308 }
6309 /* <var168:nullable Object(AExpr)> isa ANamedargExpr */
6310 cltype170 = type_nitc__ANamedargExpr.color;
6311 idtype171 = type_nitc__ANamedargExpr.id;
6312 if(cltype170 >= var168->type->table_size) {
6313 var169 = 0;
6314 } else {
6315 var169 = var168->type->type_table[cltype170] == idtype171;
6316 }
6317 var172 = !var169;
6318 if (unlikely(!var172)) {
6319 if(catchStack.cursor >= 0){
6320 longjmp(catchStack.envs[catchStack.cursor], 1);
6321 }
6322 PRINT_ERROR("Runtime error: %s", "Assert failed");
6323 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 442);
6324 fatal_exit(1);
6325 }
6326 {
6327 { /* Inline typing$SignatureMap$map (var_map) on <var_map:SignatureMap> */
6328 var175 = var_map->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <var_map:SignatureMap> */
6329 if (unlikely(var175 == NULL)) {
6330 if(catchStack.cursor >= 0){
6331 longjmp(catchStack.envs[catchStack.cursor], 1);
6332 }
6333 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
6334 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
6335 fatal_exit(1);
6336 }
6337 var173 = var175;
6338 RET_LABEL174:(void)0;
6339 }
6340 }
6341 {
6342 var176 = nitc___nitc__MSignature___arity(var_msignature);
6343 }
6344 {
6345 { /* Inline kernel$Int$- (var176,1l) on <var176:Int> */
6346 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6347 /* <1l:Int> isa OTHER */
6348 var179 = 1; /* easy <1l:Int> isa OTHER*/
6349 if (unlikely(!var179)) {
6350 var_class_name182 = type_core__Int.name;
6351 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name182);
6352 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
6353 fatal_exit(1);
6354 }
6355 var183 = var176 - 1l;
6356 var177 = var183;
6357 goto RET_LABEL178;
6358 RET_LABEL178:(void)0;
6359 }
6360 }
6361 {
6362 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6363 var186 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6364 var184 = var186;
6365 RET_LABEL185:(void)0;
6366 }
6367 }
6368 {
6369 { /* Inline kernel$Int$- (var184,1l) on <var184:Int> */
6370 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6371 /* <1l:Int> isa OTHER */
6372 var189 = 1; /* easy <1l:Int> isa OTHER*/
6373 if (unlikely(!var189)) {
6374 var_class_name192 = type_core__Int.name;
6375 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name192);
6376 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
6377 fatal_exit(1);
6378 }
6379 var193 = var184 - 1l;
6380 var187 = var193;
6381 goto RET_LABEL188;
6382 RET_LABEL188:(void)0;
6383 }
6384 }
6385 {
6386 var194 = (val*)(var177<<2|1);
6387 var195 = (val*)(var187<<2|1);
6388 core___core__ArrayMap___core__abstract_collection__Map___91d_93d_61d(var173, var194, var195); /* Direct call array$ArrayMap$[]= on <var173:ArrayMap[Int, Int]>*/
6389 }
6390 {
6391 var196 = core___core__SequenceRead___last(var_args);
6392 }
6393 {
6394 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:MSignature> */
6395 var199 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
6396 if (unlikely(var199 == NULL)) {
6397 if(catchStack.cursor >= 0){
6398 longjmp(catchStack.envs[catchStack.cursor], 1);
6399 }
6400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6401 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
6402 fatal_exit(1);
6403 }
6404 var197 = var199;
6405 RET_LABEL198:(void)0;
6406 }
6407 }
6408 {
6409 var200 = core___core__SequenceRead___last(var197);
6410 }
6411 {
6412 { /* Inline model$MParameter$mtype (var200) on <var200:nullable Object(MParameter)> */
6413 var203 = var200->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var200:nullable Object(MParameter)> */
6414 if (unlikely(var203 == NULL)) {
6415 if(catchStack.cursor >= 0){
6416 longjmp(catchStack.envs[catchStack.cursor], 1);
6417 }
6418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6419 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
6420 fatal_exit(1);
6421 }
6422 var201 = var203;
6423 RET_LABEL202:(void)0;
6424 }
6425 }
6426 {
6427 var204 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var196, var201);
6428 }
6429 } else {
6430 }
6431 var_i = 0l;
6432 {
6433 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6434 var207 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6435 var205 = var207;
6436 RET_LABEL206:(void)0;
6437 }
6438 }
6439 var_ = var205;
6440 for(;;) {
6441 {
6442 { /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
6443 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
6444 /* <var_:Int> isa OTHER */
6445 var210 = 1; /* easy <var_:Int> isa OTHER*/
6446 if (unlikely(!var210)) {
6447 var_class_name213 = type_core__Int.name;
6448 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name213);
6449 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
6450 fatal_exit(1);
6451 }
6452 var214 = var_i < var_;
6453 var208 = var214;
6454 goto RET_LABEL209;
6455 RET_LABEL209:(void)0;
6456 }
6457 }
6458 if (var208){
6459 } else {
6460 goto BREAK_label;
6461 }
6462 {
6463 var215 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_args, var_i);
6464 }
6465 var_e = var215;
6466 /* <var_e:AExpr> isa ANamedargExpr */
6467 cltype217 = type_nitc__ANamedargExpr.color;
6468 idtype218 = type_nitc__ANamedargExpr.id;
6469 if(cltype217 >= var_e->type->table_size) {
6470 var216 = 0;
6471 } else {
6472 var216 = var_e->type->type_table[cltype217] == idtype218;
6473 }
6474 var219 = !var216;
6475 if (var219){
6476 goto BREAK_label220;
6477 } else {
6478 }
6479 {
6480 { /* Inline parser_nodes$ANamedargExpr$n_id (var_e) on <var_e:AExpr(ANamedargExpr)> */
6481 var223 = var_e->attrs[COLOR_nitc__parser_nodes__ANamedargExpr___n_id].val; /* _n_id on <var_e:AExpr(ANamedargExpr)> */
6482 if (unlikely(var223 == NULL)) {
6483 if(catchStack.cursor >= 0){
6484 longjmp(catchStack.envs[catchStack.cursor], 1);
6485 }
6486 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
6487 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2722);
6488 fatal_exit(1);
6489 }
6490 var221 = var223;
6491 RET_LABEL222:(void)0;
6492 }
6493 }
6494 {
6495 var224 = nitc__lexer_work___Token___text(var221);
6496 }
6497 var_name = var224;
6498 {
6499 var225 = nitc___nitc__MSignature___mparameter_by_name(var_msignature, var_name);
6500 }
6501 var_param = var225;
6502 if (var_param == NULL) {
6503 var226 = 1; /* is null */
6504 } else {
6505 var226 = 0; /* arg is null but recv is not */
6506 }
6507 if (0) {
6508 { /* Inline kernel$Object$== (var_param,((val*)NULL)) on <var_param:nullable MParameter> */
6509 var_other = ((val*)NULL);
6510 {
6511 { /* Inline kernel$Object$is_same_instance (var_param,var_other) on <var_param:nullable MParameter(MParameter)> */
6512 var231 = var_param == var_other;
6513 var229 = var231;
6514 goto RET_LABEL230;
6515 RET_LABEL230:(void)0;
6516 }
6517 }
6518 var227 = var229;
6519 goto RET_LABEL228;
6520 RET_LABEL228:(void)0;
6521 }
6522 var226 = var227;
6523 }
6524 if (var226){
6525 {
6526 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
6527 var234 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
6528 if (unlikely(var234 == NULL)) {
6529 if(catchStack.cursor >= 0){
6530 longjmp(catchStack.envs[catchStack.cursor], 1);
6531 }
6532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6533 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
6534 fatal_exit(1);
6535 }
6536 var232 = var234;
6537 RET_LABEL233:(void)0;
6538 }
6539 }
6540 {
6541 { /* Inline parser_nodes$ANamedargExpr$n_id (var_e) on <var_e:AExpr(ANamedargExpr)> */
6542 var237 = var_e->attrs[COLOR_nitc__parser_nodes__ANamedargExpr___n_id].val; /* _n_id on <var_e:AExpr(ANamedargExpr)> */
6543 if (unlikely(var237 == NULL)) {
6544 if(catchStack.cursor >= 0){
6545 longjmp(catchStack.envs[catchStack.cursor], 1);
6546 }
6547 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
6548 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2722);
6549 fatal_exit(1);
6550 }
6551 var235 = var237;
6552 RET_LABEL236:(void)0;
6553 }
6554 }
6555 if (unlikely(varonce238==NULL)) {
6556 var239 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
6557 if (likely(varonce240!=NULL)) {
6558 var241 = varonce240;
6559 } else {
6560 var242 = "Error: no parameter `";
6561 var244 = (val*)(21l<<2|1);
6562 var245 = (val*)(21l<<2|1);
6563 var246 = (val*)((long)(0)<<2|3);
6564 var247 = (val*)((long)(0)<<2|3);
6565 var243 = core__flat___CString___to_s_unsafe(var242, var244, var245, var246, var247);
6566 var241 = var243;
6567 varonce240 = var241;
6568 }
6569 ((struct instance_core__NativeArray*)var239)->values[0]=var241;
6570 if (likely(varonce248!=NULL)) {
6571 var249 = varonce248;
6572 } else {
6573 var250 = "` for `";
6574 var252 = (val*)(7l<<2|1);
6575 var253 = (val*)(7l<<2|1);
6576 var254 = (val*)((long)(0)<<2|3);
6577 var255 = (val*)((long)(0)<<2|3);
6578 var251 = core__flat___CString___to_s_unsafe(var250, var252, var253, var254, var255);
6579 var249 = var251;
6580 varonce248 = var249;
6581 }
6582 ((struct instance_core__NativeArray*)var239)->values[2]=var249;
6583 if (likely(varonce256!=NULL)) {
6584 var257 = varonce256;
6585 } else {
6586 var258 = "`.";
6587 var260 = (val*)(2l<<2|1);
6588 var261 = (val*)(2l<<2|1);
6589 var262 = (val*)((long)(0)<<2|3);
6590 var263 = (val*)((long)(0)<<2|3);
6591 var259 = core__flat___CString___to_s_unsafe(var258, var260, var261, var262, var263);
6592 var257 = var259;
6593 varonce256 = var257;
6594 }
6595 ((struct instance_core__NativeArray*)var239)->values[5]=var257;
6596 } else {
6597 var239 = varonce238;
6598 varonce238 = NULL;
6599 }
6600 ((struct instance_core__NativeArray*)var239)->values[1]=var_name;
6601 {
6602 var264 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
6603 }
6604 ((struct instance_core__NativeArray*)var239)->values[3]=var264;
6605 {
6606 var265 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
6607 }
6608 ((struct instance_core__NativeArray*)var239)->values[4]=var265;
6609 {
6610 var266 = ((val*(*)(val* self))(var239->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var239); /* native_to_s on <var239:NativeArray[String]>*/
6611 }
6612 varonce238 = var239;
6613 {
6614 nitc___nitc__ModelBuilder___error(var232, var235, var266); /* Direct call modelbuilder_base$ModelBuilder$error on <var232:ModelBuilder>*/
6615 }
6616 var = ((val*)NULL);
6617 goto RET_LABEL;
6618 } else {
6619 }
6620 {
6621 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:MSignature> */
6622 var269 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
6623 if (unlikely(var269 == NULL)) {
6624 if(catchStack.cursor >= 0){
6625 longjmp(catchStack.envs[catchStack.cursor], 1);
6626 }
6627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6628 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
6629 fatal_exit(1);
6630 }
6631 var267 = var269;
6632 RET_LABEL268:(void)0;
6633 }
6634 }
6635 {
6636 var270 = core___core__AbstractArrayRead___core__abstract_collection__SequenceRead__index_of(var267, var_param);
6637 }
6638 var_idx = var270;
6639 {
6640 { /* Inline typing$SignatureMap$map (var_map) on <var_map:SignatureMap> */
6641 var273 = var_map->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <var_map:SignatureMap> */
6642 if (unlikely(var273 == NULL)) {
6643 if(catchStack.cursor >= 0){
6644 longjmp(catchStack.envs[catchStack.cursor], 1);
6645 }
6646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
6647 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
6648 fatal_exit(1);
6649 }
6650 var271 = var273;
6651 RET_LABEL272:(void)0;
6652 }
6653 }
6654 {
6655 var275 = (val*)(var_idx<<2|1);
6656 var274 = core___core__MapRead___get_or_null(var271, var275);
6657 }
6658 var_prev = var274;
6659 if (var_prev == NULL) {
6660 var276 = 0; /* is null */
6661 } else {
6662 var276 = 1; /* arg is null and recv is not */
6663 }
6664 if (0) {
6665 { /* Inline kernel$Int$!= (var_prev,((val*)NULL)) on <var_prev:nullable Int> */
6666 var279 = 0; /* incompatible types Int vs. null; cannot be NULL */
6667 var280 = !var279;
6668 var277 = var280;
6669 goto RET_LABEL278;
6670 RET_LABEL278:(void)0;
6671 }
6672 var276 = var277;
6673 }
6674 if (var276){
6675 {
6676 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
6677 var283 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
6678 if (unlikely(var283 == NULL)) {
6679 if(catchStack.cursor >= 0){
6680 longjmp(catchStack.envs[catchStack.cursor], 1);
6681 }
6682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6683 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
6684 fatal_exit(1);
6685 }
6686 var281 = var283;
6687 RET_LABEL282:(void)0;
6688 }
6689 }
6690 if (unlikely(varonce284==NULL)) {
6691 var285 = NEW_core__NativeArray((int)8l, &type_core__NativeArray__core__String);
6692 if (likely(varonce286!=NULL)) {
6693 var287 = varonce286;
6694 } else {
6695 var288 = "Error: parameter `";
6696 var290 = (val*)(18l<<2|1);
6697 var291 = (val*)(18l<<2|1);
6698 var292 = (val*)((long)(0)<<2|3);
6699 var293 = (val*)((long)(0)<<2|3);
6700 var289 = core__flat___CString___to_s_unsafe(var288, var290, var291, var292, var293);
6701 var287 = var289;
6702 varonce286 = var287;
6703 }
6704 ((struct instance_core__NativeArray*)var285)->values[0]=var287;
6705 if (likely(varonce294!=NULL)) {
6706 var295 = varonce294;
6707 } else {
6708 var296 = "` already associated with argument #";
6709 var298 = (val*)(36l<<2|1);
6710 var299 = (val*)(36l<<2|1);
6711 var300 = (val*)((long)(0)<<2|3);
6712 var301 = (val*)((long)(0)<<2|3);
6713 var297 = core__flat___CString___to_s_unsafe(var296, var298, var299, var300, var301);
6714 var295 = var297;
6715 varonce294 = var295;
6716 }
6717 ((struct instance_core__NativeArray*)var285)->values[2]=var295;
6718 if (likely(varonce302!=NULL)) {
6719 var303 = varonce302;
6720 } else {
6721 var304 = " for `";
6722 var306 = (val*)(6l<<2|1);
6723 var307 = (val*)(6l<<2|1);
6724 var308 = (val*)((long)(0)<<2|3);
6725 var309 = (val*)((long)(0)<<2|3);
6726 var305 = core__flat___CString___to_s_unsafe(var304, var306, var307, var308, var309);
6727 var303 = var305;
6728 varonce302 = var303;
6729 }
6730 ((struct instance_core__NativeArray*)var285)->values[4]=var303;
6731 if (likely(varonce310!=NULL)) {
6732 var311 = varonce310;
6733 } else {
6734 var312 = "`.";
6735 var314 = (val*)(2l<<2|1);
6736 var315 = (val*)(2l<<2|1);
6737 var316 = (val*)((long)(0)<<2|3);
6738 var317 = (val*)((long)(0)<<2|3);
6739 var313 = core__flat___CString___to_s_unsafe(var312, var314, var315, var316, var317);
6740 var311 = var313;
6741 varonce310 = var311;
6742 }
6743 ((struct instance_core__NativeArray*)var285)->values[7]=var311;
6744 } else {
6745 var285 = varonce284;
6746 varonce284 = NULL;
6747 }
6748 ((struct instance_core__NativeArray*)var285)->values[1]=var_name;
6749 var319 = (long)(var_prev)>>2;
6750 var318 = core__flat___Int___core__abstract_text__Object__to_s(var319);
6751 ((struct instance_core__NativeArray*)var285)->values[3]=var318;
6752 {
6753 var320 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
6754 }
6755 ((struct instance_core__NativeArray*)var285)->values[5]=var320;
6756 {
6757 var321 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
6758 }
6759 ((struct instance_core__NativeArray*)var285)->values[6]=var321;
6760 {
6761 var322 = ((val*(*)(val* self))(var285->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var285); /* native_to_s on <var285:NativeArray[String]>*/
6762 }
6763 varonce284 = var285;
6764 {
6765 nitc___nitc__ModelBuilder___error(var281, var_e, var322); /* Direct call modelbuilder_base$ModelBuilder$error on <var281:ModelBuilder>*/
6766 }
6767 var = ((val*)NULL);
6768 goto RET_LABEL;
6769 } else {
6770 }
6771 {
6772 { /* Inline typing$SignatureMap$map (var_map) on <var_map:SignatureMap> */
6773 var325 = var_map->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <var_map:SignatureMap> */
6774 if (unlikely(var325 == NULL)) {
6775 if(catchStack.cursor >= 0){
6776 longjmp(catchStack.envs[catchStack.cursor], 1);
6777 }
6778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
6779 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
6780 fatal_exit(1);
6781 }
6782 var323 = var325;
6783 RET_LABEL324:(void)0;
6784 }
6785 }
6786 {
6787 var326 = (val*)(var_idx<<2|1);
6788 var327 = (val*)(var_i<<2|1);
6789 core___core__ArrayMap___core__abstract_collection__Map___91d_93d_61d(var323, var326, var327); /* Direct call array$ArrayMap$[]= on <var323:ArrayMap[Int, Int]>*/
6790 }
6791 {
6792 { /* Inline parser_nodes$ANamedargExpr$n_expr (var_e) on <var_e:AExpr(ANamedargExpr)> */
6793 var330 = var_e->attrs[COLOR_nitc__parser_nodes__ANamedargExpr___n_expr].val; /* _n_expr on <var_e:AExpr(ANamedargExpr)> */
6794 if (unlikely(var330 == NULL)) {
6795 if(catchStack.cursor >= 0){
6796 longjmp(catchStack.envs[catchStack.cursor], 1);
6797 }
6798 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
6799 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2728);
6800 fatal_exit(1);
6801 }
6802 var328 = var330;
6803 RET_LABEL329:(void)0;
6804 }
6805 }
6806 {
6807 { /* Inline model$MParameter$mtype (var_param) on <var_param:nullable MParameter(MParameter)> */
6808 var333 = var_param->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_param:nullable MParameter(MParameter)> */
6809 if (unlikely(var333 == NULL)) {
6810 if(catchStack.cursor >= 0){
6811 longjmp(catchStack.envs[catchStack.cursor], 1);
6812 }
6813 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6814 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
6815 fatal_exit(1);
6816 }
6817 var331 = var333;
6818 RET_LABEL332:(void)0;
6819 }
6820 }
6821 {
6822 var334 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var328, var331);
6823 }
6824 {
6825 { /* Inline typing$AExpr$mtype= (var_e,var334) on <var_e:AExpr(ANamedargExpr)> */
6826 var_e->attrs[COLOR_nitc__typing__AExpr___mtype].val = var334; /* _mtype on <var_e:AExpr(ANamedargExpr)> */
6827 RET_LABEL335:(void)0;
6828 }
6829 }
6830 BREAK_label220: (void)0;
6831 {
6832 var336 = core___core__Int___Discrete__successor(var_i, 1l);
6833 }
6834 var_i = var336;
6835 }
6836 BREAK_label: (void)0;
6837 var_min_arity = 0l;
6838 {
6839 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
6840 var339 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
6841 var337 = var339;
6842 RET_LABEL338:(void)0;
6843 }
6844 }
6845 {
6846 var340 = nitc___nitc__MSignature___arity(var_msignature);
6847 }
6848 {
6849 { /* Inline kernel$Int$- (var337,var340) on <var337:Int> */
6850 /* Covariant cast for argument 0 (i) <var340:Int> isa OTHER */
6851 /* <var340:Int> isa OTHER */
6852 var343 = 1; /* easy <var340:Int> isa OTHER*/
6853 if (unlikely(!var343)) {
6854 var_class_name346 = type_core__Int.name;
6855 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name346);
6856 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
6857 fatal_exit(1);
6858 }
6859 var347 = var337 - var340;
6860 var341 = var347;
6861 goto RET_LABEL342;
6862 RET_LABEL342:(void)0;
6863 }
6864 }
6865 var_vararg_decl = var341;
6866 var_j = 0l;
6867 var_i348 = 0l;
6868 {
6869 var349 = nitc___nitc__MSignature___arity(var_msignature);
6870 }
6871 var_350 = var349;
6872 for(;;) {
6873 {
6874 { /* Inline kernel$Int$< (var_i348,var_350) on <var_i348:Int> */
6875 /* Covariant cast for argument 0 (i) <var_350:Int> isa OTHER */
6876 /* <var_350:Int> isa OTHER */
6877 var353 = 1; /* easy <var_350:Int> isa OTHER*/
6878 if (unlikely(!var353)) {
6879 var_class_name356 = type_core__Int.name;
6880 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name356);
6881 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
6882 fatal_exit(1);
6883 }
6884 var357 = var_i348 < var_350;
6885 var351 = var357;
6886 goto RET_LABEL352;
6887 RET_LABEL352:(void)0;
6888 }
6889 }
6890 if (var351){
6891 } else {
6892 goto BREAK_label358;
6893 }
6894 {
6895 { /* Inline typing$SignatureMap$map (var_map) on <var_map:SignatureMap> */
6896 var361 = var_map->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <var_map:SignatureMap> */
6897 if (unlikely(var361 == NULL)) {
6898 if(catchStack.cursor >= 0){
6899 longjmp(catchStack.envs[catchStack.cursor], 1);
6900 }
6901 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
6902 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
6903 fatal_exit(1);
6904 }
6905 var359 = var361;
6906 RET_LABEL360:(void)0;
6907 }
6908 }
6909 {
6910 var363 = (val*)(var_i348<<2|1);
6911 var362 = core___core__CoupleMap___MapRead__has_key(var359, var363);
6912 }
6913 if (var362){
6914 goto BREAK_label364;
6915 } else {
6916 }
6917 {
6918 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:MSignature> */
6919 var367 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
6920 if (unlikely(var367 == NULL)) {
6921 if(catchStack.cursor >= 0){
6922 longjmp(catchStack.envs[catchStack.cursor], 1);
6923 }
6924 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
6925 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
6926 fatal_exit(1);
6927 }
6928 var365 = var367;
6929 RET_LABEL366:(void)0;
6930 }
6931 }
6932 {
6933 var368 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var365, var_i348);
6934 }
6935 var_param369 = var368;
6936 for(;;) {
6937 {
6938 { /* Inline kernel$Int$< (var_j,var_nbargs) on <var_j:Int> */
6939 /* Covariant cast for argument 0 (i) <var_nbargs:Int> isa OTHER */
6940 /* <var_nbargs:Int> isa OTHER */
6941 var373 = 1; /* easy <var_nbargs:Int> isa OTHER*/
6942 if (unlikely(!var373)) {
6943 var_class_name376 = type_core__Int.name;
6944 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name376);
6945 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
6946 fatal_exit(1);
6947 }
6948 var377 = var_j < var_nbargs;
6949 var371 = var377;
6950 goto RET_LABEL372;
6951 RET_LABEL372:(void)0;
6952 }
6953 }
6954 var_378 = var371;
6955 if (var371){
6956 {
6957 var379 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_args, var_j);
6958 }
6959 /* <var379:nullable Object(AExpr)> isa ANamedargExpr */
6960 cltype381 = type_nitc__ANamedargExpr.color;
6961 idtype382 = type_nitc__ANamedargExpr.id;
6962 if(cltype381 >= var379->type->table_size) {
6963 var380 = 0;
6964 } else {
6965 var380 = var379->type->type_table[cltype381] == idtype382;
6966 }
6967 var370 = var380;
6968 } else {
6969 var370 = var_378;
6970 }
6971 if (var370){
6972 {
6973 { /* Inline kernel$Int$+ (var_j,1l) on <var_j:Int> */
6974 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6975 /* <1l:Int> isa OTHER */
6976 var385 = 1; /* easy <1l:Int> isa OTHER*/
6977 if (unlikely(!var385)) {
6978 var_class_name388 = type_core__Int.name;
6979 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name388);
6980 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
6981 fatal_exit(1);
6982 }
6983 var389 = var_j + 1l;
6984 var383 = var389;
6985 goto RET_LABEL384;
6986 RET_LABEL384:(void)0;
6987 }
6988 }
6989 var_j = var383;
6990 } else {
6991 goto BREAK_label390;
6992 }
6993 }
6994 BREAK_label390: (void)0;
6995 {
6996 { /* Inline kernel$Int$>= (var_j,var_nbargs) on <var_j:Int> */
6997 /* Covariant cast for argument 0 (i) <var_nbargs:Int> isa OTHER */
6998 /* <var_nbargs:Int> isa OTHER */
6999 var393 = 1; /* easy <var_nbargs:Int> isa OTHER*/
7000 if (unlikely(!var393)) {
7001 var_class_name396 = type_core__Int.name;
7002 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name396);
7003 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
7004 fatal_exit(1);
7005 }
7006 var397 = var_j >= var_nbargs;
7007 var391 = var397;
7008 goto RET_LABEL392;
7009 RET_LABEL392:(void)0;
7010 }
7011 }
7012 if (var391){
7013 {
7014 { /* Inline model$MParameter$mtype (var_param369) on <var_param369:MParameter> */
7015 var400 = var_param369->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_param369:MParameter> */
7016 if (unlikely(var400 == NULL)) {
7017 if(catchStack.cursor >= 0){
7018 longjmp(catchStack.envs[catchStack.cursor], 1);
7019 }
7020 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7021 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
7022 fatal_exit(1);
7023 }
7024 var398 = var400;
7025 RET_LABEL399:(void)0;
7026 }
7027 }
7028 /* <var398:MType> isa MNullableType */
7029 cltype402 = type_nitc__MNullableType.color;
7030 idtype403 = type_nitc__MNullableType.id;
7031 if(cltype402 >= var398->type->table_size) {
7032 var401 = 0;
7033 } else {
7034 var401 = var398->type->type_table[cltype402] == idtype403;
7035 }
7036 var404 = !var401;
7037 if (var404){
7038 {
7039 { /* Inline kernel$Int$+ (var_j,1l) on <var_j:Int> */
7040 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7041 /* <1l:Int> isa OTHER */
7042 var407 = 1; /* easy <1l:Int> isa OTHER*/
7043 if (unlikely(!var407)) {
7044 var_class_name410 = type_core__Int.name;
7045 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name410);
7046 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7047 fatal_exit(1);
7048 }
7049 var411 = var_j + 1l;
7050 var405 = var411;
7051 goto RET_LABEL406;
7052 RET_LABEL406:(void)0;
7053 }
7054 }
7055 var_min_arity = var405;
7056 } else {
7057 }
7058 {
7059 { /* Inline kernel$Int$+ (var_j,1l) on <var_j:Int> */
7060 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7061 /* <1l:Int> isa OTHER */
7062 var414 = 1; /* easy <1l:Int> isa OTHER*/
7063 if (unlikely(!var414)) {
7064 var_class_name417 = type_core__Int.name;
7065 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name417);
7066 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7067 fatal_exit(1);
7068 }
7069 var418 = var_j + 1l;
7070 var412 = var418;
7071 goto RET_LABEL413;
7072 RET_LABEL413:(void)0;
7073 }
7074 }
7075 var_j = var412;
7076 goto BREAK_label364;
7077 } else {
7078 }
7079 {
7080 var419 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_args, var_j);
7081 }
7082 var_arg = var419;
7083 {
7084 { /* Inline typing$SignatureMap$map (var_map) on <var_map:SignatureMap> */
7085 var422 = var_map->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <var_map:SignatureMap> */
7086 if (unlikely(var422 == NULL)) {
7087 if(catchStack.cursor >= 0){
7088 longjmp(catchStack.envs[catchStack.cursor], 1);
7089 }
7090 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
7091 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
7092 fatal_exit(1);
7093 }
7094 var420 = var422;
7095 RET_LABEL421:(void)0;
7096 }
7097 }
7098 {
7099 var423 = (val*)(var_i348<<2|1);
7100 var424 = (val*)(var_j<<2|1);
7101 core___core__ArrayMap___core__abstract_collection__Map___91d_93d_61d(var420, var423, var424); /* Direct call array$ArrayMap$[]= on <var420:ArrayMap[Int, Int]>*/
7102 }
7103 {
7104 { /* Inline kernel$Int$+ (var_j,1l) on <var_j:Int> */
7105 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7106 /* <1l:Int> isa OTHER */
7107 var427 = 1; /* easy <1l:Int> isa OTHER*/
7108 if (unlikely(!var427)) {
7109 var_class_name430 = type_core__Int.name;
7110 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name430);
7111 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7112 fatal_exit(1);
7113 }
7114 var431 = var_j + 1l;
7115 var425 = var431;
7116 goto RET_LABEL426;
7117 RET_LABEL426:(void)0;
7118 }
7119 }
7120 var_j = var425;
7121 {
7122 { /* Inline kernel$Int$== (var_i348,var_vararg_rank) on <var_i348:Int> */
7123 var434 = var_i348 == var_vararg_rank;
7124 var432 = var434;
7125 goto RET_LABEL433;
7126 RET_LABEL433:(void)0;
7127 }
7128 }
7129 if (var432){
7130 {
7131 { /* Inline kernel$Int$+ (var_j,var_vararg_decl) on <var_j:Int> */
7132 /* Covariant cast for argument 0 (i) <var_vararg_decl:Int> isa OTHER */
7133 /* <var_vararg_decl:Int> isa OTHER */
7134 var437 = 1; /* easy <var_vararg_decl:Int> isa OTHER*/
7135 if (unlikely(!var437)) {
7136 var_class_name440 = type_core__Int.name;
7137 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name440);
7138 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7139 fatal_exit(1);
7140 }
7141 var441 = var_j + var_vararg_decl;
7142 var435 = var441;
7143 goto RET_LABEL436;
7144 RET_LABEL436:(void)0;
7145 }
7146 }
7147 var_j = var435;
7148 goto BREAK_label364;
7149 } else {
7150 }
7151 {
7152 { /* Inline model$MParameter$is_vararg (var_param369) on <var_param369:MParameter> */
7153 var444 = var_param369->attrs[COLOR_nitc__model__MParameter___is_vararg].s; /* _is_vararg on <var_param369:MParameter> */
7154 var442 = var444;
7155 RET_LABEL443:(void)0;
7156 }
7157 }
7158 var445 = !var442;
7159 if (var445){
7160 {
7161 { /* Inline model$MParameter$mtype (var_param369) on <var_param369:MParameter> */
7162 var448 = var_param369->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_param369:MParameter> */
7163 if (unlikely(var448 == NULL)) {
7164 if(catchStack.cursor >= 0){
7165 longjmp(catchStack.envs[catchStack.cursor], 1);
7166 }
7167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7168 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
7169 fatal_exit(1);
7170 }
7171 var446 = var448;
7172 RET_LABEL447:(void)0;
7173 }
7174 }
7175 var_paramtype = var446;
7176 {
7177 var449 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var_arg, var_paramtype);
7178 }
7179 } else {
7180 {
7181 var450 = nitc__typing___nitc__typing__TypeVisitor___check_one_vararg(self, var_arg, var_param369);
7182 }
7183 }
7184 BREAK_label364: (void)0;
7185 {
7186 var451 = core___core__Int___Discrete__successor(var_i348, 1l);
7187 }
7188 var_i348 = var451;
7189 }
7190 BREAK_label358: (void)0;
7191 {
7192 { /* Inline kernel$Int$> (var_min_arity,0l) on <var_min_arity:Int> */
7193 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
7194 /* <0l:Int> isa OTHER */
7195 var454 = 1; /* easy <0l:Int> isa OTHER*/
7196 if (unlikely(!var454)) {
7197 var_class_name457 = type_core__Int.name;
7198 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name457);
7199 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
7200 fatal_exit(1);
7201 }
7202 var458 = var_min_arity > 0l;
7203 var452 = var458;
7204 goto RET_LABEL453;
7205 RET_LABEL453:(void)0;
7206 }
7207 }
7208 if (var452){
7209 if (var_last_is_padded){
7210 {
7211 { /* Inline kernel$Int$+ (var_min_arity,1l) on <var_min_arity:Int> */
7212 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7213 /* <1l:Int> isa OTHER */
7214 var461 = 1; /* easy <1l:Int> isa OTHER*/
7215 if (unlikely(!var461)) {
7216 var_class_name464 = type_core__Int.name;
7217 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name464);
7218 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7219 fatal_exit(1);
7220 }
7221 var465 = var_min_arity + 1l;
7222 var459 = var465;
7223 goto RET_LABEL460;
7224 RET_LABEL460:(void)0;
7225 }
7226 }
7227 var_min_arity = var459;
7228 } else {
7229 }
7230 {
7231 var466 = nitc___nitc__MSignature___arity(var_msignature);
7232 }
7233 {
7234 { /* Inline kernel$Int$< (var_min_arity,var466) on <var_min_arity:Int> */
7235 /* Covariant cast for argument 0 (i) <var466:Int> isa OTHER */
7236 /* <var466:Int> isa OTHER */
7237 var469 = 1; /* easy <var466:Int> isa OTHER*/
7238 if (unlikely(!var469)) {
7239 var_class_name472 = type_core__Int.name;
7240 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name472);
7241 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
7242 fatal_exit(1);
7243 }
7244 var473 = var_min_arity < var466;
7245 var467 = var473;
7246 goto RET_LABEL468;
7247 RET_LABEL468:(void)0;
7248 }
7249 }
7250 if (var467){
7251 {
7252 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
7253 var476 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
7254 if (unlikely(var476 == NULL)) {
7255 if(catchStack.cursor >= 0){
7256 longjmp(catchStack.envs[catchStack.cursor], 1);
7257 }
7258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7259 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
7260 fatal_exit(1);
7261 }
7262 var474 = var476;
7263 RET_LABEL475:(void)0;
7264 }
7265 }
7266 if (unlikely(varonce477==NULL)) {
7267 var478 = NEW_core__NativeArray((int)10l, &type_core__NativeArray__core__String);
7268 if (likely(varonce479!=NULL)) {
7269 var480 = varonce479;
7270 } else {
7271 var481 = "Error: expected at least ";
7272 var483 = (val*)(25l<<2|1);
7273 var484 = (val*)(25l<<2|1);
7274 var485 = (val*)((long)(0)<<2|3);
7275 var486 = (val*)((long)(0)<<2|3);
7276 var482 = core__flat___CString___to_s_unsafe(var481, var483, var484, var485, var486);
7277 var480 = var482;
7278 varonce479 = var480;
7279 }
7280 ((struct instance_core__NativeArray*)var478)->values[0]=var480;
7281 if (likely(varonce487!=NULL)) {
7282 var488 = varonce487;
7283 } else {
7284 var489 = " argument(s) for `";
7285 var491 = (val*)(18l<<2|1);
7286 var492 = (val*)(18l<<2|1);
7287 var493 = (val*)((long)(0)<<2|3);
7288 var494 = (val*)((long)(0)<<2|3);
7289 var490 = core__flat___CString___to_s_unsafe(var489, var491, var492, var493, var494);
7290 var488 = var490;
7291 varonce487 = var488;
7292 }
7293 ((struct instance_core__NativeArray*)var478)->values[2]=var488;
7294 if (likely(varonce495!=NULL)) {
7295 var496 = varonce495;
7296 } else {
7297 var497 = "`; got ";
7298 var499 = (val*)(7l<<2|1);
7299 var500 = (val*)(7l<<2|1);
7300 var501 = (val*)((long)(0)<<2|3);
7301 var502 = (val*)((long)(0)<<2|3);
7302 var498 = core__flat___CString___to_s_unsafe(var497, var499, var500, var501, var502);
7303 var496 = var498;
7304 varonce495 = var496;
7305 }
7306 ((struct instance_core__NativeArray*)var478)->values[5]=var496;
7307 if (likely(varonce503!=NULL)) {
7308 var504 = varonce503;
7309 } else {
7310 var505 = ". See introduction at `";
7311 var507 = (val*)(23l<<2|1);
7312 var508 = (val*)(23l<<2|1);
7313 var509 = (val*)((long)(0)<<2|3);
7314 var510 = (val*)((long)(0)<<2|3);
7315 var506 = core__flat___CString___to_s_unsafe(var505, var507, var508, var509, var510);
7316 var504 = var506;
7317 varonce503 = var504;
7318 }
7319 ((struct instance_core__NativeArray*)var478)->values[7]=var504;
7320 if (likely(varonce511!=NULL)) {
7321 var512 = varonce511;
7322 } else {
7323 var513 = "`.";
7324 var515 = (val*)(2l<<2|1);
7325 var516 = (val*)(2l<<2|1);
7326 var517 = (val*)((long)(0)<<2|3);
7327 var518 = (val*)((long)(0)<<2|3);
7328 var514 = core__flat___CString___to_s_unsafe(var513, var515, var516, var517, var518);
7329 var512 = var514;
7330 varonce511 = var512;
7331 }
7332 ((struct instance_core__NativeArray*)var478)->values[9]=var512;
7333 } else {
7334 var478 = varonce477;
7335 varonce477 = NULL;
7336 }
7337 var519 = core__flat___Int___core__abstract_text__Object__to_s(var_min_arity);
7338 ((struct instance_core__NativeArray*)var478)->values[1]=var519;
7339 {
7340 var520 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
7341 }
7342 ((struct instance_core__NativeArray*)var478)->values[3]=var520;
7343 {
7344 var521 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
7345 }
7346 ((struct instance_core__NativeArray*)var478)->values[4]=var521;
7347 {
7348 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
7349 var524 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
7350 var522 = var524;
7351 RET_LABEL523:(void)0;
7352 }
7353 }
7354 var525 = core__flat___Int___core__abstract_text__Object__to_s(var522);
7355 ((struct instance_core__NativeArray*)var478)->values[6]=var525;
7356 {
7357 var526 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_mproperty);
7358 }
7359 ((struct instance_core__NativeArray*)var478)->values[8]=var526;
7360 {
7361 var527 = ((val*(*)(val* self))(var478->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var478); /* native_to_s on <var478:NativeArray[String]>*/
7362 }
7363 varonce477 = var478;
7364 {
7365 nitc___nitc__ModelBuilder___error(var474, var_node, var527); /* Direct call modelbuilder_base$ModelBuilder$error on <var474:ModelBuilder>*/
7366 }
7367 } else {
7368 {
7369 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
7370 var530 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
7371 if (unlikely(var530 == NULL)) {
7372 if(catchStack.cursor >= 0){
7373 longjmp(catchStack.envs[catchStack.cursor], 1);
7374 }
7375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7376 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
7377 fatal_exit(1);
7378 }
7379 var528 = var530;
7380 RET_LABEL529:(void)0;
7381 }
7382 }
7383 if (unlikely(varonce531==NULL)) {
7384 var532 = NEW_core__NativeArray((int)10l, &type_core__NativeArray__core__String);
7385 if (likely(varonce533!=NULL)) {
7386 var534 = varonce533;
7387 } else {
7388 var535 = "Error: expected ";
7389 var537 = (val*)(16l<<2|1);
7390 var538 = (val*)(16l<<2|1);
7391 var539 = (val*)((long)(0)<<2|3);
7392 var540 = (val*)((long)(0)<<2|3);
7393 var536 = core__flat___CString___to_s_unsafe(var535, var537, var538, var539, var540);
7394 var534 = var536;
7395 varonce533 = var534;
7396 }
7397 ((struct instance_core__NativeArray*)var532)->values[0]=var534;
7398 if (likely(varonce541!=NULL)) {
7399 var542 = varonce541;
7400 } else {
7401 var543 = " argument(s) for `";
7402 var545 = (val*)(18l<<2|1);
7403 var546 = (val*)(18l<<2|1);
7404 var547 = (val*)((long)(0)<<2|3);
7405 var548 = (val*)((long)(0)<<2|3);
7406 var544 = core__flat___CString___to_s_unsafe(var543, var545, var546, var547, var548);
7407 var542 = var544;
7408 varonce541 = var542;
7409 }
7410 ((struct instance_core__NativeArray*)var532)->values[2]=var542;
7411 if (likely(varonce549!=NULL)) {
7412 var550 = varonce549;
7413 } else {
7414 var551 = "`; got ";
7415 var553 = (val*)(7l<<2|1);
7416 var554 = (val*)(7l<<2|1);
7417 var555 = (val*)((long)(0)<<2|3);
7418 var556 = (val*)((long)(0)<<2|3);
7419 var552 = core__flat___CString___to_s_unsafe(var551, var553, var554, var555, var556);
7420 var550 = var552;
7421 varonce549 = var550;
7422 }
7423 ((struct instance_core__NativeArray*)var532)->values[5]=var550;
7424 if (likely(varonce557!=NULL)) {
7425 var558 = varonce557;
7426 } else {
7427 var559 = ". See introduction at `";
7428 var561 = (val*)(23l<<2|1);
7429 var562 = (val*)(23l<<2|1);
7430 var563 = (val*)((long)(0)<<2|3);
7431 var564 = (val*)((long)(0)<<2|3);
7432 var560 = core__flat___CString___to_s_unsafe(var559, var561, var562, var563, var564);
7433 var558 = var560;
7434 varonce557 = var558;
7435 }
7436 ((struct instance_core__NativeArray*)var532)->values[7]=var558;
7437 if (likely(varonce565!=NULL)) {
7438 var566 = varonce565;
7439 } else {
7440 var567 = "`.";
7441 var569 = (val*)(2l<<2|1);
7442 var570 = (val*)(2l<<2|1);
7443 var571 = (val*)((long)(0)<<2|3);
7444 var572 = (val*)((long)(0)<<2|3);
7445 var568 = core__flat___CString___to_s_unsafe(var567, var569, var570, var571, var572);
7446 var566 = var568;
7447 varonce565 = var566;
7448 }
7449 ((struct instance_core__NativeArray*)var532)->values[9]=var566;
7450 } else {
7451 var532 = varonce531;
7452 varonce531 = NULL;
7453 }
7454 var573 = core__flat___Int___core__abstract_text__Object__to_s(var_min_arity);
7455 ((struct instance_core__NativeArray*)var532)->values[1]=var573;
7456 {
7457 var574 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
7458 }
7459 ((struct instance_core__NativeArray*)var532)->values[3]=var574;
7460 {
7461 var575 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
7462 }
7463 ((struct instance_core__NativeArray*)var532)->values[4]=var575;
7464 {
7465 { /* Inline array$AbstractArrayRead$length (var_args) on <var_args:Array[AExpr]> */
7466 var578 = var_args->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_args:Array[AExpr]> */
7467 var576 = var578;
7468 RET_LABEL577:(void)0;
7469 }
7470 }
7471 var579 = core__flat___Int___core__abstract_text__Object__to_s(var576);
7472 ((struct instance_core__NativeArray*)var532)->values[6]=var579;
7473 {
7474 var580 = nitc___nitc__MProperty___nitc__model_base__MEntity__full_name(var_mproperty);
7475 }
7476 ((struct instance_core__NativeArray*)var532)->values[8]=var580;
7477 {
7478 var581 = ((val*(*)(val* self))(var532->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var532); /* native_to_s on <var532:NativeArray[String]>*/
7479 }
7480 varonce531 = var532;
7481 {
7482 nitc___nitc__ModelBuilder___error(var528, var_node, var581); /* Direct call modelbuilder_base$ModelBuilder$error on <var528:ModelBuilder>*/
7483 }
7484 }
7485 var = ((val*)NULL);
7486 goto RET_LABEL;
7487 } else {
7488 }
7489 {
7490 { /* Inline kernel$Int$>= (var_vararg_rank,0l) on <var_vararg_rank:Int> */
7491 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
7492 /* <0l:Int> isa OTHER */
7493 var584 = 1; /* easy <0l:Int> isa OTHER*/
7494 if (unlikely(!var584)) {
7495 var_class_name587 = type_core__Int.name;
7496 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name587);
7497 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
7498 fatal_exit(1);
7499 }
7500 var588 = var_vararg_rank >= 0l;
7501 var582 = var588;
7502 goto RET_LABEL583;
7503 RET_LABEL583:(void)0;
7504 }
7505 }
7506 if (var582){
7507 {
7508 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:MSignature> */
7509 var591 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
7510 if (unlikely(var591 == NULL)) {
7511 if(catchStack.cursor >= 0){
7512 longjmp(catchStack.envs[catchStack.cursor], 1);
7513 }
7514 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
7515 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
7516 fatal_exit(1);
7517 }
7518 var589 = var591;
7519 RET_LABEL590:(void)0;
7520 }
7521 }
7522 {
7523 var592 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var589, var_vararg_rank);
7524 }
7525 {
7526 { /* Inline model$MParameter$mtype (var592) on <var592:nullable Object(MParameter)> */
7527 var595 = var592->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var592:nullable Object(MParameter)> */
7528 if (unlikely(var595 == NULL)) {
7529 if(catchStack.cursor >= 0){
7530 longjmp(catchStack.envs[catchStack.cursor], 1);
7531 }
7532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7533 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
7534 fatal_exit(1);
7535 }
7536 var593 = var595;
7537 RET_LABEL594:(void)0;
7538 }
7539 }
7540 var_paramtype596 = var593;
7541 {
7542 var597 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_args, var_vararg_rank);
7543 }
7544 var_first = var597;
7545 {
7546 { /* Inline kernel$Int$== (var_vararg_decl,0l) on <var_vararg_decl:Int> */
7547 var600 = var_vararg_decl == 0l;
7548 var598 = var600;
7549 goto RET_LABEL599;
7550 RET_LABEL599:(void)0;
7551 }
7552 }
7553 if (var598){
7554 {
7555 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:MSignature> */
7556 var603 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
7557 if (unlikely(var603 == NULL)) {
7558 if(catchStack.cursor >= 0){
7559 longjmp(catchStack.envs[catchStack.cursor], 1);
7560 }
7561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
7562 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
7563 fatal_exit(1);
7564 }
7565 var601 = var603;
7566 RET_LABEL602:(void)0;
7567 }
7568 }
7569 {
7570 var604 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var601, var_vararg_rank);
7571 }
7572 {
7573 var605 = nitc__typing___nitc__typing__TypeVisitor___check_one_vararg(self, var_first, var604);
7574 }
7575 var606 = !var605;
7576 if (var606){
7577 var = ((val*)NULL);
7578 goto RET_LABEL;
7579 } else {
7580 }
7581 } else {
7582 {
7583 { /* Inline kernel$Int$+ (var_vararg_decl,1l) on <var_vararg_decl:Int> */
7584 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7585 /* <1l:Int> isa OTHER */
7586 var609 = 1; /* easy <1l:Int> isa OTHER*/
7587 if (unlikely(!var609)) {
7588 var_class_name612 = type_core__Int.name;
7589 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name612);
7590 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7591 fatal_exit(1);
7592 }
7593 var613 = var_vararg_decl + 1l;
7594 var607 = var613;
7595 goto RET_LABEL608;
7596 RET_LABEL608:(void)0;
7597 }
7598 }
7599 {
7600 { /* Inline typing$AExpr$vararg_decl= (var_first,var607) on <var_first:AExpr> */
7601 var_first->attrs[COLOR_nitc__typing__AExpr___vararg_decl].l = var607; /* _vararg_decl on <var_first:AExpr> */
7602 RET_LABEL614:(void)0;
7603 }
7604 }
7605 var_i615 = var_vararg_rank;
7606 {
7607 { /* Inline kernel$Int$+ (var_vararg_rank,var_vararg_decl) on <var_vararg_rank:Int> */
7608 /* Covariant cast for argument 0 (i) <var_vararg_decl:Int> isa OTHER */
7609 /* <var_vararg_decl:Int> isa OTHER */
7610 var618 = 1; /* easy <var_vararg_decl:Int> isa OTHER*/
7611 if (unlikely(!var618)) {
7612 var_class_name621 = type_core__Int.name;
7613 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name621);
7614 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
7615 fatal_exit(1);
7616 }
7617 var622 = var_vararg_rank + var_vararg_decl;
7618 var616 = var622;
7619 goto RET_LABEL617;
7620 RET_LABEL617:(void)0;
7621 }
7622 }
7623 var_623 = var616;
7624 for(;;) {
7625 {
7626 { /* Inline kernel$Int$<= (var_i615,var_623) on <var_i615:Int> */
7627 /* Covariant cast for argument 0 (i) <var_623:Int> isa OTHER */
7628 /* <var_623:Int> isa OTHER */
7629 var626 = 1; /* easy <var_623:Int> isa OTHER*/
7630 if (unlikely(!var626)) {
7631 var_class_name629 = type_core__Int.name;
7632 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name629);
7633 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
7634 fatal_exit(1);
7635 }
7636 var630 = var_i615 <= var_623;
7637 var624 = var630;
7638 goto RET_LABEL625;
7639 RET_LABEL625:(void)0;
7640 }
7641 }
7642 if (var624){
7643 } else {
7644 goto BREAK_label631;
7645 }
7646 {
7647 var632 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_args, var_i615);
7648 }
7649 {
7650 var633 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var632, var_paramtype596);
7651 }
7652 {
7653 var634 = core___core__Int___Discrete__successor(var_i615, 1l);
7654 }
7655 var_i615 = var634;
7656 }
7657 BREAK_label631: (void)0;
7658 }
7659 } else {
7660 }
7661 var = var_map;
7662 goto RET_LABEL;
7663 RET_LABEL:;
7664 return var;
7665 }
7666 /* method typing$TypeVisitor$check_one_vararg for (self: TypeVisitor, AExpr, MParameter): Bool */
7667 short int nitc__typing___nitc__typing__TypeVisitor___check_one_vararg(val* self, val* p0, val* p1) {
7668 short int var /* : Bool */;
7669 val* var_arg /* var arg: AExpr */;
7670 val* var_param /* var param: MParameter */;
7671 val* var1 /* : MType */;
7672 val* var3 /* : MType */;
7673 val* var_paramtype /* var paramtype: MType */;
7674 static val* varonce;
7675 val* var4 /* : String */;
7676 char* var5 /* : CString */;
7677 val* var6 /* : String */;
7678 val* var7 /* : nullable Int */;
7679 val* var8 /* : nullable Int */;
7680 val* var9 /* : nullable Bool */;
7681 val* var10 /* : nullable Bool */;
7682 val* var11 /* : nullable MClass */;
7683 val* var_mclass /* var mclass: nullable MClass */;
7684 short int var12 /* : Bool */;
7685 short int var13 /* : Bool */;
7686 val* var_other /* var other: nullable Object */;
7687 short int var15 /* : Bool */;
7688 short int var17 /* : Bool */;
7689 val* var18 /* : Array[MType] */;
7690 val* var_ /* var : Array[MType] */;
7691 val* var19 /* : MClassType */;
7692 val* var_array_mtype /* var array_mtype: MClassType */;
7693 short int var20 /* : Bool */;
7694 int cltype;
7695 int idtype;
7696 val* var21 /* : AExpr */;
7697 val* var23 /* : AExpr */;
7698 val* var24 /* : nullable MType */;
7699 val* var25 /* : AExpr */;
7700 val* var27 /* : AExpr */;
7701 val* var28 /* : nullable MType */;
7702 val* var30 /* : nullable MType */;
7703 val* var_t /* var t: nullable MType */;
7704 short int var31 /* : Bool */;
7705 short int var32 /* : Bool */;
7706 short int var34 /* : Bool */;
7707 short int var36 /* : Bool */;
7708 short int var37 /* : Bool */;
7709 short int var38 /* : Bool */;
7710 short int var39 /* : Bool */;
7711 short int var_40 /* var : Bool */;
7712 short int var41 /* : Bool */;
7713 val* var43 /* : NativeArray[String] */;
7714 static val* varonce42;
7715 static val* varonce44;
7716 val* var45 /* : String */;
7717 char* var46 /* : CString */;
7718 val* var47 /* : String */;
7719 val* var48 /* : nullable Int */;
7720 val* var49 /* : nullable Int */;
7721 val* var50 /* : nullable Bool */;
7722 val* var51 /* : nullable Bool */;
7723 static val* varonce52;
7724 val* var53 /* : String */;
7725 char* var54 /* : CString */;
7726 val* var55 /* : String */;
7727 val* var56 /* : nullable Int */;
7728 val* var57 /* : nullable Int */;
7729 val* var58 /* : nullable Bool */;
7730 val* var59 /* : nullable Bool */;
7731 static val* varonce60;
7732 val* var61 /* : String */;
7733 char* var62 /* : CString */;
7734 val* var63 /* : String */;
7735 val* var64 /* : nullable Int */;
7736 val* var65 /* : nullable Int */;
7737 val* var66 /* : nullable Bool */;
7738 val* var67 /* : nullable Bool */;
7739 val* var68 /* : String */;
7740 val* var69 /* : String */;
7741 val* var70 /* : String */;
7742 val* var72 /* : nullable MType */;
7743 var_arg = p0;
7744 var_param = p1;
7745 {
7746 { /* Inline model$MParameter$mtype (var_param) on <var_param:MParameter> */
7747 var3 = var_param->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var_param:MParameter> */
7748 if (unlikely(var3 == NULL)) {
7749 if(catchStack.cursor >= 0){
7750 longjmp(catchStack.envs[catchStack.cursor], 1);
7751 }
7752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
7753 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
7754 fatal_exit(1);
7755 }
7756 var1 = var3;
7757 RET_LABEL2:(void)0;
7758 }
7759 }
7760 var_paramtype = var1;
7761 if (likely(varonce!=NULL)) {
7762 var4 = varonce;
7763 } else {
7764 var5 = "Array";
7765 var7 = (val*)(5l<<2|1);
7766 var8 = (val*)(5l<<2|1);
7767 var9 = (val*)((long)(0)<<2|3);
7768 var10 = (val*)((long)(0)<<2|3);
7769 var6 = core__flat___CString___to_s_unsafe(var5, var7, var8, var9, var10);
7770 var4 = var6;
7771 varonce = var4;
7772 }
7773 {
7774 var11 = nitc__typing___nitc__typing__TypeVisitor___get_mclass(self, var_arg, var4);
7775 }
7776 var_mclass = var11;
7777 if (var_mclass == NULL) {
7778 var12 = 1; /* is null */
7779 } else {
7780 var12 = 0; /* arg is null but recv is not */
7781 }
7782 if (0) {
7783 { /* Inline kernel$Object$== (var_mclass,((val*)NULL)) on <var_mclass:nullable MClass> */
7784 var_other = ((val*)NULL);
7785 {
7786 { /* Inline kernel$Object$is_same_instance (var_mclass,var_other) on <var_mclass:nullable MClass(MClass)> */
7787 var17 = var_mclass == var_other;
7788 var15 = var17;
7789 goto RET_LABEL16;
7790 RET_LABEL16:(void)0;
7791 }
7792 }
7793 var13 = var15;
7794 goto RET_LABEL14;
7795 RET_LABEL14:(void)0;
7796 }
7797 var12 = var13;
7798 }
7799 if (var12){
7800 var = 0;
7801 goto RET_LABEL;
7802 } else {
7803 }
7804 var18 = NEW_core__Array(&type_core__Array__nitc__MType);
7805 {
7806 core___core__Array___with_capacity(var18, 1l); /* Direct call array$Array$with_capacity on <var18:Array[MType]>*/
7807 }
7808 var_ = var18;
7809 {
7810 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var_paramtype); /* Direct call array$AbstractArray$push on <var_:Array[MType]>*/
7811 }
7812 {
7813 var19 = nitc___nitc__MClass___get_mtype(var_mclass, var_);
7814 }
7815 var_array_mtype = var19;
7816 /* <var_arg:AExpr> isa AVarargExpr */
7817 cltype = type_nitc__AVarargExpr.color;
7818 idtype = type_nitc__AVarargExpr.id;
7819 if(cltype >= var_arg->type->table_size) {
7820 var20 = 0;
7821 } else {
7822 var20 = var_arg->type->type_table[cltype] == idtype;
7823 }
7824 if (var20){
7825 {
7826 { /* Inline parser_nodes$AVarargExpr$n_expr (var_arg) on <var_arg:AExpr(AVarargExpr)> */
7827 var23 = var_arg->attrs[COLOR_nitc__parser_nodes__AVarargExpr___n_expr].val; /* _n_expr on <var_arg:AExpr(AVarargExpr)> */
7828 if (unlikely(var23 == NULL)) {
7829 if(catchStack.cursor >= 0){
7830 longjmp(catchStack.envs[catchStack.cursor], 1);
7831 }
7832 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7833 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2711);
7834 fatal_exit(1);
7835 }
7836 var21 = var23;
7837 RET_LABEL22:(void)0;
7838 }
7839 }
7840 {
7841 var24 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var21, var_array_mtype);
7842 }
7843 {
7844 { /* Inline parser_nodes$AVarargExpr$n_expr (var_arg) on <var_arg:AExpr(AVarargExpr)> */
7845 var27 = var_arg->attrs[COLOR_nitc__parser_nodes__AVarargExpr___n_expr].val; /* _n_expr on <var_arg:AExpr(AVarargExpr)> */
7846 if (unlikely(var27 == NULL)) {
7847 if(catchStack.cursor >= 0){
7848 longjmp(catchStack.envs[catchStack.cursor], 1);
7849 }
7850 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
7851 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2711);
7852 fatal_exit(1);
7853 }
7854 var25 = var27;
7855 RET_LABEL26:(void)0;
7856 }
7857 }
7858 {
7859 var28 = ((val*(*)(val* self))(var25->class->vft[COLOR_nitc__typing__AExpr__mtype]))(var25); /* mtype on <var25:AExpr>*/
7860 }
7861 {
7862 { /* Inline typing$AExpr$mtype= (var_arg,var28) on <var_arg:AExpr(AVarargExpr)> */
7863 var_arg->attrs[COLOR_nitc__typing__AExpr___mtype].val = var28; /* _mtype on <var_arg:AExpr(AVarargExpr)> */
7864 RET_LABEL29:(void)0;
7865 }
7866 }
7867 } else {
7868 {
7869 var30 = nitc__typing___nitc__typing__TypeVisitor___visit_expr(self, var_arg);
7870 }
7871 var_t = var30;
7872 if (var_t == NULL) {
7873 var31 = 1; /* is null */
7874 } else {
7875 var31 = 0; /* arg is null but recv is not */
7876 }
7877 if (0) {
7878 { /* Inline kernel$Object$== (var_t,((val*)NULL)) on <var_t:nullable MType> */
7879 var_other = ((val*)NULL);
7880 {
7881 { /* Inline kernel$Object$is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
7882 var36 = var_t == var_other;
7883 var34 = var36;
7884 goto RET_LABEL35;
7885 RET_LABEL35:(void)0;
7886 }
7887 }
7888 var32 = var34;
7889 goto RET_LABEL33;
7890 RET_LABEL33:(void)0;
7891 }
7892 var31 = var32;
7893 }
7894 if (var31){
7895 var = 0;
7896 goto RET_LABEL;
7897 } else {
7898 }
7899 {
7900 var38 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_t, var_paramtype);
7901 }
7902 var39 = !var38;
7903 var_40 = var39;
7904 if (var39){
7905 {
7906 var41 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_t, var_array_mtype);
7907 }
7908 var37 = var41;
7909 } else {
7910 var37 = var_40;
7911 }
7912 if (var37){
7913 if (unlikely(varonce42==NULL)) {
7914 var43 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
7915 if (likely(varonce44!=NULL)) {
7916 var45 = varonce44;
7917 } else {
7918 var46 = "Type Error: expected `";
7919 var48 = (val*)(22l<<2|1);
7920 var49 = (val*)(22l<<2|1);
7921 var50 = (val*)((long)(0)<<2|3);
7922 var51 = (val*)((long)(0)<<2|3);
7923 var47 = core__flat___CString___to_s_unsafe(var46, var48, var49, var50, var51);
7924 var45 = var47;
7925 varonce44 = var45;
7926 }
7927 ((struct instance_core__NativeArray*)var43)->values[0]=var45;
7928 if (likely(varonce52!=NULL)) {
7929 var53 = varonce52;
7930 } else {
7931 var54 = "`, got `";
7932 var56 = (val*)(8l<<2|1);
7933 var57 = (val*)(8l<<2|1);
7934 var58 = (val*)((long)(0)<<2|3);
7935 var59 = (val*)((long)(0)<<2|3);
7936 var55 = core__flat___CString___to_s_unsafe(var54, var56, var57, var58, var59);
7937 var53 = var55;
7938 varonce52 = var53;
7939 }
7940 ((struct instance_core__NativeArray*)var43)->values[2]=var53;
7941 if (likely(varonce60!=NULL)) {
7942 var61 = varonce60;
7943 } else {
7944 var62 = "`. Is an ellipsis `...` missing on the argument?";
7945 var64 = (val*)(48l<<2|1);
7946 var65 = (val*)(48l<<2|1);
7947 var66 = (val*)((long)(0)<<2|3);
7948 var67 = (val*)((long)(0)<<2|3);
7949 var63 = core__flat___CString___to_s_unsafe(var62, var64, var65, var66, var67);
7950 var61 = var63;
7951 varonce60 = var61;
7952 }
7953 ((struct instance_core__NativeArray*)var43)->values[4]=var61;
7954 } else {
7955 var43 = varonce42;
7956 varonce42 = NULL;
7957 }
7958 {
7959 var68 = ((val*(*)(val* self))(var_paramtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_paramtype); /* to_s on <var_paramtype:MType>*/
7960 }
7961 ((struct instance_core__NativeArray*)var43)->values[1]=var68;
7962 {
7963 var69 = ((val*(*)(val* self))(var_t->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_t); /* to_s on <var_t:nullable MType(MType)>*/
7964 }
7965 ((struct instance_core__NativeArray*)var43)->values[3]=var69;
7966 {
7967 var70 = ((val*(*)(val* self))(var43->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var43); /* native_to_s on <var43:NativeArray[String]>*/
7968 }
7969 varonce42 = var43;
7970 {
7971 nitc__typing___nitc__typing__TypeVisitor___error(self, var_arg, var70); /* Direct call typing$TypeVisitor$error on <self:TypeVisitor>*/
7972 }
7973 var = 0;
7974 goto RET_LABEL;
7975 } else {
7976 }
7977 {
7978 { /* Inline typing$AExpr$vararg_decl= (var_arg,1l) on <var_arg:AExpr> */
7979 var_arg->attrs[COLOR_nitc__typing__AExpr___vararg_decl].l = 1l; /* _vararg_decl on <var_arg:AExpr> */
7980 RET_LABEL71:(void)0;
7981 }
7982 }
7983 {
7984 var72 = nitc__typing___nitc__typing__TypeVisitor___visit_expr_subtype(self, var_arg, var_paramtype);
7985 }
7986 }
7987 var = 1;
7988 goto RET_LABEL;
7989 RET_LABEL:;
7990 return var;
7991 }
7992 /* method typing$TypeVisitor$error for (self: TypeVisitor, ANode, String) */
7993 void nitc__typing___nitc__typing__TypeVisitor___error(val* self, val* p0, val* p1) {
7994 val* var_node /* var node: ANode */;
7995 val* var_message /* var message: String */;
7996 val* var /* : ModelBuilder */;
7997 val* var2 /* : ModelBuilder */;
7998 var_node = p0;
7999 var_message = p1;
8000 {
8001 { /* Inline typing$TypeVisitor$modelbuilder (self) on <self:TypeVisitor> */
8002 var2 = self->attrs[COLOR_nitc__typing__TypeVisitor___modelbuilder].val; /* _modelbuilder on <self:TypeVisitor> */
8003 if (unlikely(var2 == NULL)) {
8004 if(catchStack.cursor >= 0){
8005 longjmp(catchStack.envs[catchStack.cursor], 1);
8006 }
8007 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8008 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 35);
8009 fatal_exit(1);
8010 }
8011 var = var2;
8012 RET_LABEL1:(void)0;
8013 }
8014 }
8015 {
8016 nitc___nitc__ModelBuilder___error(var, var_node, var_message); /* Direct call modelbuilder_base$ModelBuilder$error on <var:ModelBuilder>*/
8017 }
8018 RET_LABEL:;
8019 }
8020 /* method typing$TypeVisitor$get_variable for (self: TypeVisitor, AExpr, Variable): nullable MType */
8021 val* nitc__typing___nitc__typing__TypeVisitor___get_variable(val* self, val* p0, val* p1) {
8022 val* var /* : nullable MType */;
8023 val* var_node /* var node: AExpr */;
8024 val* var_variable /* var variable: Variable */;
8025 short int var1 /* : Bool */;
8026 short int var3 /* : Bool */;
8027 short int var4 /* : Bool */;
8028 val* var5 /* : nullable MType */;
8029 val* var7 /* : nullable MType */;
8030 val* var8 /* : nullable FlowContext */;
8031 val* var10 /* : nullable FlowContext */;
8032 val* var_flow /* var flow: nullable FlowContext */;
8033 short int var11 /* : Bool */;
8034 short int var12 /* : Bool */;
8035 val* var_other /* var other: nullable Object */;
8036 short int var14 /* : Bool */;
8037 short int var16 /* : Bool */;
8038 val* var17 /* : HashMap[Variable, nullable MType] */;
8039 val* var19 /* : HashMap[Variable, nullable MType] */;
8040 short int var20 /* : Bool */;
8041 val* var21 /* : HashMap[Variable, nullable MType] */;
8042 val* var23 /* : HashMap[Variable, nullable MType] */;
8043 val* var24 /* : nullable Object */;
8044 val* var25 /* : Array[nullable MType] */;
8045 val* var_mtypes /* var mtypes: Array[nullable MType] */;
8046 long var26 /* : Int */;
8047 long var28 /* : Int */;
8048 short int var29 /* : Bool */;
8049 short int var31 /* : Bool */;
8050 val* var32 /* : nullable MType */;
8051 val* var34 /* : nullable MType */;
8052 long var35 /* : Int */;
8053 long var37 /* : Int */;
8054 short int var38 /* : Bool */;
8055 short int var40 /* : Bool */;
8056 val* var41 /* : nullable Object */;
8057 val* var42 /* : nullable MType */;
8058 val* var_res /* var res: nullable MType */;
8059 short int var43 /* : Bool */;
8060 short int var44 /* : Bool */;
8061 short int var46 /* : Bool */;
8062 short int var48 /* : Bool */;
8063 val* var49 /* : nullable MType */;
8064 val* var51 /* : nullable MType */;
8065 var_node = p0;
8066 var_variable = p1;
8067 {
8068 { /* Inline typing$Variable$is_adapted (var_variable) on <var_variable:Variable> */
8069 var3 = var_variable->attrs[COLOR_nitc__typing__Variable___is_adapted].s; /* _is_adapted on <var_variable:Variable> */
8070 var1 = var3;
8071 RET_LABEL2:(void)0;
8072 }
8073 }
8074 var4 = !var1;
8075 if (var4){
8076 {
8077 { /* Inline typing$Variable$declared_type (var_variable) on <var_variable:Variable> */
8078 var7 = var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
8079 var5 = var7;
8080 RET_LABEL6:(void)0;
8081 }
8082 }
8083 var = var5;
8084 goto RET_LABEL;
8085 } else {
8086 }
8087 {
8088 { /* Inline flow$AExpr$after_flow_context (var_node) on <var_node:AExpr> */
8089 var10 = var_node->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
8090 var8 = var10;
8091 RET_LABEL9:(void)0;
8092 }
8093 }
8094 var_flow = var8;
8095 if (var_flow == NULL) {
8096 var11 = 1; /* is null */
8097 } else {
8098 var11 = 0; /* arg is null but recv is not */
8099 }
8100 if (0) {
8101 { /* Inline kernel$Object$== (var_flow,((val*)NULL)) on <var_flow:nullable FlowContext> */
8102 var_other = ((val*)NULL);
8103 {
8104 { /* Inline kernel$Object$is_same_instance (var_flow,var_other) on <var_flow:nullable FlowContext(FlowContext)> */
8105 var16 = var_flow == var_other;
8106 var14 = var16;
8107 goto RET_LABEL15;
8108 RET_LABEL15:(void)0;
8109 }
8110 }
8111 var12 = var14;
8112 goto RET_LABEL13;
8113 RET_LABEL13:(void)0;
8114 }
8115 var11 = var12;
8116 }
8117 if (var11){
8118 var = ((val*)NULL);
8119 goto RET_LABEL;
8120 } else {
8121 }
8122 {
8123 { /* Inline typing$FlowContext$vars (var_flow) on <var_flow:nullable FlowContext(FlowContext)> */
8124 var19 = var_flow->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <var_flow:nullable FlowContext(FlowContext)> */
8125 if (unlikely(var19 == NULL)) {
8126 if(catchStack.cursor >= 0){
8127 longjmp(catchStack.envs[catchStack.cursor], 1);
8128 }
8129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
8130 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
8131 fatal_exit(1);
8132 }
8133 var17 = var19;
8134 RET_LABEL18:(void)0;
8135 }
8136 }
8137 {
8138 var20 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var17, var_variable);
8139 }
8140 if (var20){
8141 {
8142 { /* Inline typing$FlowContext$vars (var_flow) on <var_flow:nullable FlowContext(FlowContext)> */
8143 var23 = var_flow->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <var_flow:nullable FlowContext(FlowContext)> */
8144 if (unlikely(var23 == NULL)) {
8145 if(catchStack.cursor >= 0){
8146 longjmp(catchStack.envs[catchStack.cursor], 1);
8147 }
8148 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
8149 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
8150 fatal_exit(1);
8151 }
8152 var21 = var23;
8153 RET_LABEL22:(void)0;
8154 }
8155 }
8156 {
8157 var24 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var21, var_variable);
8158 }
8159 var = var24;
8160 goto RET_LABEL;
8161 } else {
8162 {
8163 var25 = nitc__typing___FlowContext___collect_types(var_flow, var_variable);
8164 }
8165 var_mtypes = var25;
8166 {
8167 { /* Inline array$AbstractArrayRead$length (var_mtypes) on <var_mtypes:Array[nullable MType]> */
8168 var28 = var_mtypes->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_mtypes:Array[nullable MType]> */
8169 var26 = var28;
8170 RET_LABEL27:(void)0;
8171 }
8172 }
8173 {
8174 { /* Inline kernel$Int$== (var26,0l) on <var26:Int> */
8175 var31 = var26 == 0l;
8176 var29 = var31;
8177 goto RET_LABEL30;
8178 RET_LABEL30:(void)0;
8179 }
8180 }
8181 if (var29){
8182 {
8183 { /* Inline typing$Variable$declared_type (var_variable) on <var_variable:Variable> */
8184 var34 = var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
8185 var32 = var34;
8186 RET_LABEL33:(void)0;
8187 }
8188 }
8189 var = var32;
8190 goto RET_LABEL;
8191 } else {
8192 {
8193 { /* Inline array$AbstractArrayRead$length (var_mtypes) on <var_mtypes:Array[nullable MType]> */
8194 var37 = var_mtypes->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_mtypes:Array[nullable MType]> */
8195 var35 = var37;
8196 RET_LABEL36:(void)0;
8197 }
8198 }
8199 {
8200 { /* Inline kernel$Int$== (var35,1l) on <var35:Int> */
8201 var40 = var35 == 1l;
8202 var38 = var40;
8203 goto RET_LABEL39;
8204 RET_LABEL39:(void)0;
8205 }
8206 }
8207 if (var38){
8208 {
8209 var41 = core___core__SequenceRead___Collection__first(var_mtypes);
8210 }
8211 var = var41;
8212 goto RET_LABEL;
8213 } else {
8214 {
8215 var42 = nitc__typing___nitc__typing__TypeVisitor___merge_types(self, var_node, var_mtypes);
8216 }
8217 var_res = var42;
8218 if (var_res == NULL) {
8219 var43 = 1; /* is null */
8220 } else {
8221 var43 = 0; /* arg is null but recv is not */
8222 }
8223 if (0) {
8224 { /* Inline kernel$Object$== (var_res,((val*)NULL)) on <var_res:nullable MType> */
8225 var_other = ((val*)NULL);
8226 {
8227 { /* Inline kernel$Object$is_same_instance (var_res,var_other) on <var_res:nullable MType(MType)> */
8228 var48 = var_res == var_other;
8229 var46 = var48;
8230 goto RET_LABEL47;
8231 RET_LABEL47:(void)0;
8232 }
8233 }
8234 var44 = var46;
8235 goto RET_LABEL45;
8236 RET_LABEL45:(void)0;
8237 }
8238 var43 = var44;
8239 }
8240 if (var43){
8241 {
8242 { /* Inline typing$Variable$declared_type (var_variable) on <var_variable:Variable> */
8243 var51 = var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
8244 var49 = var51;
8245 RET_LABEL50:(void)0;
8246 }
8247 }
8248 var_res = var49;
8249 } else {
8250 }
8251 var = var_res;
8252 goto RET_LABEL;
8253 }
8254 }
8255 }
8256 RET_LABEL:;
8257 return var;
8258 }
8259 /* method typing$TypeVisitor$dirty for (self: TypeVisitor): Bool */
8260 short int nitc__typing___nitc__typing__TypeVisitor___dirty(val* self) {
8261 short int var /* : Bool */;
8262 short int var1 /* : Bool */;
8263 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___dirty].s; /* _dirty on <self:TypeVisitor> */
8264 var = var1;
8265 RET_LABEL:;
8266 return var;
8267 }
8268 /* method typing$TypeVisitor$dirty= for (self: TypeVisitor, Bool) */
8269 void nitc__typing___nitc__typing__TypeVisitor___dirty_61d(val* self, short int p0) {
8270 self->attrs[COLOR_nitc__typing__TypeVisitor___dirty].s = p0; /* _dirty on <self:TypeVisitor> */
8271 RET_LABEL:;
8272 }
8273 /* method typing$TypeVisitor$has_loop for (self: TypeVisitor): Bool */
8274 short int nitc__typing___nitc__typing__TypeVisitor___has_loop(val* self) {
8275 short int var /* : Bool */;
8276 short int var1 /* : Bool */;
8277 var1 = self->attrs[COLOR_nitc__typing__TypeVisitor___has_loop].s; /* _has_loop on <self:TypeVisitor> */
8278 var = var1;
8279 RET_LABEL:;
8280 return var;
8281 }
8282 /* method typing$TypeVisitor$has_loop= for (self: TypeVisitor, Bool) */
8283 void nitc__typing___nitc__typing__TypeVisitor___has_loop_61d(val* self, short int p0) {
8284 self->attrs[COLOR_nitc__typing__TypeVisitor___has_loop].s = p0; /* _has_loop on <self:TypeVisitor> */
8285 RET_LABEL:;
8286 }
8287 /* method typing$TypeVisitor$set_variable for (self: TypeVisitor, AExpr, Variable, nullable MType) */
8288 void nitc__typing___nitc__typing__TypeVisitor___set_variable(val* self, val* p0, val* p1, val* p2) {
8289 val* var_node /* var node: AExpr */;
8290 val* var_variable /* var variable: Variable */;
8291 val* var_mtype /* var mtype: nullable MType */;
8292 val* var /* : nullable FlowContext */;
8293 val* var2 /* : nullable FlowContext */;
8294 val* var_flow /* var flow: nullable FlowContext */;
8295 short int var3 /* : Bool */;
8296 short int var4 /* : Bool */;
8297 val* var_other /* var other: nullable Object */;
8298 short int var6 /* : Bool */;
8299 short int var7 /* : Bool */;
8300 var_node = p0;
8301 var_variable = p1;
8302 var_mtype = p2;
8303 {
8304 { /* Inline flow$AExpr$after_flow_context (var_node) on <var_node:AExpr> */
8305 var2 = var_node->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_node:AExpr> */
8306 var = var2;
8307 RET_LABEL1:(void)0;
8308 }
8309 }
8310 var_flow = var;
8311 if (var_flow == NULL) {
8312 var3 = 0; /* is null */
8313 } else {
8314 var3 = 1; /* arg is null and recv is not */
8315 }
8316 if (0) {
8317 { /* Inline kernel$Object$!= (var_flow,((val*)NULL)) on <var_flow:nullable FlowContext> */
8318 var_other = ((val*)NULL);
8319 {
8320 var6 = ((short int(*)(val* self, val* p0))(var_flow->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_flow, var_other); /* == on <var_flow:nullable FlowContext(FlowContext)>*/
8321 }
8322 var7 = !var6;
8323 var4 = var7;
8324 goto RET_LABEL5;
8325 RET_LABEL5:(void)0;
8326 }
8327 var3 = var4;
8328 }
8329 if (unlikely(!var3)) {
8330 if(catchStack.cursor >= 0){
8331 longjmp(catchStack.envs[catchStack.cursor], 1);
8332 }
8333 PRINT_ERROR("Runtime error: %s", "Assert failed");
8334 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 598);
8335 fatal_exit(1);
8336 }
8337 {
8338 nitc__typing___FlowContext___set_var(var_flow, self, var_variable, var_mtype); /* Direct call typing$FlowContext$set_var on <var_flow:nullable FlowContext(FlowContext)>*/
8339 }
8340 RET_LABEL:;
8341 }
8342 /* method typing$TypeVisitor$merge_types for (self: TypeVisitor, ANode, Array[nullable MType]): nullable MType */
8343 val* nitc__typing___nitc__typing__TypeVisitor___merge_types(val* self, val* p0, val* p1) {
8344 val* var /* : nullable MType */;
8345 val* var_node /* var node: ANode */;
8346 val* var_col /* var col: Array[nullable MType] */;
8347 long var1 /* : Int */;
8348 long var3 /* : Int */;
8349 short int var4 /* : Bool */;
8350 short int var6 /* : Bool */;
8351 val* var7 /* : nullable Object */;
8352 val* var_ /* var : Array[nullable MType] */;
8353 val* var8 /* : IndexedIterator[nullable Object] */;
8354 val* var_9 /* var : IndexedIterator[nullable MType] */;
8355 short int var10 /* : Bool */;
8356 val* var11 /* : nullable Object */;
8357 val* var_t1 /* var t1: nullable MType */;
8358 short int var12 /* : Bool */;
8359 short int var13 /* : Bool */;
8360 val* var_other /* var other: nullable Object */;
8361 short int var15 /* : Bool */;
8362 short int var17 /* : Bool */;
8363 short int var_found /* var found: Bool */;
8364 val* var_19 /* var : Array[nullable MType] */;
8365 val* var20 /* : IndexedIterator[nullable Object] */;
8366 val* var_21 /* var : IndexedIterator[nullable MType] */;
8367 short int var22 /* : Bool */;
8368 val* var24 /* : nullable Object */;
8369 val* var_t2 /* var t2: nullable MType */;
8370 short int var25 /* : Bool */;
8371 short int var26 /* : Bool */;
8372 short int var28 /* : Bool */;
8373 short int var30 /* : Bool */;
8374 short int var32 /* : Bool */;
8375 short int var33 /* : Bool */;
8376 short int var_34 /* var : Bool */;
8377 short int var35 /* : Bool */;
8378 short int var36 /* : Bool */;
8379 val* var37 /* : MType */;
8380 short int var38 /* : Bool */;
8381 short int var39 /* : Bool */;
8382 var_node = p0;
8383 var_col = p1;
8384 {
8385 { /* Inline array$AbstractArrayRead$length (var_col) on <var_col:Array[nullable MType]> */
8386 var3 = var_col->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_col:Array[nullable MType]> */
8387 var1 = var3;
8388 RET_LABEL2:(void)0;
8389 }
8390 }
8391 {
8392 { /* Inline kernel$Int$== (var1,1l) on <var1:Int> */
8393 var6 = var1 == 1l;
8394 var4 = var6;
8395 goto RET_LABEL5;
8396 RET_LABEL5:(void)0;
8397 }
8398 }
8399 if (var4){
8400 {
8401 var7 = core___core__SequenceRead___Collection__first(var_col);
8402 }
8403 var = var7;
8404 goto RET_LABEL;
8405 } else {
8406 }
8407 var_ = var_col;
8408 {
8409 var8 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
8410 }
8411 var_9 = var8;
8412 for(;;) {
8413 {
8414 var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:IndexedIterator[nullable MType]>*/
8415 }
8416 if (var10){
8417 } else {
8418 goto BREAK_label;
8419 }
8420 {
8421 var11 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:IndexedIterator[nullable MType]>*/
8422 }
8423 var_t1 = var11;
8424 if (var_t1 == NULL) {
8425 var12 = 1; /* is null */
8426 } else {
8427 var12 = 0; /* arg is null but recv is not */
8428 }
8429 if (0) {
8430 { /* Inline kernel$Object$== (var_t1,((val*)NULL)) on <var_t1:nullable MType> */
8431 var_other = ((val*)NULL);
8432 {
8433 { /* Inline kernel$Object$is_same_instance (var_t1,var_other) on <var_t1:nullable MType(MType)> */
8434 var17 = var_t1 == var_other;
8435 var15 = var17;
8436 goto RET_LABEL16;
8437 RET_LABEL16:(void)0;
8438 }
8439 }
8440 var13 = var15;
8441 goto RET_LABEL14;
8442 RET_LABEL14:(void)0;
8443 }
8444 var12 = var13;
8445 }
8446 if (var12){
8447 goto BREAK_label18;
8448 } else {
8449 }
8450 var_found = 1;
8451 var_19 = var_col;
8452 {
8453 var20 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_19);
8454 }
8455 var_21 = var20;
8456 for(;;) {
8457 {
8458 var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_21); /* is_ok on <var_21:IndexedIterator[nullable MType]>*/
8459 }
8460 if (var22){
8461 } else {
8462 goto BREAK_label23;
8463 }
8464 {
8465 var24 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_21); /* item on <var_21:IndexedIterator[nullable MType]>*/
8466 }
8467 var_t2 = var24;
8468 if (var_t2 == NULL) {
8469 var25 = 1; /* is null */
8470 } else {
8471 var25 = 0; /* arg is null but recv is not */
8472 }
8473 if (0) {
8474 { /* Inline kernel$Object$== (var_t2,((val*)NULL)) on <var_t2:nullable MType> */
8475 var_other = ((val*)NULL);
8476 {
8477 { /* Inline kernel$Object$is_same_instance (var_t2,var_other) on <var_t2:nullable MType(MType)> */
8478 var30 = var_t2 == var_other;
8479 var28 = var30;
8480 goto RET_LABEL29;
8481 RET_LABEL29:(void)0;
8482 }
8483 }
8484 var26 = var28;
8485 goto RET_LABEL27;
8486 RET_LABEL27:(void)0;
8487 }
8488 var25 = var26;
8489 }
8490 if (var25){
8491 goto BREAK_label31;
8492 } else {
8493 }
8494 {
8495 var33 = nitc__typing___nitc__typing__TypeVisitor___can_be_null(self, var_t2);
8496 }
8497 var_34 = var33;
8498 if (var33){
8499 {
8500 var35 = nitc__typing___nitc__typing__TypeVisitor___can_be_null(self, var_t1);
8501 }
8502 var36 = !var35;
8503 var32 = var36;
8504 } else {
8505 var32 = var_34;
8506 }
8507 if (var32){
8508 {
8509 var37 = ((val*(*)(val* self))(var_t1->class->vft[COLOR_nitc__model__MType__as_nullable]))(var_t1); /* as_nullable on <var_t1:nullable MType(MType)>*/
8510 }
8511 var_t1 = var37;
8512 } else {
8513 }
8514 {
8515 var38 = nitc__typing___nitc__typing__TypeVisitor___is_subtype(self, var_t2, var_t1);
8516 }
8517 var39 = !var38;
8518 if (var39){
8519 var_found = 0;
8520 } else {
8521 }
8522 BREAK_label31: (void)0;
8523 {
8524 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_21); /* next on <var_21:IndexedIterator[nullable MType]>*/
8525 }
8526 }
8527 BREAK_label23: (void)0;
8528 {
8529 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_21); /* finish on <var_21:IndexedIterator[nullable MType]>*/
8530 }
8531 if (var_found){
8532 var = var_t1;
8533 goto RET_LABEL;
8534 } else {
8535 }
8536 BREAK_label18: (void)0;
8537 {
8538 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:IndexedIterator[nullable MType]>*/
8539 }
8540 }
8541 BREAK_label: (void)0;
8542 {
8543 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:IndexedIterator[nullable MType]>*/
8544 }
8545 var = ((val*)NULL);
8546 goto RET_LABEL;
8547 RET_LABEL:;
8548 return var;
8549 }
8550 /* method typing$SignatureMap$map for (self: SignatureMap): ArrayMap[Int, Int] */
8551 val* nitc___nitc__SignatureMap___map(val* self) {
8552 val* var /* : ArrayMap[Int, Int] */;
8553 val* var1 /* : ArrayMap[Int, Int] */;
8554 var1 = self->attrs[COLOR_nitc__typing__SignatureMap___map].val; /* _map on <self:SignatureMap> */
8555 if (unlikely(var1 == NULL)) {
8556 if(catchStack.cursor >= 0){
8557 longjmp(catchStack.envs[catchStack.cursor], 1);
8558 }
8559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _map");
8560 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 632);
8561 fatal_exit(1);
8562 }
8563 var = var1;
8564 RET_LABEL:;
8565 return var;
8566 }
8567 /* method typing$CallSite$location for (self: CallSite): Location */
8568 val* nitc___nitc__CallSite___nitc__model_base__MEntity__location(val* self) {
8569 val* var /* : Location */;
8570 val* var1 /* : Location */;
8571 var1 = self->attrs[COLOR_nitc__typing__CallSite___location].val; /* _location on <self:CallSite> */
8572 if (unlikely(var1 == NULL)) {
8573 if(catchStack.cursor >= 0){
8574 longjmp(catchStack.envs[catchStack.cursor], 1);
8575 }
8576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
8577 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 640);
8578 fatal_exit(1);
8579 }
8580 var = var1;
8581 RET_LABEL:;
8582 return var;
8583 }
8584 /* method typing$CallSite$location= for (self: CallSite, Location) */
8585 void nitc___nitc__CallSite___location_61d(val* self, val* p0) {
8586 self->attrs[COLOR_nitc__typing__CallSite___location].val = p0; /* _location on <self:CallSite> */
8587 RET_LABEL:;
8588 }
8589 /* method typing$CallSite$recv for (self: CallSite): MType */
8590 val* nitc___nitc__CallSite___recv(val* self) {
8591 val* var /* : MType */;
8592 val* var1 /* : MType */;
8593 var1 = self->attrs[COLOR_nitc__typing__CallSite___recv].val; /* _recv on <self:CallSite> */
8594 if (unlikely(var1 == NULL)) {
8595 if(catchStack.cursor >= 0){
8596 longjmp(catchStack.envs[catchStack.cursor], 1);
8597 }
8598 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _recv");
8599 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 642);
8600 fatal_exit(1);
8601 }
8602 var = var1;
8603 RET_LABEL:;
8604 return var;
8605 }
8606 /* method typing$CallSite$recv= for (self: CallSite, MType) */
8607 void nitc___nitc__CallSite___recv_61d(val* self, val* p0) {
8608 self->attrs[COLOR_nitc__typing__CallSite___recv].val = p0; /* _recv on <self:CallSite> */
8609 RET_LABEL:;
8610 }
8611 /* method typing$CallSite$mmodule for (self: CallSite): MModule */
8612 val* nitc___nitc__CallSite___mmodule(val* self) {
8613 val* var /* : MModule */;
8614 val* var1 /* : MModule */;
8615 var1 = self->attrs[COLOR_nitc__typing__CallSite___mmodule].val; /* _mmodule on <self:CallSite> */
8616 if (unlikely(var1 == NULL)) {
8617 if(catchStack.cursor >= 0){
8618 longjmp(catchStack.envs[catchStack.cursor], 1);
8619 }
8620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8621 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 645);
8622 fatal_exit(1);
8623 }
8624 var = var1;
8625 RET_LABEL:;
8626 return var;
8627 }
8628 /* method typing$CallSite$mmodule= for (self: CallSite, MModule) */
8629 void nitc___nitc__CallSite___mmodule_61d(val* self, val* p0) {
8630 self->attrs[COLOR_nitc__typing__CallSite___mmodule].val = p0; /* _mmodule on <self:CallSite> */
8631 RET_LABEL:;
8632 }
8633 /* method typing$CallSite$anchor for (self: CallSite): nullable MClassType */
8634 val* nitc___nitc__CallSite___anchor(val* self) {
8635 val* var /* : nullable MClassType */;
8636 val* var1 /* : nullable MClassType */;
8637 var1 = self->attrs[COLOR_nitc__typing__CallSite___anchor].val; /* _anchor on <self:CallSite> */
8638 var = var1;
8639 RET_LABEL:;
8640 return var;
8641 }
8642 /* method typing$CallSite$anchor= for (self: CallSite, nullable MClassType) */
8643 void nitc___nitc__CallSite___anchor_61d(val* self, val* p0) {
8644 self->attrs[COLOR_nitc__typing__CallSite___anchor].val = p0; /* _anchor on <self:CallSite> */
8645 RET_LABEL:;
8646 }
8647 /* method typing$CallSite$recv_is_self= for (self: CallSite, Bool) */
8648 void nitc___nitc__CallSite___recv_is_self_61d(val* self, short int p0) {
8649 self->attrs[COLOR_nitc__typing__CallSite___recv_is_self].s = p0; /* _recv_is_self on <self:CallSite> */
8650 RET_LABEL:;
8651 }
8652 /* method typing$CallSite$mproperty for (self: CallSite): MMethod */
8653 val* nitc___nitc__CallSite___mproperty(val* self) {
8654 val* var /* : MMethod */;
8655 val* var1 /* : MMethod */;
8656 var1 = self->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
8657 if (unlikely(var1 == NULL)) {
8658 if(catchStack.cursor >= 0){
8659 longjmp(catchStack.envs[catchStack.cursor], 1);
8660 }
8661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8662 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 656);
8663 fatal_exit(1);
8664 }
8665 var = var1;
8666 RET_LABEL:;
8667 return var;
8668 }
8669 /* method typing$CallSite$mproperty= for (self: CallSite, MMethod) */
8670 void nitc___nitc__CallSite___mproperty_61d(val* self, val* p0) {
8671 self->attrs[COLOR_nitc__typing__CallSite___mproperty].val = p0; /* _mproperty on <self:CallSite> */
8672 RET_LABEL:;
8673 }
8674 /* method typing$CallSite$mpropdef for (self: CallSite): MMethodDef */
8675 val* nitc___nitc__CallSite___mpropdef(val* self) {
8676 val* var /* : MMethodDef */;
8677 val* var1 /* : MMethodDef */;
8678 var1 = self->attrs[COLOR_nitc__typing__CallSite___mpropdef].val; /* _mpropdef on <self:CallSite> */
8679 if (unlikely(var1 == NULL)) {
8680 if(catchStack.cursor >= 0){
8681 longjmp(catchStack.envs[catchStack.cursor], 1);
8682 }
8683 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
8684 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 659);
8685 fatal_exit(1);
8686 }
8687 var = var1;
8688 RET_LABEL:;
8689 return var;
8690 }
8691 /* method typing$CallSite$mpropdef= for (self: CallSite, MMethodDef) */
8692 void nitc___nitc__CallSite___mpropdef_61d(val* self, val* p0) {
8693 self->attrs[COLOR_nitc__typing__CallSite___mpropdef].val = p0; /* _mpropdef on <self:CallSite> */
8694 RET_LABEL:;
8695 }
8696 /* method typing$CallSite$msignature for (self: CallSite): MSignature */
8697 val* nitc___nitc__CallSite___msignature(val* self) {
8698 val* var /* : MSignature */;
8699 val* var1 /* : MSignature */;
8700 var1 = self->attrs[COLOR_nitc__typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
8701 if (unlikely(var1 == NULL)) {
8702 if(catchStack.cursor >= 0){
8703 longjmp(catchStack.envs[catchStack.cursor], 1);
8704 }
8705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
8706 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 663);
8707 fatal_exit(1);
8708 }
8709 var = var1;
8710 RET_LABEL:;
8711 return var;
8712 }
8713 /* method typing$CallSite$msignature= for (self: CallSite, MSignature) */
8714 void nitc___nitc__CallSite___msignature_61d(val* self, val* p0) {
8715 self->attrs[COLOR_nitc__typing__CallSite___msignature].val = p0; /* _msignature on <self:CallSite> */
8716 RET_LABEL:;
8717 }
8718 /* method typing$CallSite$erasure_cast for (self: CallSite): Bool */
8719 short int nitc___nitc__CallSite___erasure_cast(val* self) {
8720 short int var /* : Bool */;
8721 short int var1 /* : Bool */;
8722 var1 = self->attrs[COLOR_nitc__typing__CallSite___erasure_cast].s; /* _erasure_cast on <self:CallSite> */
8723 var = var1;
8724 RET_LABEL:;
8725 return var;
8726 }
8727 /* method typing$CallSite$erasure_cast= for (self: CallSite, Bool) */
8728 void nitc___nitc__CallSite___erasure_cast_61d(val* self, short int p0) {
8729 self->attrs[COLOR_nitc__typing__CallSite___erasure_cast].s = p0; /* _erasure_cast on <self:CallSite> */
8730 RET_LABEL:;
8731 }
8732 /* method typing$CallSite$signaturemap for (self: CallSite): nullable SignatureMap */
8733 val* nitc___nitc__CallSite___signaturemap(val* self) {
8734 val* var /* : nullable SignatureMap */;
8735 val* var1 /* : nullable SignatureMap */;
8736 var1 = self->attrs[COLOR_nitc__typing__CallSite___signaturemap].val; /* _signaturemap on <self:CallSite> */
8737 var = var1;
8738 RET_LABEL:;
8739 return var;
8740 }
8741 /* method typing$CallSite$signaturemap= for (self: CallSite, nullable SignatureMap) */
8742 void nitc___nitc__CallSite___signaturemap_61d(val* self, val* p0) {
8743 self->attrs[COLOR_nitc__typing__CallSite___signaturemap].val = p0; /* _signaturemap on <self:CallSite> */
8744 RET_LABEL:;
8745 }
8746 /* method typing$CallSite$check_signature for (self: CallSite, TypeVisitor, ANode, Array[AExpr]): Bool */
8747 short int nitc___nitc__CallSite___check_signature(val* self, val* p0, val* p1, val* p2) {
8748 short int var /* : Bool */;
8749 val* var_v /* var v: TypeVisitor */;
8750 val* var_node /* var node: ANode */;
8751 val* var_args /* var args: Array[AExpr] */;
8752 val* var1 /* : MMethod */;
8753 val* var3 /* : MMethod */;
8754 val* var4 /* : MSignature */;
8755 val* var6 /* : MSignature */;
8756 val* var7 /* : nullable SignatureMap */;
8757 val* var_map /* var map: nullable SignatureMap */;
8758 short int var9 /* : Bool */;
8759 short int var10 /* : Bool */;
8760 val* var_other /* var other: nullable Object */;
8761 short int var12 /* : Bool */;
8762 short int var14 /* : Bool */;
8763 short int var16 /* : Bool */;
8764 short int var17 /* : Bool */;
8765 short int var19 /* : Bool */;
8766 short int var21 /* : Bool */;
8767 var_v = p0;
8768 var_node = p1;
8769 var_args = p2;
8770 {
8771 { /* Inline typing$CallSite$mproperty (self) on <self:CallSite> */
8772 var3 = self->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
8773 if (unlikely(var3 == NULL)) {
8774 if(catchStack.cursor >= 0){
8775 longjmp(catchStack.envs[catchStack.cursor], 1);
8776 }
8777 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8778 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 656);
8779 fatal_exit(1);
8780 }
8781 var1 = var3;
8782 RET_LABEL2:(void)0;
8783 }
8784 }
8785 {
8786 { /* Inline typing$CallSite$msignature (self) on <self:CallSite> */
8787 var6 = self->attrs[COLOR_nitc__typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
8788 if (unlikely(var6 == NULL)) {
8789 if(catchStack.cursor >= 0){
8790 longjmp(catchStack.envs[catchStack.cursor], 1);
8791 }
8792 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
8793 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 663);
8794 fatal_exit(1);
8795 }
8796 var4 = var6;
8797 RET_LABEL5:(void)0;
8798 }
8799 }
8800 {
8801 var7 = nitc__typing___nitc__typing__TypeVisitor___check_signature(var_v, var_node, var_args, var1, var4);
8802 }
8803 var_map = var7;
8804 {
8805 { /* Inline typing$CallSite$signaturemap= (self,var_map) on <self:CallSite> */
8806 self->attrs[COLOR_nitc__typing__CallSite___signaturemap].val = var_map; /* _signaturemap on <self:CallSite> */
8807 RET_LABEL8:(void)0;
8808 }
8809 }
8810 if (var_map == NULL) {
8811 var9 = 1; /* is null */
8812 } else {
8813 var9 = 0; /* arg is null but recv is not */
8814 }
8815 if (0) {
8816 { /* Inline kernel$Object$== (var_map,((val*)NULL)) on <var_map:nullable SignatureMap> */
8817 var_other = ((val*)NULL);
8818 {
8819 { /* Inline kernel$Object$is_same_instance (var_map,var_other) on <var_map:nullable SignatureMap(SignatureMap)> */
8820 var14 = var_map == var_other;
8821 var12 = var14;
8822 goto RET_LABEL13;
8823 RET_LABEL13:(void)0;
8824 }
8825 }
8826 var10 = var12;
8827 goto RET_LABEL11;
8828 RET_LABEL11:(void)0;
8829 }
8830 var9 = var10;
8831 }
8832 if (var9){
8833 {
8834 { /* Inline model_base$MEntity$is_broken= (self,1) on <self:CallSite> */
8835 self->attrs[COLOR_nitc__model_base__MEntity___is_broken].s = 1; /* _is_broken on <self:CallSite> */
8836 RET_LABEL15:(void)0;
8837 }
8838 }
8839 } else {
8840 }
8841 if (var_map == NULL) {
8842 var16 = 1; /* is null */
8843 } else {
8844 var16 = 0; /* arg is null but recv is not */
8845 }
8846 if (0) {
8847 { /* Inline kernel$Object$== (var_map,((val*)NULL)) on <var_map:nullable SignatureMap> */
8848 var_other = ((val*)NULL);
8849 {
8850 { /* Inline kernel$Object$is_same_instance (var_map,var_other) on <var_map:nullable SignatureMap(SignatureMap)> */
8851 var21 = var_map == var_other;
8852 var19 = var21;
8853 goto RET_LABEL20;
8854 RET_LABEL20:(void)0;
8855 }
8856 }
8857 var17 = var19;
8858 goto RET_LABEL18;
8859 RET_LABEL18:(void)0;
8860 }
8861 var16 = var17;
8862 }
8863 var = var16;
8864 goto RET_LABEL;
8865 RET_LABEL:;
8866 return var;
8867 }
8868 /* method typing$CallSite$init for (self: CallSite) */
8869 void nitc___nitc__CallSite___core__kernel__Object__init(val* self) {
8870 {
8871 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__CallSite___core__kernel__Object__init]))(self); /* init on <self:CallSite>*/
8872 }
8873 RET_LABEL:;
8874 }
8875 /* method typing$Variable$declared_type for (self: Variable): nullable MType */
8876 val* nitc__typing___Variable___declared_type(val* self) {
8877 val* var /* : nullable MType */;
8878 val* var1 /* : nullable MType */;
8879 var1 = self->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <self:Variable> */
8880 var = var1;
8881 RET_LABEL:;
8882 return var;
8883 }
8884 /* method typing$Variable$declared_type= for (self: Variable, nullable MType) */
8885 void nitc__typing___Variable___declared_type_61d(val* self, val* p0) {
8886 self->attrs[COLOR_nitc__typing__Variable___declared_type].val = p0; /* _declared_type on <self:Variable> */
8887 RET_LABEL:;
8888 }
8889 /* method typing$Variable$is_adapted for (self: Variable): Bool */
8890 short int nitc__typing___Variable___is_adapted(val* self) {
8891 short int var /* : Bool */;
8892 short int var1 /* : Bool */;
8893 var1 = self->attrs[COLOR_nitc__typing__Variable___is_adapted].s; /* _is_adapted on <self:Variable> */
8894 var = var1;
8895 RET_LABEL:;
8896 return var;
8897 }
8898 /* method typing$Variable$is_adapted= for (self: Variable, Bool) */
8899 void nitc__typing___Variable___is_adapted_61d(val* self, short int p0) {
8900 self->attrs[COLOR_nitc__typing__Variable___is_adapted].s = p0; /* _is_adapted on <self:Variable> */
8901 RET_LABEL:;
8902 }
8903 /* method typing$FlowContext$vars for (self: FlowContext): HashMap[Variable, nullable MType] */
8904 val* nitc__typing___FlowContext___vars(val* self) {
8905 val* var /* : HashMap[Variable, nullable MType] */;
8906 val* var1 /* : HashMap[Variable, nullable MType] */;
8907 var1 = self->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
8908 if (unlikely(var1 == NULL)) {
8909 if(catchStack.cursor >= 0){
8910 longjmp(catchStack.envs[catchStack.cursor], 1);
8911 }
8912 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
8913 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
8914 fatal_exit(1);
8915 }
8916 var = var1;
8917 RET_LABEL:;
8918 return var;
8919 }
8920 /* method typing$FlowContext$set_var for (self: FlowContext, TypeVisitor, Variable, nullable MType) */
8921 void nitc__typing___FlowContext___set_var(val* self, val* p0, val* p1, val* p2) {
8922 val* var_v /* var v: TypeVisitor */;
8923 val* var_variable /* var variable: Variable */;
8924 val* var_mtype /* var mtype: nullable MType */;
8925 short int var /* : Bool */;
8926 val* var1 /* : nullable MType */;
8927 val* var3 /* : nullable MType */;
8928 short int var4 /* : Bool */;
8929 short int var5 /* : Bool */;
8930 val* var_other /* var other: nullable Object */;
8931 short int var7 /* : Bool */;
8932 short int var9 /* : Bool */;
8933 short int var_ /* var : Bool */;
8934 short int var10 /* : Bool */;
8935 short int var12 /* : Bool */;
8936 short int var13 /* : Bool */;
8937 short int var14 /* : Bool */;
8938 val* var15 /* : HashMap[Variable, nullable MType] */;
8939 val* var17 /* : HashMap[Variable, nullable MType] */;
8940 short int var18 /* : Bool */;
8941 short int var_19 /* var : Bool */;
8942 val* var20 /* : HashMap[Variable, nullable MType] */;
8943 val* var22 /* : HashMap[Variable, nullable MType] */;
8944 val* var23 /* : nullable Object */;
8945 short int var24 /* : Bool */;
8946 short int var25 /* : Bool */;
8947 short int var27 /* : Bool */;
8948 short int var29 /* : Bool */;
8949 val* var30 /* : HashMap[Variable, nullable MType] */;
8950 val* var32 /* : HashMap[Variable, nullable MType] */;
8951 var_v = p0;
8952 var_variable = p1;
8953 var_mtype = p2;
8954 {
8955 { /* Inline typing$Variable$declared_type (var_variable) on <var_variable:Variable> */
8956 var3 = var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
8957 var1 = var3;
8958 RET_LABEL2:(void)0;
8959 }
8960 }
8961 if (var1 == NULL) {
8962 var4 = (var_mtype == NULL);
8963 } else {
8964 { /* Inline kernel$Object$== (var1,var_mtype) on <var1:nullable MType> */
8965 var_other = var_mtype;
8966 {
8967 { /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable MType(MType)> */
8968 var9 = var1 == var_other;
8969 var7 = var9;
8970 goto RET_LABEL8;
8971 RET_LABEL8:(void)0;
8972 }
8973 }
8974 var5 = var7;
8975 goto RET_LABEL6;
8976 RET_LABEL6:(void)0;
8977 }
8978 var4 = var5;
8979 }
8980 var_ = var4;
8981 if (var4){
8982 {
8983 { /* Inline typing$Variable$is_adapted (var_variable) on <var_variable:Variable> */
8984 var12 = var_variable->attrs[COLOR_nitc__typing__Variable___is_adapted].s; /* _is_adapted on <var_variable:Variable> */
8985 var10 = var12;
8986 RET_LABEL11:(void)0;
8987 }
8988 }
8989 var13 = !var10;
8990 var = var13;
8991 } else {
8992 var = var_;
8993 }
8994 if (var){
8995 goto RET_LABEL;
8996 } else {
8997 }
8998 {
8999 { /* Inline typing$FlowContext$vars (self) on <self:FlowContext> */
9000 var17 = self->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
9001 if (unlikely(var17 == NULL)) {
9002 if(catchStack.cursor >= 0){
9003 longjmp(catchStack.envs[catchStack.cursor], 1);
9004 }
9005 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
9006 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
9007 fatal_exit(1);
9008 }
9009 var15 = var17;
9010 RET_LABEL16:(void)0;
9011 }
9012 }
9013 {
9014 var18 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var15, var_variable);
9015 }
9016 var_19 = var18;
9017 if (var18){
9018 {
9019 { /* Inline typing$FlowContext$vars (self) on <self:FlowContext> */
9020 var22 = self->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
9021 if (unlikely(var22 == NULL)) {
9022 if(catchStack.cursor >= 0){
9023 longjmp(catchStack.envs[catchStack.cursor], 1);
9024 }
9025 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
9026 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
9027 fatal_exit(1);
9028 }
9029 var20 = var22;
9030 RET_LABEL21:(void)0;
9031 }
9032 }
9033 {
9034 var23 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var20, var_variable);
9035 }
9036 if (var23 == NULL) {
9037 var24 = (var_mtype == NULL);
9038 } else {
9039 { /* Inline kernel$Object$== (var23,var_mtype) on <var23:nullable Object(nullable MType)> */
9040 var_other = var_mtype;
9041 {
9042 { /* Inline kernel$Object$is_same_instance (var23,var_other) on <var23:nullable Object(MType)> */
9043 var29 = var23 == var_other;
9044 var27 = var29;
9045 goto RET_LABEL28;
9046 RET_LABEL28:(void)0;
9047 }
9048 }
9049 var25 = var27;
9050 goto RET_LABEL26;
9051 RET_LABEL26:(void)0;
9052 }
9053 var24 = var25;
9054 }
9055 var14 = var24;
9056 } else {
9057 var14 = var_19;
9058 }
9059 if (var14){
9060 goto RET_LABEL;
9061 } else {
9062 }
9063 {
9064 { /* Inline typing$FlowContext$vars (self) on <self:FlowContext> */
9065 var32 = self->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
9066 if (unlikely(var32 == NULL)) {
9067 if(catchStack.cursor >= 0){
9068 longjmp(catchStack.envs[catchStack.cursor], 1);
9069 }
9070 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
9071 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
9072 fatal_exit(1);
9073 }
9074 var30 = var32;
9075 RET_LABEL31:(void)0;
9076 }
9077 }
9078 {
9079 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var30, var_variable, var_mtype); /* Direct call hash_collection$HashMap$[]= on <var30:HashMap[Variable, nullable MType]>*/
9080 }
9081 {
9082 { /* Inline typing$TypeVisitor$dirty= (var_v,1) on <var_v:TypeVisitor> */
9083 var_v->attrs[COLOR_nitc__typing__TypeVisitor___dirty].s = 1; /* _dirty on <var_v:TypeVisitor> */
9084 RET_LABEL33:(void)0;
9085 }
9086 }
9087 {
9088 { /* Inline typing$Variable$is_adapted= (var_variable,1) on <var_variable:Variable> */
9089 var_variable->attrs[COLOR_nitc__typing__Variable___is_adapted].s = 1; /* _is_adapted on <var_variable:Variable> */
9090 RET_LABEL34:(void)0;
9091 }
9092 }
9093 RET_LABEL:;
9094 }
9095 /* method typing$FlowContext$collect_types for (self: FlowContext, Variable): Array[nullable MType] */
9096 val* nitc__typing___FlowContext___collect_types(val* self, val* p0) {
9097 val* var /* : Array[nullable MType] */;
9098 val* var_variable /* var variable: Variable */;
9099 val* var1 /* : Array[nullable MType] */;
9100 val* var_res /* var res: Array[nullable MType] */;
9101 val* var2 /* : Array[FlowContext] */;
9102 val* var_ /* var : Array[FlowContext] */;
9103 val* var_todo /* var todo: Array[FlowContext] */;
9104 val* var3 /* : HashSet[FlowContext] */;
9105 val* var_seen /* var seen: HashSet[FlowContext] */;
9106 short int var4 /* : Bool */;
9107 short int var5 /* : Bool */;
9108 val* var6 /* : nullable Object */;
9109 val* var_f /* var f: FlowContext */;
9110 short int var7 /* : Bool */;
9111 short int var8 /* : Bool */;
9112 val* var9 /* : HashMap[Variable, nullable MType] */;
9113 val* var11 /* : HashMap[Variable, nullable MType] */;
9114 short int var12 /* : Bool */;
9115 val* var13 /* : HashMap[Variable, nullable MType] */;
9116 val* var15 /* : HashMap[Variable, nullable MType] */;
9117 val* var16 /* : nullable Object */;
9118 val* var17 /* : Array[FlowContext] */;
9119 val* var19 /* : Array[FlowContext] */;
9120 val* var20 /* : Array[FlowContext] */;
9121 val* var22 /* : Array[FlowContext] */;
9122 val* var23 /* : Array[FlowContext] */;
9123 val* var25 /* : Array[FlowContext] */;
9124 short int var26 /* : Bool */;
9125 val* var27 /* : nullable MType */;
9126 val* var29 /* : nullable MType */;
9127 var_variable = p0;
9128 var1 = NEW_core__Array(&type_core__Array__nullable__nitc__MType);
9129 {
9130 core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[nullable MType]>*/
9131 }
9132 var_res = var1;
9133 var2 = NEW_core__Array(&type_core__Array__nitc__FlowContext);
9134 {
9135 core___core__Array___with_capacity(var2, 1l); /* Direct call array$Array$with_capacity on <var2:Array[FlowContext]>*/
9136 }
9137 var_ = var2;
9138 {
9139 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, self); /* Direct call array$AbstractArray$push on <var_:Array[FlowContext]>*/
9140 }
9141 var_todo = var_;
9142 var3 = NEW_core__HashSet(&type_core__HashSet__nitc__FlowContext);
9143 {
9144 core___core__HashSet___core__kernel__Object__init(var3); /* Direct call hash_collection$HashSet$init on <var3:HashSet[FlowContext]>*/
9145 }
9146 var_seen = var3;
9147 for(;;) {
9148 {
9149 var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_todo);
9150 }
9151 var5 = !var4;
9152 if (var5){
9153 {
9154 var6 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_todo);
9155 }
9156 var_f = var6;
9157 {
9158 var7 = nitc___nitc__FlowContext___is_unreachable(var_f);
9159 }
9160 if (var7){
9161 goto BREAK_label;
9162 } else {
9163 }
9164 {
9165 var8 = core___core__HashSet___core__abstract_collection__Collection__has(var_seen, var_f);
9166 }
9167 if (var8){
9168 goto BREAK_label;
9169 } else {
9170 }
9171 {
9172 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var_seen, var_f); /* Direct call hash_collection$HashSet$add on <var_seen:HashSet[FlowContext]>*/
9173 }
9174 {
9175 { /* Inline typing$FlowContext$vars (var_f) on <var_f:FlowContext> */
9176 var11 = var_f->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <var_f:FlowContext> */
9177 if (unlikely(var11 == NULL)) {
9178 if(catchStack.cursor >= 0){
9179 longjmp(catchStack.envs[catchStack.cursor], 1);
9180 }
9181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
9182 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
9183 fatal_exit(1);
9184 }
9185 var9 = var11;
9186 RET_LABEL10:(void)0;
9187 }
9188 }
9189 {
9190 var12 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var9, var_variable);
9191 }
9192 if (var12){
9193 {
9194 { /* Inline typing$FlowContext$vars (var_f) on <var_f:FlowContext> */
9195 var15 = var_f->attrs[COLOR_nitc__typing__FlowContext___vars].val; /* _vars on <var_f:FlowContext> */
9196 if (unlikely(var15 == NULL)) {
9197 if(catchStack.cursor >= 0){
9198 longjmp(catchStack.envs[catchStack.cursor], 1);
9199 }
9200 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
9201 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 697);
9202 fatal_exit(1);
9203 }
9204 var13 = var15;
9205 RET_LABEL14:(void)0;
9206 }
9207 }
9208 {
9209 var16 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var13, var_variable);
9210 }
9211 {
9212 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var16); /* Direct call array$Array$add on <var_res:Array[nullable MType]>*/
9213 }
9214 } else {
9215 {
9216 { /* Inline flow$FlowContext$previous (var_f) on <var_f:FlowContext> */
9217 var19 = var_f->attrs[COLOR_nitc__flow__FlowContext___previous].val; /* _previous on <var_f:FlowContext> */
9218 if (unlikely(var19 == NULL)) {
9219 if(catchStack.cursor >= 0){
9220 longjmp(catchStack.envs[catchStack.cursor], 1);
9221 }
9222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
9223 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 189);
9224 fatal_exit(1);
9225 }
9226 var17 = var19;
9227 RET_LABEL18:(void)0;
9228 }
9229 }
9230 {
9231 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var17); /* Direct call array$Array$add_all on <var_todo:Array[FlowContext]>*/
9232 }
9233 {
9234 { /* Inline flow$FlowContext$loops (var_f) on <var_f:FlowContext> */
9235 var22 = var_f->attrs[COLOR_nitc__flow__FlowContext___loops].val; /* _loops on <var_f:FlowContext> */
9236 if (unlikely(var22 == NULL)) {
9237 if(catchStack.cursor >= 0){
9238 longjmp(catchStack.envs[catchStack.cursor], 1);
9239 }
9240 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _loops");
9241 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 192);
9242 fatal_exit(1);
9243 }
9244 var20 = var22;
9245 RET_LABEL21:(void)0;
9246 }
9247 }
9248 {
9249 core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var20); /* Direct call array$Array$add_all on <var_todo:Array[FlowContext]>*/
9250 }
9251 {
9252 { /* Inline flow$FlowContext$previous (var_f) on <var_f:FlowContext> */
9253 var25 = var_f->attrs[COLOR_nitc__flow__FlowContext___previous].val; /* _previous on <var_f:FlowContext> */
9254 if (unlikely(var25 == NULL)) {
9255 if(catchStack.cursor >= 0){
9256 longjmp(catchStack.envs[catchStack.cursor], 1);
9257 }
9258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
9259 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__flow, 189);
9260 fatal_exit(1);
9261 }
9262 var23 = var25;
9263 RET_LABEL24:(void)0;
9264 }
9265 }
9266 {
9267 var26 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var23);
9268 }
9269 if (var26){
9270 {
9271 { /* Inline typing$Variable$declared_type (var_variable) on <var_variable:Variable> */
9272 var29 = var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
9273 var27 = var29;
9274 RET_LABEL28:(void)0;
9275 }
9276 }
9277 {
9278 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var27); /* Direct call array$Array$add on <var_res:Array[nullable MType]>*/
9279 }
9280 } else {
9281 }
9282 }
9283 } else {
9284 goto BREAK_label30;
9285 }
9286 BREAK_label: (void)0;
9287 }
9288 BREAK_label30: (void)0;
9289 var = var_res;
9290 goto RET_LABEL;
9291 RET_LABEL:;
9292 return var;
9293 }
9294 /* method typing$APropdef$do_typing for (self: APropdef, ModelBuilder) */
9295 void nitc__typing___APropdef___do_typing(val* self, val* p0) {
9296 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
9297 var_modelbuilder = p0;
9298 RET_LABEL:;
9299 }
9300 /* method typing$APropdef$selfvariable= for (self: APropdef, nullable Variable) */
9301 void nitc__typing___APropdef___selfvariable_61d(val* self, val* p0) {
9302 self->attrs[COLOR_nitc__typing__APropdef___selfvariable].val = p0; /* _selfvariable on <self:APropdef> */
9303 RET_LABEL:;
9304 }
9305 /* method typing$AMethPropdef$do_typing for (self: AMethPropdef, ModelBuilder) */
9306 void nitc__typing___AMethPropdef___APropdef__do_typing(val* self, val* p0) {
9307 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
9308 val* var /* : nullable MPropDef */;
9309 val* var2 /* : nullable MPropDef */;
9310 val* var_mpropdef /* var mpropdef: nullable MMethodDef */;
9311 short int var3 /* : Bool */;
9312 short int var4 /* : Bool */;
9313 val* var_other /* var other: nullable Object */;
9314 short int var6 /* : Bool */;
9315 short int var8 /* : Bool */;
9316 val* var9 /* : TypeVisitor */;
9317 val* var10 /* : MClassDef */;
9318 val* var12 /* : MClassDef */;
9319 val* var13 /* : MModule */;
9320 val* var15 /* : MModule */;
9321 val* var_v /* var v: TypeVisitor */;
9322 val* var16 /* : Variable */;
9323 val* var18 /* : Variable */;
9324 val* var20 /* : nullable MPropDef */;
9325 val* var22 /* : nullable MPropDef */;
9326 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
9327 val* var23 /* : nullable MSignature */;
9328 val* var25 /* : nullable MSignature */;
9329 val* var_msignature /* var msignature: nullable MSignature */;
9330 short int var26 /* : Bool */;
9331 short int var27 /* : Bool */;
9332 short int var29 /* : Bool */;
9333 short int var31 /* : Bool */;
9334 long var_i /* var i: Int */;
9335 long var32 /* : Int */;
9336 long var_ /* var : Int */;
9337 short int var33 /* : Bool */;
9338 short int var35 /* : Bool */;
9339 int cltype;
9340 int idtype;
9341 const char* var_class_name;
9342 short int var36 /* : Bool */;
9343 val* var37 /* : Array[MParameter] */;
9344 val* var39 /* : Array[MParameter] */;
9345 val* var40 /* : nullable Object */;
9346 val* var41 /* : MType */;
9347 val* var43 /* : MType */;
9348 val* var_mtype /* var mtype: MType */;
9349 long var44 /* : Int */;
9350 long var46 /* : Int */;
9351 short int var47 /* : Bool */;
9352 short int var49 /* : Bool */;
9353 val* var50 /* : nullable ASignature */;
9354 val* var52 /* : nullable ASignature */;
9355 val* var53 /* : ANodes[AParam] */;
9356 val* var55 /* : ANodes[AParam] */;
9357 val* var56 /* : ANode */;
9358 static val* varonce;
9359 val* var57 /* : String */;
9360 char* var58 /* : CString */;
9361 val* var59 /* : String */;
9362 val* var60 /* : nullable Int */;
9363 val* var61 /* : nullable Int */;
9364 val* var62 /* : nullable Bool */;
9365 val* var63 /* : nullable Bool */;
9366 val* var64 /* : nullable MClass */;
9367 val* var_arrayclass /* var arrayclass: nullable MClass */;
9368 short int var65 /* : Bool */;
9369 short int var66 /* : Bool */;
9370 short int var68 /* : Bool */;
9371 short int var70 /* : Bool */;
9372 val* var71 /* : Array[MType] */;
9373 val* var_72 /* var : Array[MType] */;
9374 val* var73 /* : MClassType */;
9375 val* var74 /* : nullable ASignature */;
9376 val* var76 /* : nullable ASignature */;
9377 val* var77 /* : ANodes[AParam] */;
9378 val* var79 /* : ANodes[AParam] */;
9379 val* var80 /* : ANode */;
9380 val* var81 /* : nullable Variable */;
9381 val* var83 /* : nullable Variable */;
9382 val* var_variable /* var variable: nullable Variable */;
9383 short int var84 /* : Bool */;
9384 short int var85 /* : Bool */;
9385 val* var_other87 /* var other: nullable Object */;
9386 short int var88 /* : Bool */;
9387 short int var89 /* : Bool */;
9388 long var91 /* : Int */;
9389 val* var92 /* : nullable AExpr */;
9390 val* var94 /* : nullable AExpr */;
9391 val* var_nblock /* var nblock: nullable AExpr */;
9392 short int var95 /* : Bool */;
9393 short int var96 /* : Bool */;
9394 short int var98 /* : Bool */;
9395 short int var100 /* : Bool */;
9396 short int var102 /* : Bool */;
9397 short int var103 /* : Bool */;
9398 short int var105 /* : Bool */;
9399 short int var106 /* : Bool */;
9400 short int var_107 /* var : Bool */;
9401 short int var108 /* : Bool */;
9402 short int var110 /* : Bool */;
9403 short int var111 /* : Bool */;
9404 val* var113 /* : PostTypingVisitor */;
9405 val* var_post_visitor /* var post_visitor: PostTypingVisitor */;
9406 short int var114 /* : Bool */;
9407 val* var115 /* : nullable FlowContext */;
9408 val* var117 /* : nullable FlowContext */;
9409 short int var118 /* : Bool */;
9410 short int var119 /* : Bool */;
9411 short int var_120 /* var : Bool */;
9412 val* var121 /* : nullable MType */;
9413 val* var123 /* : nullable MType */;
9414 short int var124 /* : Bool */;
9415 short int var125 /* : Bool */;
9416 short int var127 /* : Bool */;
9417 short int var128 /* : Bool */;
9418 static val* varonce129;
9419 val* var130 /* : String */;
9420 char* var131 /* : CString */;
9421 val* var132 /* : String */;
9422 val* var133 /* : nullable Int */;
9423 val* var134 /* : nullable Int */;
9424 val* var135 /* : nullable Bool */;
9425 val* var136 /* : nullable Bool */;
9426 var_modelbuilder = p0;
9427 {
9428 { /* Inline modelize_property$APropdef$mpropdef (self) on <self:AMethPropdef> */
9429 var2 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
9430 var = var2;
9431 RET_LABEL1:(void)0;
9432 }
9433 }
9434 var_mpropdef = var;
9435 if (var_mpropdef == NULL) {
9436 var3 = 1; /* is null */
9437 } else {
9438 var3 = 0; /* arg is null but recv is not */
9439 }
9440 if (0) {
9441 { /* Inline kernel$Object$== (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MMethodDef> */
9442 var_other = ((val*)NULL);
9443 {
9444 { /* Inline kernel$Object$is_same_instance (var_mpropdef,var_other) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9445 var8 = var_mpropdef == var_other;
9446 var6 = var8;
9447 goto RET_LABEL7;
9448 RET_LABEL7:(void)0;
9449 }
9450 }
9451 var4 = var6;
9452 goto RET_LABEL5;
9453 RET_LABEL5:(void)0;
9454 }
9455 var3 = var4;
9456 }
9457 if (var3){
9458 goto RET_LABEL;
9459 } else {
9460 }
9461 var9 = NEW_nitc__typing__TypeVisitor(&type_nitc__typing__TypeVisitor);
9462 {
9463 { /* Inline model$MPropDef$mclassdef (var_mpropdef) on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9464 var12 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MMethodDef(MMethodDef)> */
9465 if (unlikely(var12 == NULL)) {
9466 if(catchStack.cursor >= 0){
9467 longjmp(catchStack.envs[catchStack.cursor], 1);
9468 }
9469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
9470 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
9471 fatal_exit(1);
9472 }
9473 var10 = var12;
9474 RET_LABEL11:(void)0;
9475 }
9476 }
9477 {
9478 { /* Inline model$MClassDef$mmodule (var10) on <var10:MClassDef> */
9479 var15 = var10->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var10:MClassDef> */
9480 if (unlikely(var15 == NULL)) {
9481 if(catchStack.cursor >= 0){
9482 longjmp(catchStack.envs[catchStack.cursor], 1);
9483 }
9484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
9485 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
9486 fatal_exit(1);
9487 }
9488 var13 = var15;
9489 RET_LABEL14:(void)0;
9490 }
9491 }
9492 {
9493 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nitc__typing__TypeVisitor__modelbuilder_61d]))(var9, var_modelbuilder); /* modelbuilder= on <var9:TypeVisitor>*/
9494 }
9495 {
9496 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nitc__typing__TypeVisitor__mmodule_61d]))(var9, var13); /* mmodule= on <var9:TypeVisitor>*/
9497 }
9498 {
9499 ((void(*)(val* self, val* p0))(var9->class->vft[COLOR_nitc__typing__TypeVisitor__mpropdef_61d]))(var9, var_mpropdef); /* mpropdef= on <var9:TypeVisitor>*/
9500 }
9501 {
9502 ((void(*)(val* self))(var9->class->vft[COLOR_core__kernel__Object__init]))(var9); /* init on <var9:TypeVisitor>*/
9503 }
9504 var_v = var9;
9505 {
9506 { /* Inline typing$TypeVisitor$selfvariable (var_v) on <var_v:TypeVisitor> */
9507 var18 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___selfvariable].val; /* _selfvariable on <var_v:TypeVisitor> */
9508 if (unlikely(var18 == NULL)) {
9509 if(catchStack.cursor >= 0){
9510 longjmp(catchStack.envs[catchStack.cursor], 1);
9511 }
9512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _selfvariable");
9513 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 51);
9514 fatal_exit(1);
9515 }
9516 var16 = var18;
9517 RET_LABEL17:(void)0;
9518 }
9519 }
9520 {
9521 { /* Inline typing$APropdef$selfvariable= (self,var16) on <self:AMethPropdef> */
9522 self->attrs[COLOR_nitc__typing__APropdef___selfvariable].val = var16; /* _selfvariable on <self:AMethPropdef> */
9523 RET_LABEL19:(void)0;
9524 }
9525 }
9526 {
9527 { /* Inline modelize_property$APropdef$mpropdef (self) on <self:AMethPropdef> */
9528 var22 = self->attrs[COLOR_nitc__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:AMethPropdef> */
9529 var20 = var22;
9530 RET_LABEL21:(void)0;
9531 }
9532 }
9533 if (unlikely(var20 == NULL)) {
9534 if(catchStack.cursor >= 0){
9535 longjmp(catchStack.envs[catchStack.cursor], 1);
9536 }
9537 PRINT_ERROR("Runtime error: %s", "Cast failed");
9538 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 765);
9539 fatal_exit(1);
9540 }
9541 var_mmethoddef = var20;
9542 {
9543 { /* Inline model$MMethodDef$msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
9544 var25 = var_mmethoddef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
9545 var23 = var25;
9546 RET_LABEL24:(void)0;
9547 }
9548 }
9549 var_msignature = var23;
9550 if (var_msignature == NULL) {
9551 var26 = 1; /* is null */
9552 } else {
9553 var26 = 0; /* arg is null but recv is not */
9554 }
9555 if (0) {
9556 { /* Inline kernel$Object$== (var_msignature,((val*)NULL)) on <var_msignature:nullable MSignature> */
9557 var_other = ((val*)NULL);
9558 {
9559 { /* Inline kernel$Object$is_same_instance (var_msignature,var_other) on <var_msignature:nullable MSignature(MSignature)> */
9560 var31 = var_msignature == var_other;
9561 var29 = var31;
9562 goto RET_LABEL30;
9563 RET_LABEL30:(void)0;
9564 }
9565 }
9566 var27 = var29;
9567 goto RET_LABEL28;
9568 RET_LABEL28:(void)0;
9569 }
9570 var26 = var27;
9571 }
9572 if (var26){
9573 goto RET_LABEL;
9574 } else {
9575 }
9576 var_i = 0l;
9577 {
9578 var32 = nitc___nitc__MSignature___arity(var_msignature);
9579 }
9580 var_ = var32;
9581 for(;;) {
9582 {
9583 { /* Inline kernel$Int$< (var_i,var_) on <var_i:Int> */
9584 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
9585 /* <var_:Int> isa OTHER */
9586 var35 = 1; /* easy <var_:Int> isa OTHER*/
9587 if (unlikely(!var35)) {
9588 var_class_name = type_core__Int.name;
9589 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
9590 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
9591 fatal_exit(1);
9592 }
9593 var36 = var_i < var_;
9594 var33 = var36;
9595 goto RET_LABEL34;
9596 RET_LABEL34:(void)0;
9597 }
9598 }
9599 if (var33){
9600 } else {
9601 goto BREAK_label;
9602 }
9603 {
9604 { /* Inline model$MSignature$mparameters (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9605 var39 = var_msignature->attrs[COLOR_nitc__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:nullable MSignature(MSignature)> */
9606 if (unlikely(var39 == NULL)) {
9607 if(catchStack.cursor >= 0){
9608 longjmp(catchStack.envs[catchStack.cursor], 1);
9609 }
9610 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
9611 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1879);
9612 fatal_exit(1);
9613 }
9614 var37 = var39;
9615 RET_LABEL38:(void)0;
9616 }
9617 }
9618 {
9619 var40 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var37, var_i);
9620 }
9621 {
9622 { /* Inline model$MParameter$mtype (var40) on <var40:nullable Object(MParameter)> */
9623 var43 = var40->attrs[COLOR_nitc__model__MParameter___mtype].val; /* _mtype on <var40:nullable Object(MParameter)> */
9624 if (unlikely(var43 == NULL)) {
9625 if(catchStack.cursor >= 0){
9626 longjmp(catchStack.envs[catchStack.cursor], 1);
9627 }
9628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
9629 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1996);
9630 fatal_exit(1);
9631 }
9632 var41 = var43;
9633 RET_LABEL42:(void)0;
9634 }
9635 }
9636 var_mtype = var41;
9637 {
9638 { /* Inline model$MSignature$vararg_rank (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9639 var46 = var_msignature->attrs[COLOR_nitc__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:nullable MSignature(MSignature)> */
9640 var44 = var46;
9641 RET_LABEL45:(void)0;
9642 }
9643 }
9644 {
9645 { /* Inline kernel$Int$== (var44,var_i) on <var44:Int> */
9646 var49 = var44 == var_i;
9647 var47 = var49;
9648 goto RET_LABEL48;
9649 RET_LABEL48:(void)0;
9650 }
9651 }
9652 if (var47){
9653 {
9654 { /* Inline parser_nodes$AMethPropdef$n_signature (self) on <self:AMethPropdef> */
9655 var52 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
9656 var50 = var52;
9657 RET_LABEL51:(void)0;
9658 }
9659 }
9660 if (var50 == NULL) {
9661 if(catchStack.cursor >= 0){
9662 longjmp(catchStack.envs[catchStack.cursor], 1);
9663 }
9664 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9665 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 771);
9666 fatal_exit(1);
9667 } else {
9668 { /* Inline parser_nodes$ASignature$n_params (var50) on <var50:nullable ASignature> */
9669 if (unlikely(var50 == NULL)) {
9670 if(catchStack.cursor >= 0){
9671 longjmp(catchStack.envs[catchStack.cursor], 1);
9672 }
9673 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9674 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1746);
9675 fatal_exit(1);
9676 }
9677 var55 = var50->attrs[COLOR_nitc__parser_nodes__ASignature___n_params].val; /* _n_params on <var50:nullable ASignature> */
9678 if (unlikely(var55 == NULL)) {
9679 if(catchStack.cursor >= 0){
9680 longjmp(catchStack.envs[catchStack.cursor], 1);
9681 }
9682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
9683 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1746);
9684 fatal_exit(1);
9685 }
9686 var53 = var55;
9687 RET_LABEL54:(void)0;
9688 }
9689 }
9690 {
9691 var56 = nitc___nitc__ANodes___core__abstract_collection__SequenceRead___91d_93d(var53, var_i);
9692 }
9693 if (likely(varonce!=NULL)) {
9694 var57 = varonce;
9695 } else {
9696 var58 = "Array";
9697 var60 = (val*)(5l<<2|1);
9698 var61 = (val*)(5l<<2|1);
9699 var62 = (val*)((long)(0)<<2|3);
9700 var63 = (val*)((long)(0)<<2|3);
9701 var59 = core__flat___CString___to_s_unsafe(var58, var60, var61, var62, var63);
9702 var57 = var59;
9703 varonce = var57;
9704 }
9705 {
9706 var64 = nitc__typing___nitc__typing__TypeVisitor___get_mclass(var_v, var56, var57);
9707 }
9708 var_arrayclass = var64;
9709 if (var_arrayclass == NULL) {
9710 var65 = 1; /* is null */
9711 } else {
9712 var65 = 0; /* arg is null but recv is not */
9713 }
9714 if (0) {
9715 { /* Inline kernel$Object$== (var_arrayclass,((val*)NULL)) on <var_arrayclass:nullable MClass> */
9716 var_other = ((val*)NULL);
9717 {
9718 { /* Inline kernel$Object$is_same_instance (var_arrayclass,var_other) on <var_arrayclass:nullable MClass(MClass)> */
9719 var70 = var_arrayclass == var_other;
9720 var68 = var70;
9721 goto RET_LABEL69;
9722 RET_LABEL69:(void)0;
9723 }
9724 }
9725 var66 = var68;
9726 goto RET_LABEL67;
9727 RET_LABEL67:(void)0;
9728 }
9729 var65 = var66;
9730 }
9731 if (var65){
9732 goto RET_LABEL;
9733 } else {
9734 }
9735 var71 = NEW_core__Array(&type_core__Array__nitc__MType);
9736 {
9737 core___core__Array___with_capacity(var71, 1l); /* Direct call array$Array$with_capacity on <var71:Array[MType]>*/
9738 }
9739 var_72 = var71;
9740 {
9741 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_72, var_mtype); /* Direct call array$AbstractArray$push on <var_72:Array[MType]>*/
9742 }
9743 {
9744 var73 = nitc___nitc__MClass___get_mtype(var_arrayclass, var_72);
9745 }
9746 var_mtype = var73;
9747 } else {
9748 }
9749 {
9750 { /* Inline parser_nodes$AMethPropdef$n_signature (self) on <self:AMethPropdef> */
9751 var76 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
9752 var74 = var76;
9753 RET_LABEL75:(void)0;
9754 }
9755 }
9756 if (var74 == NULL) {
9757 if(catchStack.cursor >= 0){
9758 longjmp(catchStack.envs[catchStack.cursor], 1);
9759 }
9760 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9761 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 775);
9762 fatal_exit(1);
9763 } else {
9764 { /* Inline parser_nodes$ASignature$n_params (var74) on <var74:nullable ASignature> */
9765 if (unlikely(var74 == NULL)) {
9766 if(catchStack.cursor >= 0){
9767 longjmp(catchStack.envs[catchStack.cursor], 1);
9768 }
9769 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9770 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1746);
9771 fatal_exit(1);
9772 }
9773 var79 = var74->attrs[COLOR_nitc__parser_nodes__ASignature___n_params].val; /* _n_params on <var74:nullable ASignature> */
9774 if (unlikely(var79 == NULL)) {
9775 if(catchStack.cursor >= 0){
9776 longjmp(catchStack.envs[catchStack.cursor], 1);
9777 }
9778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
9779 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1746);
9780 fatal_exit(1);
9781 }
9782 var77 = var79;
9783 RET_LABEL78:(void)0;
9784 }
9785 }
9786 {
9787 var80 = nitc___nitc__ANodes___core__abstract_collection__SequenceRead___91d_93d(var77, var_i);
9788 }
9789 {
9790 { /* Inline scope$AParam$variable (var80) on <var80:ANode(AParam)> */
9791 var83 = var80->attrs[COLOR_nitc__scope__AParam___variable].val; /* _variable on <var80:ANode(AParam)> */
9792 var81 = var83;
9793 RET_LABEL82:(void)0;
9794 }
9795 }
9796 var_variable = var81;
9797 if (var_variable == NULL) {
9798 var84 = 0; /* is null */
9799 } else {
9800 var84 = 1; /* arg is null and recv is not */
9801 }
9802 if (0) {
9803 { /* Inline kernel$Object$!= (var_variable,((val*)NULL)) on <var_variable:nullable Variable> */
9804 var_other87 = ((val*)NULL);
9805 {
9806 var88 = ((short int(*)(val* self, val* p0))(var_variable->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_variable, var_other87); /* == on <var_variable:nullable Variable(Variable)>*/
9807 }
9808 var89 = !var88;
9809 var85 = var89;
9810 goto RET_LABEL86;
9811 RET_LABEL86:(void)0;
9812 }
9813 var84 = var85;
9814 }
9815 if (unlikely(!var84)) {
9816 if(catchStack.cursor >= 0){
9817 longjmp(catchStack.envs[catchStack.cursor], 1);
9818 }
9819 PRINT_ERROR("Runtime error: %s", "Assert failed");
9820 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 776);
9821 fatal_exit(1);
9822 }
9823 {
9824 { /* Inline typing$Variable$declared_type= (var_variable,var_mtype) on <var_variable:nullable Variable(Variable)> */
9825 var_variable->attrs[COLOR_nitc__typing__Variable___declared_type].val = var_mtype; /* _declared_type on <var_variable:nullable Variable(Variable)> */
9826 RET_LABEL90:(void)0;
9827 }
9828 }
9829 {
9830 var91 = core___core__Int___Discrete__successor(var_i, 1l);
9831 }
9832 var_i = var91;
9833 }
9834 BREAK_label: (void)0;
9835 {
9836 { /* Inline parser_nodes$AMethPropdef$n_block (self) on <self:AMethPropdef> */
9837 var94 = self->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
9838 var92 = var94;
9839 RET_LABEL93:(void)0;
9840 }
9841 }
9842 var_nblock = var92;
9843 if (var_nblock == NULL) {
9844 var95 = 1; /* is null */
9845 } else {
9846 var95 = 0; /* arg is null but recv is not */
9847 }
9848 if (0) {
9849 { /* Inline kernel$Object$== (var_nblock,((val*)NULL)) on <var_nblock:nullable AExpr> */
9850 var_other = ((val*)NULL);
9851 {
9852 { /* Inline kernel$Object$is_same_instance (var_nblock,var_other) on <var_nblock:nullable AExpr(AExpr)> */
9853 var100 = var_nblock == var_other;
9854 var98 = var100;
9855 goto RET_LABEL99;
9856 RET_LABEL99:(void)0;
9857 }
9858 }
9859 var96 = var98;
9860 goto RET_LABEL97;
9861 RET_LABEL97:(void)0;
9862 }
9863 var95 = var96;
9864 }
9865 if (var95){
9866 goto RET_LABEL;
9867 } else {
9868 }
9869 for(;;) {
9870 {
9871 { /* Inline typing$TypeVisitor$dirty= (var_v,0) on <var_v:TypeVisitor> */
9872 var_v->attrs[COLOR_nitc__typing__TypeVisitor___dirty].s = 0; /* _dirty on <var_v:TypeVisitor> */
9873 RET_LABEL101:(void)0;
9874 }
9875 }
9876 {
9877 nitc__typing___nitc__typing__TypeVisitor___visit_stmt(var_v, var_nblock); /* Direct call typing$TypeVisitor$visit_stmt on <var_v:TypeVisitor>*/
9878 }
9879 {
9880 { /* Inline typing$TypeVisitor$has_loop (var_v) on <var_v:TypeVisitor> */
9881 var105 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___has_loop].s; /* _has_loop on <var_v:TypeVisitor> */
9882 var103 = var105;
9883 RET_LABEL104:(void)0;
9884 }
9885 }
9886 var106 = !var103;
9887 var_107 = var106;
9888 if (var106){
9889 var102 = var_107;
9890 } else {
9891 {
9892 { /* Inline typing$TypeVisitor$dirty (var_v) on <var_v:TypeVisitor> */
9893 var110 = var_v->attrs[COLOR_nitc__typing__TypeVisitor___dirty].s; /* _dirty on <var_v:TypeVisitor> */
9894 var108 = var110;
9895 RET_LABEL109:(void)0;
9896 }
9897 }
9898 var111 = !var108;
9899 var102 = var111;
9900 }
9901 if (var102){
9902 goto BREAK_label112;
9903 } else {
9904 }
9905 }
9906 BREAK_label112: (void)0;
9907 var113 = NEW_nitc__typing__PostTypingVisitor(&type_nitc__typing__PostTypingVisitor);
9908 {
9909 ((void(*)(val* self, val* p0))(var113->class->vft[COLOR_nitc__typing__PostTypingVisitor__type_visitor_61d]))(var113, var_v); /* type_visitor= on <var113:PostTypingVisitor>*/
9910 }
9911 {
9912 ((void(*)(val* self))(var113->class->vft[COLOR_core__kernel__Object__init]))(var113); /* init on <var113:PostTypingVisitor>*/
9913 }
9914 var_post_visitor = var113;
9915 {
9916 nitc___nitc__Visitor___enter_visit(var_post_visitor, self); /* Direct call parser_nodes$Visitor$enter_visit on <var_post_visitor:PostTypingVisitor>*/
9917 }
9918 {
9919 { /* Inline flow$AExpr$after_flow_context (var_nblock) on <var_nblock:nullable AExpr(AExpr)> */
9920 var117 = var_nblock->attrs[COLOR_nitc__flow__AExpr___after_flow_context].val; /* _after_flow_context on <var_nblock:nullable AExpr(AExpr)> */
9921 var115 = var117;
9922 RET_LABEL116:(void)0;
9923 }
9924 }
9925 if (var115 == NULL) {
9926 if(catchStack.cursor >= 0){
9927 longjmp(catchStack.envs[catchStack.cursor], 1);
9928 }
9929 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9930 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 792);
9931 fatal_exit(1);
9932 } else {
9933 var118 = nitc___nitc__FlowContext___is_unreachable(var115);
9934 }
9935 var119 = !var118;
9936 var_120 = var119;
9937 if (var119){
9938 {
9939 { /* Inline model$MSignature$return_mtype (var_msignature) on <var_msignature:nullable MSignature(MSignature)> */
9940 var123 = var_msignature->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:nullable MSignature(MSignature)> */
9941 var121 = var123;
9942 RET_LABEL122:(void)0;
9943 }
9944 }
9945 if (var121 == NULL) {
9946 var124 = 0; /* is null */
9947 } else {
9948 var124 = 1; /* arg is null and recv is not */
9949 }
9950 if (0) {
9951 { /* Inline kernel$Object$!= (var121,((val*)NULL)) on <var121:nullable MType> */
9952 var_other87 = ((val*)NULL);
9953 {
9954 var127 = ((short int(*)(val* self, val* p0))(var121->class->vft[COLOR_core__kernel__Object___61d_61d]))(var121, var_other87); /* == on <var121:nullable MType(MType)>*/
9955 }
9956 var128 = !var127;
9957 var125 = var128;
9958 goto RET_LABEL126;
9959 RET_LABEL126:(void)0;
9960 }
9961 var124 = var125;
9962 }
9963 var114 = var124;
9964 } else {
9965 var114 = var_120;
9966 }
9967 if (var114){
9968 if (likely(varonce129!=NULL)) {
9969 var130 = varonce129;
9970 } else {
9971 var131 = "Error: reached end of function; expected `return` with a value.";
9972 var133 = (val*)(63l<<2|1);
9973 var134 = (val*)(63l<<2|1);
9974 var135 = (val*)((long)(0)<<2|3);
9975 var136 = (val*)((long)(0)<<2|3);
9976 var132 = core__flat___CString___to_s_unsafe(var131, var133, var134, var135, var136);
9977 var130 = var132;
9978 varonce129 = var130;
9979 }
9980 {
9981 nitc__typing___nitc__typing__TypeVisitor___error(var_v, self, var130); /* Direct call typing$TypeVisitor$error on <var_v:TypeVisitor>*/
9982 }
9983 } else {
9984 }
9985 RET_LABEL:;
9986 }