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