76e882e5306769ee725261dac09953eea306544f
[nit.git] / c_src / model.sep.1.c
1 #include "model.sep.0.h"
2 /* method model#Model#mclasses for (self: Model): Array[MClass] */
3 val* model__Model__mclasses(val* self) {
4 val* var /* : Array[MClass] */;
5 val* var1 /* : Array[MClass] */;
6 var1 = self->attrs[COLOR_model__Model___64dmclasses].val; /* @mclasses on <self:Model> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses");
9 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 38);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method model#Model#mclasses for (self: Object): Array[MClass] */
17 val* VIRTUAL_model__Model__mclasses(val* self) {
18 val* var /* : Array[MClass] */;
19 val* var1 /* : Array[MClass] */;
20 var1 = model__Model__mclasses(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method model#Model#mclasses= for (self: Model, Array[MClass]) */
26 void model__Model__mclasses_61d(val* self, val* p0) {
27 self->attrs[COLOR_model__Model___64dmclasses].val = p0; /* @mclasses on <self:Model> */
28 RET_LABEL:;
29 }
30 /* method model#Model#mclasses= for (self: Object, Array[MClass]) */
31 void VIRTUAL_model__Model__mclasses_61d(val* self, val* p0) {
32 model__Model__mclasses_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method model#Model#mproperties for (self: Model): Array[MProperty] */
36 val* model__Model__mproperties(val* self) {
37 val* var /* : Array[MProperty] */;
38 val* var1 /* : Array[MProperty] */;
39 var1 = self->attrs[COLOR_model__Model___64dmproperties].val; /* @mproperties on <self:Model> */
40 if (var1 == NULL) {
41 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties");
42 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 41);
43 show_backtrace(1);
44 }
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method model#Model#mproperties for (self: Object): Array[MProperty] */
50 val* VIRTUAL_model__Model__mproperties(val* self) {
51 val* var /* : Array[MProperty] */;
52 val* var1 /* : Array[MProperty] */;
53 var1 = model__Model__mproperties(self);
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method model#Model#mproperties= for (self: Model, Array[MProperty]) */
59 void model__Model__mproperties_61d(val* self, val* p0) {
60 self->attrs[COLOR_model__Model___64dmproperties].val = p0; /* @mproperties on <self:Model> */
61 RET_LABEL:;
62 }
63 /* method model#Model#mproperties= for (self: Object, Array[MProperty]) */
64 void VIRTUAL_model__Model__mproperties_61d(val* self, val* p0) {
65 model__Model__mproperties_61d(self, p0);
66 RET_LABEL:;
67 }
68 /* method model#Model#mclassdef_hierarchy for (self: Model): POSet[MClassDef] */
69 val* model__Model__mclassdef_hierarchy(val* self) {
70 val* var /* : POSet[MClassDef] */;
71 val* var1 /* : POSet[MClassDef] */;
72 var1 = self->attrs[COLOR_model__Model___64dmclassdef_hierarchy].val; /* @mclassdef_hierarchy on <self:Model> */
73 if (var1 == NULL) {
74 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef_hierarchy");
75 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 44);
76 show_backtrace(1);
77 }
78 var = var1;
79 RET_LABEL:;
80 return var;
81 }
82 /* method model#Model#mclassdef_hierarchy for (self: Object): POSet[MClassDef] */
83 val* VIRTUAL_model__Model__mclassdef_hierarchy(val* self) {
84 val* var /* : POSet[MClassDef] */;
85 val* var1 /* : POSet[MClassDef] */;
86 var1 = model__Model__mclassdef_hierarchy(self);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method model#Model#mclassdef_hierarchy= for (self: Model, POSet[MClassDef]) */
92 void model__Model__mclassdef_hierarchy_61d(val* self, val* p0) {
93 self->attrs[COLOR_model__Model___64dmclassdef_hierarchy].val = p0; /* @mclassdef_hierarchy on <self:Model> */
94 RET_LABEL:;
95 }
96 /* method model#Model#mclassdef_hierarchy= for (self: Object, POSet[MClassDef]) */
97 void VIRTUAL_model__Model__mclassdef_hierarchy_61d(val* self, val* p0) {
98 model__Model__mclassdef_hierarchy_61d(self, p0);
99 RET_LABEL:;
100 }
101 /* method model#Model#intro_mtype_specialization_hierarchy for (self: Model): POSet[MClassType] */
102 val* model__Model__intro_mtype_specialization_hierarchy(val* self) {
103 val* var /* : POSet[MClassType] */;
104 val* var1 /* : POSet[MClassType] */;
105 var1 = self->attrs[COLOR_model__Model___64dintro_mtype_specialization_hierarchy].val; /* @intro_mtype_specialization_hierarchy on <self:Model> */
106 if (var1 == NULL) {
107 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mtype_specialization_hierarchy");
108 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 50);
109 show_backtrace(1);
110 }
111 var = var1;
112 RET_LABEL:;
113 return var;
114 }
115 /* method model#Model#intro_mtype_specialization_hierarchy for (self: Object): POSet[MClassType] */
116 val* VIRTUAL_model__Model__intro_mtype_specialization_hierarchy(val* self) {
117 val* var /* : POSet[MClassType] */;
118 val* var1 /* : POSet[MClassType] */;
119 var1 = model__Model__intro_mtype_specialization_hierarchy(self);
120 var = var1;
121 RET_LABEL:;
122 return var;
123 }
124 /* method model#Model#intro_mtype_specialization_hierarchy= for (self: Model, POSet[MClassType]) */
125 void model__Model__intro_mtype_specialization_hierarchy_61d(val* self, val* p0) {
126 self->attrs[COLOR_model__Model___64dintro_mtype_specialization_hierarchy].val = p0; /* @intro_mtype_specialization_hierarchy on <self:Model> */
127 RET_LABEL:;
128 }
129 /* method model#Model#intro_mtype_specialization_hierarchy= for (self: Object, POSet[MClassType]) */
130 void VIRTUAL_model__Model__intro_mtype_specialization_hierarchy_61d(val* self, val* p0) {
131 model__Model__intro_mtype_specialization_hierarchy_61d(self, p0);
132 RET_LABEL:;
133 }
134 /* method model#Model#full_mtype_specialization_hierarchy for (self: Model): POSet[MClassType] */
135 val* model__Model__full_mtype_specialization_hierarchy(val* self) {
136 val* var /* : POSet[MClassType] */;
137 val* var1 /* : POSet[MClassType] */;
138 var1 = self->attrs[COLOR_model__Model___64dfull_mtype_specialization_hierarchy].val; /* @full_mtype_specialization_hierarchy on <self:Model> */
139 if (var1 == NULL) {
140 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @full_mtype_specialization_hierarchy");
141 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 61);
142 show_backtrace(1);
143 }
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method model#Model#full_mtype_specialization_hierarchy for (self: Object): POSet[MClassType] */
149 val* VIRTUAL_model__Model__full_mtype_specialization_hierarchy(val* self) {
150 val* var /* : POSet[MClassType] */;
151 val* var1 /* : POSet[MClassType] */;
152 var1 = model__Model__full_mtype_specialization_hierarchy(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method model#Model#full_mtype_specialization_hierarchy= for (self: Model, POSet[MClassType]) */
158 void model__Model__full_mtype_specialization_hierarchy_61d(val* self, val* p0) {
159 self->attrs[COLOR_model__Model___64dfull_mtype_specialization_hierarchy].val = p0; /* @full_mtype_specialization_hierarchy on <self:Model> */
160 RET_LABEL:;
161 }
162 /* method model#Model#full_mtype_specialization_hierarchy= for (self: Object, POSet[MClassType]) */
163 void VIRTUAL_model__Model__full_mtype_specialization_hierarchy_61d(val* self, val* p0) {
164 model__Model__full_mtype_specialization_hierarchy_61d(self, p0);
165 RET_LABEL:;
166 }
167 /* method model#Model#mclasses_by_name for (self: Model): MultiHashMap[String, MClass] */
168 val* model__Model__mclasses_by_name(val* self) {
169 val* var /* : MultiHashMap[String, MClass] */;
170 val* var1 /* : MultiHashMap[String, MClass] */;
171 var1 = self->attrs[COLOR_model__Model___64dmclasses_by_name].val; /* @mclasses_by_name on <self:Model> */
172 if (var1 == NULL) {
173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclasses_by_name");
174 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 70);
175 show_backtrace(1);
176 }
177 var = var1;
178 RET_LABEL:;
179 return var;
180 }
181 /* method model#Model#mclasses_by_name for (self: Object): MultiHashMap[String, MClass] */
182 val* VIRTUAL_model__Model__mclasses_by_name(val* self) {
183 val* var /* : MultiHashMap[String, MClass] */;
184 val* var1 /* : MultiHashMap[String, MClass] */;
185 var1 = model__Model__mclasses_by_name(self);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method model#Model#mclasses_by_name= for (self: Model, MultiHashMap[String, MClass]) */
191 void model__Model__mclasses_by_name_61d(val* self, val* p0) {
192 self->attrs[COLOR_model__Model___64dmclasses_by_name].val = p0; /* @mclasses_by_name on <self:Model> */
193 RET_LABEL:;
194 }
195 /* method model#Model#mclasses_by_name= for (self: Object, MultiHashMap[String, MClass]) */
196 void VIRTUAL_model__Model__mclasses_by_name_61d(val* self, val* p0) {
197 model__Model__mclasses_by_name_61d(self, p0);
198 RET_LABEL:;
199 }
200 /* method model#Model#get_mclasses_by_name for (self: Model, String): nullable Array[MClass] */
201 val* model__Model__get_mclasses_by_name(val* self, val* p0) {
202 val* var /* : nullable Array[MClass] */;
203 val* var_name /* var name: String */;
204 val* var1 /* : MultiHashMap[String, MClass] */;
205 short int var2 /* : Bool */;
206 val* var3 /* : MultiHashMap[String, MClass] */;
207 val* var4 /* : nullable Object */;
208 val* var5 /* : null */;
209 var_name = p0;
210 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mclasses_by_name]))(self) /* mclasses_by_name on <self:Model>*/;
211 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on <var1:MultiHashMap[String, MClass]>*/;
212 if (var2){
213 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mclasses_by_name]))(self) /* mclasses_by_name on <self:Model>*/;
214 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_name) /* [] on <var3:MultiHashMap[String, MClass]>*/;
215 var = var4;
216 goto RET_LABEL;
217 } else {
218 var5 = NULL;
219 var = var5;
220 goto RET_LABEL;
221 }
222 RET_LABEL:;
223 return var;
224 }
225 /* method model#Model#get_mclasses_by_name for (self: Object, String): nullable Array[MClass] */
226 val* VIRTUAL_model__Model__get_mclasses_by_name(val* self, val* p0) {
227 val* var /* : nullable Array[MClass] */;
228 val* var1 /* : nullable Array[MClass] */;
229 var1 = model__Model__get_mclasses_by_name(self, p0);
230 var = var1;
231 RET_LABEL:;
232 return var;
233 }
234 /* method model#Model#mproperties_by_name for (self: Model): MultiHashMap[String, MProperty] */
235 val* model__Model__mproperties_by_name(val* self) {
236 val* var /* : MultiHashMap[String, MProperty] */;
237 val* var1 /* : MultiHashMap[String, MProperty] */;
238 var1 = self->attrs[COLOR_model__Model___64dmproperties_by_name].val; /* @mproperties_by_name on <self:Model> */
239 if (var1 == NULL) {
240 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperties_by_name");
241 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 88);
242 show_backtrace(1);
243 }
244 var = var1;
245 RET_LABEL:;
246 return var;
247 }
248 /* method model#Model#mproperties_by_name for (self: Object): MultiHashMap[String, MProperty] */
249 val* VIRTUAL_model__Model__mproperties_by_name(val* self) {
250 val* var /* : MultiHashMap[String, MProperty] */;
251 val* var1 /* : MultiHashMap[String, MProperty] */;
252 var1 = model__Model__mproperties_by_name(self);
253 var = var1;
254 RET_LABEL:;
255 return var;
256 }
257 /* method model#Model#mproperties_by_name= for (self: Model, MultiHashMap[String, MProperty]) */
258 void model__Model__mproperties_by_name_61d(val* self, val* p0) {
259 self->attrs[COLOR_model__Model___64dmproperties_by_name].val = p0; /* @mproperties_by_name on <self:Model> */
260 RET_LABEL:;
261 }
262 /* method model#Model#mproperties_by_name= for (self: Object, MultiHashMap[String, MProperty]) */
263 void VIRTUAL_model__Model__mproperties_by_name_61d(val* self, val* p0) {
264 model__Model__mproperties_by_name_61d(self, p0);
265 RET_LABEL:;
266 }
267 /* method model#Model#get_mproperties_by_name for (self: Model, String): nullable Array[MProperty] */
268 val* model__Model__get_mproperties_by_name(val* self, val* p0) {
269 val* var /* : nullable Array[MProperty] */;
270 val* var_name /* var name: String */;
271 val* var1 /* : MultiHashMap[String, MProperty] */;
272 short int var2 /* : Bool */;
273 short int var3 /* : Bool */;
274 val* var4 /* : null */;
275 val* var5 /* : MultiHashMap[String, MProperty] */;
276 val* var6 /* : nullable Object */;
277 var_name = p0;
278 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mproperties_by_name]))(self) /* mproperties_by_name on <self:Model>*/;
279 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_name) /* has_key on <var1:MultiHashMap[String, MProperty]>*/;
280 var3 = !var2;
281 if (var3){
282 var4 = NULL;
283 var = var4;
284 goto RET_LABEL;
285 } else {
286 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__Model__mproperties_by_name]))(self) /* mproperties_by_name on <self:Model>*/;
287 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_name) /* [] on <var5:MultiHashMap[String, MProperty]>*/;
288 var = var6;
289 goto RET_LABEL;
290 }
291 RET_LABEL:;
292 return var;
293 }
294 /* method model#Model#get_mproperties_by_name for (self: Object, String): nullable Array[MProperty] */
295 val* VIRTUAL_model__Model__get_mproperties_by_name(val* self, val* p0) {
296 val* var /* : nullable Array[MProperty] */;
297 val* var1 /* : nullable Array[MProperty] */;
298 var1 = model__Model__get_mproperties_by_name(self, p0);
299 var = var1;
300 RET_LABEL:;
301 return var;
302 }
303 /* method model#Model#null_type for (self: Model): MNullType */
304 val* model__Model__null_type(val* self) {
305 val* var /* : MNullType */;
306 val* var1 /* : MNullType */;
307 var1 = self->attrs[COLOR_model__Model___64dnull_type].val; /* @null_type on <self:Model> */
308 if (var1 == NULL) {
309 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @null_type");
310 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 106);
311 show_backtrace(1);
312 }
313 var = var1;
314 RET_LABEL:;
315 return var;
316 }
317 /* method model#Model#null_type for (self: Object): MNullType */
318 val* VIRTUAL_model__Model__null_type(val* self) {
319 val* var /* : MNullType */;
320 val* var1 /* : MNullType */;
321 var1 = model__Model__null_type(self);
322 var = var1;
323 RET_LABEL:;
324 return var;
325 }
326 /* method model#Model#null_type= for (self: Model, MNullType) */
327 void model__Model__null_type_61d(val* self, val* p0) {
328 self->attrs[COLOR_model__Model___64dnull_type].val = p0; /* @null_type on <self:Model> */
329 RET_LABEL:;
330 }
331 /* method model#Model#null_type= for (self: Object, MNullType) */
332 void VIRTUAL_model__Model__null_type_61d(val* self, val* p0) {
333 model__Model__null_type_61d(self, p0);
334 RET_LABEL:;
335 }
336 /* method model#MModule#intro_mclasses for (self: MModule): Array[MClass] */
337 val* model__MModule__intro_mclasses(val* self) {
338 val* var /* : Array[MClass] */;
339 val* var1 /* : Array[MClass] */;
340 var1 = self->attrs[COLOR_model__MModule___64dintro_mclasses].val; /* @intro_mclasses on <self:MModule> */
341 if (var1 == NULL) {
342 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclasses");
343 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 111);
344 show_backtrace(1);
345 }
346 var = var1;
347 RET_LABEL:;
348 return var;
349 }
350 /* method model#MModule#intro_mclasses for (self: Object): Array[MClass] */
351 val* VIRTUAL_model__MModule__intro_mclasses(val* self) {
352 val* var /* : Array[MClass] */;
353 val* var1 /* : Array[MClass] */;
354 var1 = model__MModule__intro_mclasses(self);
355 var = var1;
356 RET_LABEL:;
357 return var;
358 }
359 /* method model#MModule#intro_mclasses= for (self: MModule, Array[MClass]) */
360 void model__MModule__intro_mclasses_61d(val* self, val* p0) {
361 self->attrs[COLOR_model__MModule___64dintro_mclasses].val = p0; /* @intro_mclasses on <self:MModule> */
362 RET_LABEL:;
363 }
364 /* method model#MModule#intro_mclasses= for (self: Object, Array[MClass]) */
365 void VIRTUAL_model__MModule__intro_mclasses_61d(val* self, val* p0) {
366 model__MModule__intro_mclasses_61d(self, p0);
367 RET_LABEL:;
368 }
369 /* method model#MModule#mclassdefs for (self: MModule): Array[MClassDef] */
370 val* model__MModule__mclassdefs(val* self) {
371 val* var /* : Array[MClassDef] */;
372 val* var1 /* : Array[MClassDef] */;
373 var1 = self->attrs[COLOR_model__MModule___64dmclassdefs].val; /* @mclassdefs on <self:MModule> */
374 if (var1 == NULL) {
375 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
376 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 114);
377 show_backtrace(1);
378 }
379 var = var1;
380 RET_LABEL:;
381 return var;
382 }
383 /* method model#MModule#mclassdefs for (self: Object): Array[MClassDef] */
384 val* VIRTUAL_model__MModule__mclassdefs(val* self) {
385 val* var /* : Array[MClassDef] */;
386 val* var1 /* : Array[MClassDef] */;
387 var1 = model__MModule__mclassdefs(self);
388 var = var1;
389 RET_LABEL:;
390 return var;
391 }
392 /* method model#MModule#mclassdefs= for (self: MModule, Array[MClassDef]) */
393 void model__MModule__mclassdefs_61d(val* self, val* p0) {
394 self->attrs[COLOR_model__MModule___64dmclassdefs].val = p0; /* @mclassdefs on <self:MModule> */
395 RET_LABEL:;
396 }
397 /* method model#MModule#mclassdefs= for (self: Object, Array[MClassDef]) */
398 void VIRTUAL_model__MModule__mclassdefs_61d(val* self, val* p0) {
399 model__MModule__mclassdefs_61d(self, p0);
400 RET_LABEL:;
401 }
402 /* method model#MModule#has_mclass for (self: MModule, MClass): Bool */
403 short int model__MModule__has_mclass(val* self, val* p0) {
404 short int var /* : Bool */;
405 val* var_mclass /* var mclass: MClass */;
406 val* var1 /* : POSetElement[MModule] */;
407 val* var2 /* : MModule */;
408 short int var3 /* : Bool */;
409 var_mclass = p0;
410 var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
411 var2 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
412 var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_poset__POSetElement___60d_61d]))(var1, var2) /* <= on <var1:POSetElement[MModule]>*/;
413 var = var3;
414 goto RET_LABEL;
415 RET_LABEL:;
416 return var;
417 }
418 /* method model#MModule#has_mclass for (self: Object, MClass): Bool */
419 short int VIRTUAL_model__MModule__has_mclass(val* self, val* p0) {
420 short int var /* : Bool */;
421 short int var1 /* : Bool */;
422 var1 = model__MModule__has_mclass(self, p0);
423 var = var1;
424 RET_LABEL:;
425 return var;
426 }
427 /* method model#MModule#flatten_mclass_hierarchy for (self: MModule): POSet[MClass] */
428 val* model__MModule__flatten_mclass_hierarchy(val* self) {
429 val* var /* : POSet[MClass] */;
430 val* var1 /* : nullable POSet[MClass] */;
431 val* var_res /* var res: nullable POSet[MClass] */;
432 val* var2 /* : null */;
433 short int var3 /* : Bool */;
434 val* var4 /* : POSet[MClass] */;
435 val* var5 /* : POSetElement[MModule] */;
436 val* var6 /* : Collection[Object] */;
437 val* var7 /* : Iterator[nullable Object] */;
438 short int var8 /* : Bool */;
439 val* var9 /* : nullable Object */;
440 val* var_m /* var m: MModule */;
441 val* var10 /* : Array[MClassDef] */;
442 val* var11 /* : Iterator[nullable Object] */;
443 short int var12 /* : Bool */;
444 val* var13 /* : nullable Object */;
445 val* var_cd /* var cd: MClassDef */;
446 val* var14 /* : MClass */;
447 val* var_c /* var c: MClass */;
448 val* var15 /* : POSetElement[Object] */;
449 val* var16 /* : Array[MClassType] */;
450 val* var17 /* : Iterator[nullable Object] */;
451 short int var18 /* : Bool */;
452 val* var19 /* : nullable Object */;
453 val* var_s /* var s: MClassType */;
454 val* var20 /* : MClass */;
455 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy_cache]))(self) /* flatten_mclass_hierarchy_cache on <self:MModule>*/;
456 var_res = var1;
457 var2 = NULL;
458 if (var_res == NULL) {
459 var3 = 0; /* is null */
460 } else {
461 var3 = 1; /* arg is null and recv is not */
462 }
463 if (var3){
464 var = var_res;
465 goto RET_LABEL;
466 } else {
467 }
468 var4 = NEW_poset__POSet(&type_poset__POSetmodel__MClass);
469 ((void (*)(val*))(var4->class->vft[COLOR_poset__POSet__init]))(var4) /* init on <var4:POSet[MClass]>*/;
470 var_res = var4;
471 var5 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
472 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_poset__POSetElement__greaters]))(var5) /* greaters on <var5:POSetElement[MModule]>*/;
473 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Collection[Object](Collection[MModule])>*/;
474 for(;;) {
475 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
476 if(!var8) break;
477 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
478 var_m = var9;
479 var10 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MModule__mclassdefs]))(var_m) /* mclassdefs on <var_m:MModule>*/;
480 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MClassDef]>*/;
481 for(;;) {
482 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
483 if(!var12) break;
484 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
485 var_cd = var13;
486 var14 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__mclass]))(var_cd) /* mclass on <var_cd:MClassDef>*/;
487 var_c = var14;
488 var15 = ((val* (*)(val*, val*))(var_res->class->vft[COLOR_poset__POSet__add_node]))(var_res, var_c) /* add_node on <var_res:nullable POSet[MClass](POSet[MClass])>*/;
489 var15;
490 var16 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__supertypes]))(var_cd) /* supertypes on <var_cd:MClassDef>*/;
491 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:Array[MClassType]>*/;
492 for(;;) {
493 var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
494 if(!var18) break;
495 var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
496 var_s = var19;
497 var20 = ((val* (*)(val*))(var_s->class->vft[COLOR_model__MClassType__mclass]))(var_s) /* mclass on <var_s:MClassType>*/;
498 ((void (*)(val*, val*, val*))(var_res->class->vft[COLOR_poset__POSet__add_edge]))(var_res, var_c, var20) /* add_edge on <var_res:nullable POSet[MClass](POSet[MClass])>*/;
499 CONTINUE_label: (void)0;
500 ((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
501 }
502 BREAK_label: (void)0;
503 CONTINUE_label21: (void)0;
504 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
505 }
506 BREAK_label21: (void)0;
507 CONTINUE_label22: (void)0;
508 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
509 }
510 BREAK_label22: (void)0;
511 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy_cache_61d]))(self, var_res) /* flatten_mclass_hierarchy_cache= on <self:MModule>*/;
512 var = var_res;
513 goto RET_LABEL;
514 RET_LABEL:;
515 return var;
516 }
517 /* method model#MModule#flatten_mclass_hierarchy for (self: Object): POSet[MClass] */
518 val* VIRTUAL_model__MModule__flatten_mclass_hierarchy(val* self) {
519 val* var /* : POSet[MClass] */;
520 val* var1 /* : POSet[MClass] */;
521 var1 = model__MModule__flatten_mclass_hierarchy(self);
522 var = var1;
523 RET_LABEL:;
524 return var;
525 }
526 /* method model#MModule#linearize_mclasses for (self: MModule, Array[MClass]) */
527 void model__MModule__linearize_mclasses(val* self, val* p0) {
528 val* var_mclasses /* var mclasses: Array[MClass] */;
529 val* var /* : POSet[MClass] */;
530 var_mclasses = p0;
531 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(self) /* flatten_mclass_hierarchy on <self:MModule>*/;
532 ((void (*)(val*, val*))(var->class->vft[COLOR_sorter__AbstractSorter__sort]))(var, var_mclasses) /* sort on <var:POSet[MClass]>*/;
533 RET_LABEL:;
534 }
535 /* method model#MModule#linearize_mclasses for (self: Object, Array[MClass]) */
536 void VIRTUAL_model__MModule__linearize_mclasses(val* self, val* p0) {
537 model__MModule__linearize_mclasses(self, p0);
538 RET_LABEL:;
539 }
540 /* method model#MModule#linearize_mclassdefs for (self: MModule, Array[MClassDef]) */
541 void model__MModule__linearize_mclassdefs(val* self, val* p0) {
542 val* var_mclassdefs /* var mclassdefs: Array[MClassDef] */;
543 val* var /* : MClassDefSorter */;
544 val* var_sorter /* var sorter: MClassDefSorter */;
545 var_mclassdefs = p0;
546 var = NEW_model__MClassDefSorter(&type_model__MClassDefSorter);
547 ((void (*)(val*, val*))(var->class->vft[COLOR_model__MClassDefSorter__init]))(var, self) /* init on <var:MClassDefSorter>*/;
548 var_sorter = var;
549 ((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mclassdefs) /* sort on <var_sorter:MClassDefSorter>*/;
550 RET_LABEL:;
551 }
552 /* method model#MModule#linearize_mclassdefs for (self: Object, Array[MClassDef]) */
553 void VIRTUAL_model__MModule__linearize_mclassdefs(val* self, val* p0) {
554 model__MModule__linearize_mclassdefs(self, p0);
555 RET_LABEL:;
556 }
557 /* method model#MModule#linearize_mpropdefs for (self: MModule, Array[MPropDef]) */
558 void model__MModule__linearize_mpropdefs(val* self, val* p0) {
559 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
560 val* var /* : MPropDefSorter */;
561 val* var_sorter /* var sorter: MPropDefSorter */;
562 var_mpropdefs = p0;
563 var = NEW_model__MPropDefSorter(&type_model__MPropDefSorter);
564 ((void (*)(val*, val*))(var->class->vft[COLOR_model__MPropDefSorter__init]))(var, self) /* init on <var:MPropDefSorter>*/;
565 var_sorter = var;
566 ((void (*)(val*, val*))(var_sorter->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_sorter, var_mpropdefs) /* sort on <var_sorter:MPropDefSorter>*/;
567 RET_LABEL:;
568 }
569 /* method model#MModule#linearize_mpropdefs for (self: Object, Array[MPropDef]) */
570 void VIRTUAL_model__MModule__linearize_mpropdefs(val* self, val* p0) {
571 model__MModule__linearize_mpropdefs(self, p0);
572 RET_LABEL:;
573 }
574 /* method model#MModule#flatten_mclass_hierarchy_cache for (self: MModule): nullable POSet[MClass] */
575 val* model__MModule__flatten_mclass_hierarchy_cache(val* self) {
576 val* var /* : nullable POSet[MClass] */;
577 val* var1 /* : nullable POSet[MClass] */;
578 var1 = self->attrs[COLOR_model__MModule___64dflatten_mclass_hierarchy_cache].val; /* @flatten_mclass_hierarchy_cache on <self:MModule> */
579 var = var1;
580 RET_LABEL:;
581 return var;
582 }
583 /* method model#MModule#flatten_mclass_hierarchy_cache for (self: Object): nullable POSet[MClass] */
584 val* VIRTUAL_model__MModule__flatten_mclass_hierarchy_cache(val* self) {
585 val* var /* : nullable POSet[MClass] */;
586 val* var1 /* : nullable POSet[MClass] */;
587 var1 = model__MModule__flatten_mclass_hierarchy_cache(self);
588 var = var1;
589 RET_LABEL:;
590 return var;
591 }
592 /* method model#MModule#flatten_mclass_hierarchy_cache= for (self: MModule, nullable POSet[MClass]) */
593 void model__MModule__flatten_mclass_hierarchy_cache_61d(val* self, val* p0) {
594 self->attrs[COLOR_model__MModule___64dflatten_mclass_hierarchy_cache].val = p0; /* @flatten_mclass_hierarchy_cache on <self:MModule> */
595 RET_LABEL:;
596 }
597 /* method model#MModule#flatten_mclass_hierarchy_cache= for (self: Object, nullable POSet[MClass]) */
598 void VIRTUAL_model__MModule__flatten_mclass_hierarchy_cache_61d(val* self, val* p0) {
599 model__MModule__flatten_mclass_hierarchy_cache_61d(self, p0);
600 RET_LABEL:;
601 }
602 /* method model#MModule#object_type for (self: MModule): MClassType */
603 val* model__MModule__object_type(val* self) {
604 val* var /* : MClassType */;
605 val* var1 /* : nullable MClassType */;
606 val* var_res /* var res: nullable MClassType */;
607 val* var2 /* : null */;
608 short int var3 /* : Bool */;
609 static val* varonce;
610 val* var4 /* : String */;
611 char* var5 /* : NativeString */;
612 long var6 /* : Int */;
613 val* var7 /* : String */;
614 val* var8 /* : MClass */;
615 val* var9 /* : MClassType */;
616 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__object_type_cache]))(self) /* object_type_cache on <self:MModule>*/;
617 var_res = var1;
618 var2 = NULL;
619 if (var_res == NULL) {
620 var3 = 0; /* is null */
621 } else {
622 var3 = 1; /* arg is null and recv is not */
623 }
624 if (var3){
625 var = var_res;
626 goto RET_LABEL;
627 } else {
628 }
629 if (varonce) {
630 var4 = varonce;
631 } else {
632 var5 = "Object";
633 var6 = 6;
634 var7 = string__NativeString__to_s_with_length(var5, var6);
635 var4 = var7;
636 varonce = var4;
637 }
638 var8 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var4) /* get_primitive_class on <self:MModule>*/;
639 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclass_type]))(var8) /* mclass_type on <var8:MClass>*/;
640 var_res = var9;
641 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__object_type_cache_61d]))(self, var_res) /* object_type_cache= on <self:MModule>*/;
642 var = var_res;
643 goto RET_LABEL;
644 RET_LABEL:;
645 return var;
646 }
647 /* method model#MModule#object_type for (self: Object): MClassType */
648 val* VIRTUAL_model__MModule__object_type(val* self) {
649 val* var /* : MClassType */;
650 val* var1 /* : MClassType */;
651 var1 = model__MModule__object_type(self);
652 var = var1;
653 RET_LABEL:;
654 return var;
655 }
656 /* method model#MModule#object_type_cache for (self: MModule): nullable MClassType */
657 val* model__MModule__object_type_cache(val* self) {
658 val* var /* : nullable MClassType */;
659 val* var1 /* : nullable MClassType */;
660 var1 = self->attrs[COLOR_model__MModule___64dobject_type_cache].val; /* @object_type_cache on <self:MModule> */
661 var = var1;
662 RET_LABEL:;
663 return var;
664 }
665 /* method model#MModule#object_type_cache for (self: Object): nullable MClassType */
666 val* VIRTUAL_model__MModule__object_type_cache(val* self) {
667 val* var /* : nullable MClassType */;
668 val* var1 /* : nullable MClassType */;
669 var1 = model__MModule__object_type_cache(self);
670 var = var1;
671 RET_LABEL:;
672 return var;
673 }
674 /* method model#MModule#object_type_cache= for (self: MModule, nullable MClassType) */
675 void model__MModule__object_type_cache_61d(val* self, val* p0) {
676 self->attrs[COLOR_model__MModule___64dobject_type_cache].val = p0; /* @object_type_cache on <self:MModule> */
677 RET_LABEL:;
678 }
679 /* method model#MModule#object_type_cache= for (self: Object, nullable MClassType) */
680 void VIRTUAL_model__MModule__object_type_cache_61d(val* self, val* p0) {
681 model__MModule__object_type_cache_61d(self, p0);
682 RET_LABEL:;
683 }
684 /* method model#MModule#bool_type for (self: MModule): MClassType */
685 val* model__MModule__bool_type(val* self) {
686 val* var /* : MClassType */;
687 val* var1 /* : nullable MClassType */;
688 val* var_res /* var res: nullable MClassType */;
689 val* var2 /* : null */;
690 short int var3 /* : Bool */;
691 static val* varonce;
692 val* var4 /* : String */;
693 char* var5 /* : NativeString */;
694 long var6 /* : Int */;
695 val* var7 /* : String */;
696 val* var8 /* : MClass */;
697 val* var9 /* : MClassType */;
698 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MModule__bool_type_cache]))(self) /* bool_type_cache on <self:MModule>*/;
699 var_res = var1;
700 var2 = NULL;
701 if (var_res == NULL) {
702 var3 = 0; /* is null */
703 } else {
704 var3 = 1; /* arg is null and recv is not */
705 }
706 if (var3){
707 var = var_res;
708 goto RET_LABEL;
709 } else {
710 }
711 if (varonce) {
712 var4 = varonce;
713 } else {
714 var5 = "Bool";
715 var6 = 4;
716 var7 = string__NativeString__to_s_with_length(var5, var6);
717 var4 = var7;
718 varonce = var4;
719 }
720 var8 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var4) /* get_primitive_class on <self:MModule>*/;
721 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclass_type]))(var8) /* mclass_type on <var8:MClass>*/;
722 var_res = var9;
723 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MModule__bool_type_cache_61d]))(self, var_res) /* bool_type_cache= on <self:MModule>*/;
724 var = var_res;
725 goto RET_LABEL;
726 RET_LABEL:;
727 return var;
728 }
729 /* method model#MModule#bool_type for (self: Object): MClassType */
730 val* VIRTUAL_model__MModule__bool_type(val* self) {
731 val* var /* : MClassType */;
732 val* var1 /* : MClassType */;
733 var1 = model__MModule__bool_type(self);
734 var = var1;
735 RET_LABEL:;
736 return var;
737 }
738 /* method model#MModule#bool_type_cache for (self: MModule): nullable MClassType */
739 val* model__MModule__bool_type_cache(val* self) {
740 val* var /* : nullable MClassType */;
741 val* var1 /* : nullable MClassType */;
742 var1 = self->attrs[COLOR_model__MModule___64dbool_type_cache].val; /* @bool_type_cache on <self:MModule> */
743 var = var1;
744 RET_LABEL:;
745 return var;
746 }
747 /* method model#MModule#bool_type_cache for (self: Object): nullable MClassType */
748 val* VIRTUAL_model__MModule__bool_type_cache(val* self) {
749 val* var /* : nullable MClassType */;
750 val* var1 /* : nullable MClassType */;
751 var1 = model__MModule__bool_type_cache(self);
752 var = var1;
753 RET_LABEL:;
754 return var;
755 }
756 /* method model#MModule#bool_type_cache= for (self: MModule, nullable MClassType) */
757 void model__MModule__bool_type_cache_61d(val* self, val* p0) {
758 self->attrs[COLOR_model__MModule___64dbool_type_cache].val = p0; /* @bool_type_cache on <self:MModule> */
759 RET_LABEL:;
760 }
761 /* method model#MModule#bool_type_cache= for (self: Object, nullable MClassType) */
762 void VIRTUAL_model__MModule__bool_type_cache_61d(val* self, val* p0) {
763 model__MModule__bool_type_cache_61d(self, p0);
764 RET_LABEL:;
765 }
766 /* method model#MModule#sys_type for (self: MModule): nullable MClassType */
767 val* model__MModule__sys_type(val* self) {
768 val* var /* : nullable MClassType */;
769 val* var1 /* : Model */;
770 static val* varonce;
771 val* var2 /* : String */;
772 char* var3 /* : NativeString */;
773 long var4 /* : Int */;
774 val* var5 /* : String */;
775 val* var6 /* : nullable Array[MClass] */;
776 val* var_clas /* var clas: nullable Array[MClass] */;
777 val* var7 /* : null */;
778 short int var8 /* : Bool */;
779 val* var9 /* : null */;
780 static val* varonce10;
781 val* var11 /* : String */;
782 char* var12 /* : NativeString */;
783 long var13 /* : Int */;
784 val* var14 /* : String */;
785 val* var15 /* : MClass */;
786 val* var16 /* : MClassType */;
787 var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
788 if (varonce) {
789 var2 = varonce;
790 } else {
791 var3 = "Sys";
792 var4 = 3;
793 var5 = string__NativeString__to_s_with_length(var3, var4);
794 var2 = var5;
795 varonce = var2;
796 }
797 var6 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var2) /* get_mclasses_by_name on <var1:Model>*/;
798 var_clas = var6;
799 var7 = NULL;
800 if (var_clas == NULL) {
801 var8 = 1; /* is null */
802 } else {
803 var8 = 0; /* arg is null but recv is not */
804 }
805 if (var8){
806 var9 = NULL;
807 var = var9;
808 goto RET_LABEL;
809 } else {
810 }
811 if (varonce10) {
812 var11 = varonce10;
813 } else {
814 var12 = "Sys";
815 var13 = 3;
816 var14 = string__NativeString__to_s_with_length(var12, var13);
817 var11 = var14;
818 varonce10 = var11;
819 }
820 var15 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MModule__get_primitive_class]))(self, var11) /* get_primitive_class on <self:MModule>*/;
821 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__mclass_type]))(var15) /* mclass_type on <var15:MClass>*/;
822 var = var16;
823 goto RET_LABEL;
824 RET_LABEL:;
825 return var;
826 }
827 /* method model#MModule#sys_type for (self: Object): nullable MClassType */
828 val* VIRTUAL_model__MModule__sys_type(val* self) {
829 val* var /* : nullable MClassType */;
830 val* var1 /* : nullable MClassType */;
831 var1 = model__MModule__sys_type(self);
832 var = var1;
833 RET_LABEL:;
834 return var;
835 }
836 /* method model#MModule#get_primitive_class for (self: MModule, String): MClass */
837 val* model__MModule__get_primitive_class(val* self, val* p0) {
838 val* var /* : MClass */;
839 val* var_name /* var name: String */;
840 val* var1 /* : Model */;
841 val* var2 /* : nullable Array[MClass] */;
842 val* var_cla /* var cla: nullable Array[MClass] */;
843 val* var3 /* : null */;
844 short int var4 /* : Bool */;
845 static val* varonce;
846 val* var5 /* : String */;
847 char* var6 /* : NativeString */;
848 long var7 /* : Int */;
849 val* var8 /* : String */;
850 short int var9 /* : Bool */;
851 val* var10 /* : MClass */;
852 long var11 /* : Int */;
853 val* var12 /* : MClassKind */;
854 val* var13 /* : MVisibility */;
855 val* var_c /* var c: MClass */;
856 val* var14 /* : MClassDef */;
857 val* var15 /* : MClassType */;
858 val* var16 /* : Location */;
859 val* var17 /* : null */;
860 long var18 /* : Int */;
861 long var19 /* : Int */;
862 long var20 /* : Int */;
863 long var21 /* : Int */;
864 val* var22 /* : Array[String] */;
865 val* var_cladef /* var cladef: MClassDef */;
866 static val* varonce23;
867 val* var24 /* : String */;
868 char* var25 /* : NativeString */;
869 long var26 /* : Int */;
870 val* var27 /* : String */;
871 val* var28 /* : Array[Object] */;
872 long var29 /* : Int */;
873 val* var30 /* : NativeArray[Object] */;
874 val* var31 /* : String */;
875 long var32 /* : Int */;
876 long var33 /* : Int */;
877 long var34 /* : Int */;
878 short int var35 /* : Bool */;
879 short int var37 /* : Bool */;
880 static val* varonce38;
881 val* var39 /* : String */;
882 char* var40 /* : NativeString */;
883 long var41 /* : Int */;
884 val* var42 /* : String */;
885 val* var43 /* : String */;
886 val* var44 /* : nullable Object */;
887 var_name = p0;
888 var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
889 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var1, var_name) /* get_mclasses_by_name on <var1:Model>*/;
890 var_cla = var2;
891 var3 = NULL;
892 if (var_cla == NULL) {
893 var4 = 1; /* is null */
894 } else {
895 var4 = 0; /* arg is null but recv is not */
896 }
897 if (var4){
898 if (varonce) {
899 var5 = varonce;
900 } else {
901 var6 = "Bool";
902 var7 = 4;
903 var8 = string__NativeString__to_s_with_length(var6, var7);
904 var5 = var8;
905 varonce = var5;
906 }
907 var9 = ((short int (*)(val*, val*))(var_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_name, var5) /* == on <var_name:String>*/;
908 if (var9){
909 var10 = NEW_model__MClass(&type_model__MClass);
910 var11 = 0;
911 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MModule>*/;
912 var13 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__public_visibility]))(self) /* public_visibility on <self:MModule>*/;
913 ((void (*)(val*, val*, val*, long, val*, val*))(var10->class->vft[COLOR_model__MClass__init]))(var10, self, var_name, var11, var12, var13) /* init on <var10:MClass>*/;
914 var_c = var10;
915 var14 = NEW_model__MClassDef(&type_model__MClassDef);
916 var15 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
917 var16 = NEW_location__Location(&type_location__Location);
918 var17 = NULL;
919 var18 = 0;
920 var19 = 0;
921 var20 = 0;
922 var21 = 0;
923 ((void (*)(val*, val*, long, long, long, long))(var16->class->vft[COLOR_location__Location__init]))(var16, var17, var18, var19, var20, var21) /* init on <var16:Location>*/;
924 var22 = NEW_array__Array(&type_array__Arraystring__String);
925 ((void (*)(val*))(var22->class->vft[COLOR_array__Array__init]))(var22) /* init on <var22:Array[String]>*/;
926 ((void (*)(val*, val*, val*, val*, val*))(var14->class->vft[COLOR_model__MClassDef__init]))(var14, self, var15, var16, var22) /* init on <var14:MClassDef>*/;
927 var_cladef = var14;
928 var = var_c;
929 goto RET_LABEL;
930 } else {
931 }
932 if (varonce23) {
933 var24 = varonce23;
934 } else {
935 var25 = "Fatal Error: no primitive class ";
936 var26 = 32;
937 var27 = string__NativeString__to_s_with_length(var25, var26);
938 var24 = var27;
939 varonce23 = var24;
940 }
941 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
942 { /* var28 = array_instance Array[Object] */
943 var29 = 2;
944 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
945 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var24;
946 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_name;
947 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
948 }
949 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
950 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var31) /* print on <self:MModule>*/;
951 var32 = 1;
952 ((void (*)(val*, long))(self->class->vft[COLOR_kernel__Object__exit]))(self, var32) /* exit on <self:MModule>*/;
953 } else {
954 }
955 if (var_cla == NULL) {
956 fprintf(stderr, "Runtime error: %s", "Reciever is null");
957 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
958 show_backtrace(1);
959 } else {
960 var33 = ((long (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__length]))(var_cla) /* length on <var_cla:nullable Array[MClass]>*/;
961 }
962 var34 = 1;
963 { /* Inline kernel#Int#== (var33,var34) */
964 var37 = var33 == var34;
965 var35 = var37;
966 goto RET_LABEL36;
967 RET_LABEL36:(void)0;
968 }
969 if (!var35) {
970 if (varonce38) {
971 var39 = varonce38;
972 } else {
973 var40 = ", ";
974 var41 = 2;
975 var42 = string__NativeString__to_s_with_length(var40, var41);
976 var39 = var42;
977 varonce38 = var39;
978 }
979 if (var_cla == NULL) {
980 fprintf(stderr, "Runtime error: %s", "Reciever is null");
981 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
982 show_backtrace(1);
983 } else {
984 var43 = ((val* (*)(val*, val*))(var_cla->class->vft[COLOR_string__Collection__join]))(var_cla, var39) /* join on <var_cla:nullable Array[MClass]>*/;
985 }
986 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var43) /* print on <self:MModule>*/;
987 fprintf(stderr, "Runtime error: %s", "Assert failed");
988 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 225);
989 show_backtrace(1);
990 }
991 if (var_cla == NULL) {
992 fprintf(stderr, "Runtime error: %s", "Reciever is null");
993 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 226);
994 show_backtrace(1);
995 } else {
996 var44 = ((val* (*)(val*))(var_cla->class->vft[COLOR_abstract_collection__Collection__first]))(var_cla) /* first on <var_cla:nullable Array[MClass]>*/;
997 }
998 var = var44;
999 goto RET_LABEL;
1000 RET_LABEL:;
1001 return var;
1002 }
1003 /* method model#MModule#get_primitive_class for (self: Object, String): MClass */
1004 val* VIRTUAL_model__MModule__get_primitive_class(val* self, val* p0) {
1005 val* var /* : MClass */;
1006 val* var1 /* : MClass */;
1007 var1 = model__MModule__get_primitive_class(self, p0);
1008 var = var1;
1009 RET_LABEL:;
1010 return var;
1011 }
1012 /* method model#MModule#try_get_primitive_method for (self: MModule, String, MClass): nullable MMethod */
1013 val* model__MModule__try_get_primitive_method(val* self, val* p0, val* p1) {
1014 val* var /* : nullable MMethod */;
1015 val* var_name /* var name: String */;
1016 val* var_recv /* var recv: MClass */;
1017 val* var1 /* : Model */;
1018 val* var2 /* : nullable Array[MProperty] */;
1019 val* var_props /* var props: nullable Array[MProperty] */;
1020 val* var3 /* : null */;
1021 short int var4 /* : Bool */;
1022 val* var5 /* : null */;
1023 val* var6 /* : null */;
1024 val* var_res /* var res: nullable MMethod */;
1025 val* var7 /* : Iterator[nullable Object] */;
1026 short int var8 /* : Bool */;
1027 val* var9 /* : nullable Object */;
1028 val* var_mprop /* var mprop: MProperty */;
1029 short int var10 /* : Bool */;
1030 int cltype;
1031 int idtype;
1032 val* var11 /* : MClassDef */;
1033 val* var_intro /* var intro: MClassDef */;
1034 val* var12 /* : Array[MClassDef] */;
1035 val* var13 /* : Iterator[nullable Object] */;
1036 short int var14 /* : Bool */;
1037 val* var15 /* : nullable Object */;
1038 val* var_mclassdef /* var mclassdef: MClassDef */;
1039 val* var16 /* : POSetElement[MModule] */;
1040 val* var17 /* : Collection[Object] */;
1041 val* var18 /* : MModule */;
1042 short int var19 /* : Bool */;
1043 short int var20 /* : Bool */;
1044 val* var21 /* : nullable POSetElement[MClassDef] */;
1045 val* var22 /* : Collection[Object] */;
1046 short int var23 /* : Bool */;
1047 short int var24 /* : Bool */;
1048 val* var25 /* : null */;
1049 short int var26 /* : Bool */;
1050 short int var27 /* : Bool */;
1051 static val* varonce;
1052 val* var28 /* : String */;
1053 char* var29 /* : NativeString */;
1054 long var30 /* : Int */;
1055 val* var31 /* : String */;
1056 static val* varonce32;
1057 val* var33 /* : String */;
1058 char* var34 /* : NativeString */;
1059 long var35 /* : Int */;
1060 val* var36 /* : String */;
1061 val* var37 /* : String */;
1062 static val* varonce38;
1063 val* var39 /* : String */;
1064 char* var40 /* : NativeString */;
1065 long var41 /* : Int */;
1066 val* var42 /* : String */;
1067 val* var43 /* : String */;
1068 val* var44 /* : Array[Object] */;
1069 long var45 /* : Int */;
1070 val* var46 /* : NativeArray[Object] */;
1071 val* var47 /* : String */;
1072 var_name = p0;
1073 var_recv = p1;
1074 var1 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__model]))(self) /* model on <self:MModule>*/;
1075 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_model__Model__get_mproperties_by_name]))(var1, var_name) /* get_mproperties_by_name on <var1:Model>*/;
1076 var_props = var2;
1077 var3 = NULL;
1078 if (var_props == NULL) {
1079 var4 = 1; /* is null */
1080 } else {
1081 var4 = 0; /* arg is null but recv is not */
1082 }
1083 if (var4){
1084 var5 = NULL;
1085 var = var5;
1086 goto RET_LABEL;
1087 } else {
1088 }
1089 var6 = NULL;
1090 var_res = var6;
1091 var7 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:nullable Array[MProperty](Array[MProperty])>*/;
1092 for(;;) {
1093 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
1094 if(!var8) break;
1095 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
1096 var_mprop = var9;
1097 /* <var_mprop:MProperty> isa MMethod */
1098 cltype = type_model__MMethod.color;
1099 idtype = type_model__MMethod.id;
1100 if(cltype >= var_mprop->type->table_size) {
1101 var10 = 0;
1102 } else {
1103 var10 = var_mprop->type->type_table[cltype] == idtype;
1104 }
1105 if (!var10) {
1106 fprintf(stderr, "Runtime error: %s", "Assert failed");
1107 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 236);
1108 show_backtrace(1);
1109 }
1110 var11 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mprop) /* intro_mclassdef on <var_mprop:MProperty(MMethod)>*/;
1111 var_intro = var11;
1112 var12 = ((val* (*)(val*))(var_recv->class->vft[COLOR_model__MClass__mclassdefs]))(var_recv) /* mclassdefs on <var_recv:MClass>*/;
1113 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[MClassDef]>*/;
1114 for(;;) {
1115 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
1116 if(!var14) break;
1117 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
1118 var_mclassdef = var15;
1119 var16 = ((val* (*)(val*))(self->class->vft[COLOR_mmodule__MModule__in_importation]))(self) /* in_importation on <self:MModule>*/;
1120 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_poset__POSetElement__greaters]))(var16) /* greaters on <var16:POSetElement[MModule]>*/;
1121 var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
1122 var19 = ((short int (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__Collection__has]))(var17, var18) /* has on <var17:Collection[Object](Collection[MModule])>*/;
1123 var20 = !var19;
1124 if (var20){
1125 goto CONTINUE_label;
1126 } else {
1127 }
1128 var21 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
1129 if (var21 == NULL) {
1130 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1131 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 240);
1132 show_backtrace(1);
1133 } else {
1134 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_poset__POSetElement__greaters]))(var21) /* greaters on <var21:nullable POSetElement[MClassDef]>*/;
1135 }
1136 var23 = ((short int (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__Collection__has]))(var22, var_intro) /* has on <var22:Collection[Object](Collection[MClassDef])>*/;
1137 var24 = !var23;
1138 if (var24){
1139 goto CONTINUE_label;
1140 } else {
1141 }
1142 var25 = NULL;
1143 if (var_res == NULL) {
1144 var26 = 1; /* is null */
1145 } else {
1146 var26 = 0; /* arg is null but recv is not */
1147 }
1148 if (var26){
1149 var_res = var_mprop;
1150 } else {
1151 var27 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___33d_61d]))(var_res, var_mprop) /* != on <var_res:nullable MMethod(MMethod)>*/;
1152 if (var27){
1153 if (varonce) {
1154 var28 = varonce;
1155 } else {
1156 var29 = "Fatal Error: ambigous property name \'";
1157 var30 = 37;
1158 var31 = string__NativeString__to_s_with_length(var29, var30);
1159 var28 = var31;
1160 varonce = var28;
1161 }
1162 if (varonce32) {
1163 var33 = varonce32;
1164 } else {
1165 var34 = "\'; conflict between ";
1166 var35 = 20;
1167 var36 = string__NativeString__to_s_with_length(var34, var35);
1168 var33 = var36;
1169 varonce32 = var33;
1170 }
1171 var37 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:MProperty(MMethod)>*/;
1172 if (varonce38) {
1173 var39 = varonce38;
1174 } else {
1175 var40 = " and ";
1176 var41 = 5;
1177 var42 = string__NativeString__to_s_with_length(var40, var41);
1178 var39 = var42;
1179 varonce38 = var39;
1180 }
1181 var43 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MProperty__full_name]))(var_res) /* full_name on <var_res:nullable MMethod(MMethod)>*/;
1182 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
1183 { /* var44 = array_instance Array[Object] */
1184 var45 = 6;
1185 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
1186 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var28;
1187 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_name;
1188 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var33;
1189 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var37;
1190 ((struct instance_array__NativeArray*)var46)->values[4] = (val*) var39;
1191 ((struct instance_array__NativeArray*)var46)->values[5] = (val*) var43;
1192 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
1193 }
1194 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
1195 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:MModule>*/;
1196 fprintf(stderr, "Runtime error: %s", "Aborted");
1197 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 245);
1198 show_backtrace(1);
1199 } else {
1200 }
1201 }
1202 CONTINUE_label: (void)0;
1203 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
1204 }
1205 BREAK_label: (void)0;
1206 CONTINUE_label48: (void)0;
1207 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
1208 }
1209 BREAK_label48: (void)0;
1210 var = var_res;
1211 goto RET_LABEL;
1212 RET_LABEL:;
1213 return var;
1214 }
1215 /* method model#MModule#try_get_primitive_method for (self: Object, String, MClass): nullable MMethod */
1216 val* VIRTUAL_model__MModule__try_get_primitive_method(val* self, val* p0, val* p1) {
1217 val* var /* : nullable MMethod */;
1218 val* var1 /* : nullable MMethod */;
1219 var1 = model__MModule__try_get_primitive_method(self, p0, p1);
1220 var = var1;
1221 RET_LABEL:;
1222 return var;
1223 }
1224 /* method model#MClassDefSorter#mmodule for (self: MClassDefSorter): MModule */
1225 val* model__MClassDefSorter__mmodule(val* self) {
1226 val* var /* : MModule */;
1227 val* var1 /* : MModule */;
1228 var1 = self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val; /* @mmodule on <self:MClassDefSorter> */
1229 if (var1 == NULL) {
1230 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
1231 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 255);
1232 show_backtrace(1);
1233 }
1234 var = var1;
1235 RET_LABEL:;
1236 return var;
1237 }
1238 /* method model#MClassDefSorter#mmodule for (self: Object): MModule */
1239 val* VIRTUAL_model__MClassDefSorter__mmodule(val* self) {
1240 val* var /* : MModule */;
1241 val* var1 /* : MModule */;
1242 var1 = model__MClassDefSorter__mmodule(self);
1243 var = var1;
1244 RET_LABEL:;
1245 return var;
1246 }
1247 /* method model#MClassDefSorter#mmodule= for (self: MClassDefSorter, MModule) */
1248 void model__MClassDefSorter__mmodule_61d(val* self, val* p0) {
1249 self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MClassDefSorter> */
1250 RET_LABEL:;
1251 }
1252 /* method model#MClassDefSorter#mmodule= for (self: Object, MModule) */
1253 void VIRTUAL_model__MClassDefSorter__mmodule_61d(val* self, val* p0) {
1254 model__MClassDefSorter__mmodule_61d(self, p0);
1255 RET_LABEL:;
1256 }
1257 /* method model#MClassDefSorter#compare for (self: MClassDefSorter, MClassDef, MClassDef): Int */
1258 long model__MClassDefSorter__compare(val* self, val* p0, val* p1) {
1259 long var /* : Int */;
1260 short int var1 /* : Bool */;
1261 int cltype;
1262 int idtype;
1263 const char* var_class_name;
1264 short int var2 /* : Bool */;
1265 int cltype3;
1266 int idtype4;
1267 const char* var_class_name5;
1268 val* var_a /* var a: MClassDef */;
1269 val* var_b /* var b: MClassDef */;
1270 val* var6 /* : MClass */;
1271 val* var_ca /* var ca: MClass */;
1272 val* var7 /* : MClass */;
1273 val* var_cb /* var cb: MClass */;
1274 short int var8 /* : Bool */;
1275 val* var9 /* : MModule */;
1276 val* var10 /* : POSet[MClass] */;
1277 long var11 /* : Int */;
1278 val* var12 /* : MModule */;
1279 val* var13 /* : Model */;
1280 val* var14 /* : POSet[MClassDef] */;
1281 long var15 /* : Int */;
1282 /* Covariant cast for argument 0 (a) <p0:MClassDef> isa AbstractSorter#0 */
1283 /* <p0:MClassDef> isa AbstractSorter#0 */
1284 var1 = 1; /* easy <p0:MClassDef> isa AbstractSorter#0*/
1285 if (!var1) {
1286 var_class_name = p0 == NULL ? "null" : p0->type->name;
1287 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
1288 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 256);
1289 show_backtrace(1);
1290 }
1291 /* Covariant cast for argument 1 (b) <p1:MClassDef> isa AbstractSorter#0 */
1292 /* <p1:MClassDef> isa AbstractSorter#0 */
1293 var2 = 1; /* easy <p1:MClassDef> isa AbstractSorter#0*/
1294 if (!var2) {
1295 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1296 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
1297 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 256);
1298 show_backtrace(1);
1299 }
1300 var_a = p0;
1301 var_b = p1;
1302 var6 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
1303 var_ca = var6;
1304 var7 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
1305 var_cb = var7;
1306 var8 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
1307 if (var8){
1308 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
1309 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var9) /* flatten_mclass_hierarchy on <var9:MModule>*/;
1310 var11 = ((long (*)(val*, val*, val*))(var10->class->vft[COLOR_sorter__AbstractSorter__compare]))(var10, var_ca, var_cb) /* compare on <var10:POSet[MClass]>*/;
1311 var = var11;
1312 goto RET_LABEL;
1313 } else {
1314 }
1315 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDefSorter__mmodule]))(self) /* mmodule on <self:MClassDefSorter>*/;
1316 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_mmodule__MModule__model]))(var12) /* model on <var12:MModule>*/;
1317 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var13) /* mclassdef_hierarchy on <var13:Model>*/;
1318 var15 = ((long (*)(val*, val*, val*))(var14->class->vft[COLOR_sorter__AbstractSorter__compare]))(var14, var_a, var_b) /* compare on <var14:POSet[MClassDef]>*/;
1319 var = var15;
1320 goto RET_LABEL;
1321 RET_LABEL:;
1322 return var;
1323 }
1324 /* method model#MClassDefSorter#compare for (self: Object, nullable Object, nullable Object): Int */
1325 long VIRTUAL_model__MClassDefSorter__compare(val* self, val* p0, val* p1) {
1326 long var /* : Int */;
1327 long var1 /* : Int */;
1328 var1 = model__MClassDefSorter__compare(self, p0, p1);
1329 var = var1;
1330 RET_LABEL:;
1331 return var;
1332 }
1333 /* method model#MClassDefSorter#init for (self: MClassDefSorter, MModule) */
1334 void model__MClassDefSorter__init(val* self, val* p0) {
1335 self->attrs[COLOR_model__MClassDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MClassDefSorter> */
1336 RET_LABEL:;
1337 }
1338 /* method model#MClassDefSorter#init for (self: Object, MModule) */
1339 void VIRTUAL_model__MClassDefSorter__init(val* self, val* p0) {
1340 model__MClassDefSorter__init(self, p0);
1341 RET_LABEL:;
1342 }
1343 /* method model#MPropDefSorter#mmodule for (self: MPropDefSorter): MModule */
1344 val* model__MPropDefSorter__mmodule(val* self) {
1345 val* var /* : MModule */;
1346 val* var1 /* : MModule */;
1347 var1 = self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val; /* @mmodule on <self:MPropDefSorter> */
1348 if (var1 == NULL) {
1349 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
1350 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 267);
1351 show_backtrace(1);
1352 }
1353 var = var1;
1354 RET_LABEL:;
1355 return var;
1356 }
1357 /* method model#MPropDefSorter#mmodule for (self: Object): MModule */
1358 val* VIRTUAL_model__MPropDefSorter__mmodule(val* self) {
1359 val* var /* : MModule */;
1360 val* var1 /* : MModule */;
1361 var1 = model__MPropDefSorter__mmodule(self);
1362 var = var1;
1363 RET_LABEL:;
1364 return var;
1365 }
1366 /* method model#MPropDefSorter#mmodule= for (self: MPropDefSorter, MModule) */
1367 void model__MPropDefSorter__mmodule_61d(val* self, val* p0) {
1368 self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MPropDefSorter> */
1369 RET_LABEL:;
1370 }
1371 /* method model#MPropDefSorter#mmodule= for (self: Object, MModule) */
1372 void VIRTUAL_model__MPropDefSorter__mmodule_61d(val* self, val* p0) {
1373 model__MPropDefSorter__mmodule_61d(self, p0);
1374 RET_LABEL:;
1375 }
1376 /* method model#MPropDefSorter#compare for (self: MPropDefSorter, MPropDef, MPropDef): Int */
1377 long model__MPropDefSorter__compare(val* self, val* p0, val* p1) {
1378 long var /* : Int */;
1379 short int var1 /* : Bool */;
1380 int cltype;
1381 int idtype;
1382 const char* var_class_name;
1383 short int var2 /* : Bool */;
1384 int cltype3;
1385 int idtype4;
1386 const char* var_class_name5;
1387 val* var_pa /* var pa: MPropDef */;
1388 val* var_pb /* var pb: MPropDef */;
1389 val* var6 /* : MClassDef */;
1390 val* var_a /* var a: MClassDef */;
1391 val* var7 /* : MClassDef */;
1392 val* var_b /* var b: MClassDef */;
1393 val* var8 /* : MClass */;
1394 val* var_ca /* var ca: MClass */;
1395 val* var9 /* : MClass */;
1396 val* var_cb /* var cb: MClass */;
1397 short int var10 /* : Bool */;
1398 val* var11 /* : MModule */;
1399 val* var12 /* : POSet[MClass] */;
1400 long var13 /* : Int */;
1401 val* var14 /* : MModule */;
1402 val* var15 /* : Model */;
1403 val* var16 /* : POSet[MClassDef] */;
1404 long var17 /* : Int */;
1405 /* Covariant cast for argument 0 (pa) <p0:MPropDef> isa AbstractSorter#0 */
1406 /* <p0:MPropDef> isa AbstractSorter#0 */
1407 var1 = 1; /* easy <p0:MPropDef> isa AbstractSorter#0*/
1408 if (!var1) {
1409 var_class_name = p0 == NULL ? "null" : p0->type->name;
1410 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
1411 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 268);
1412 show_backtrace(1);
1413 }
1414 /* Covariant cast for argument 1 (pb) <p1:MPropDef> isa AbstractSorter#0 */
1415 /* <p1:MPropDef> isa AbstractSorter#0 */
1416 var2 = 1; /* easy <p1:MPropDef> isa AbstractSorter#0*/
1417 if (!var2) {
1418 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1419 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name5);
1420 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 268);
1421 show_backtrace(1);
1422 }
1423 var_pa = p0;
1424 var_pb = p1;
1425 var6 = ((val* (*)(val*))(var_pa->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pa) /* mclassdef on <var_pa:MPropDef>*/;
1426 var_a = var6;
1427 var7 = ((val* (*)(val*))(var_pb->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pb) /* mclassdef on <var_pb:MPropDef>*/;
1428 var_b = var7;
1429 var8 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MClassDef__mclass]))(var_a) /* mclass on <var_a:MClassDef>*/;
1430 var_ca = var8;
1431 var9 = ((val* (*)(val*))(var_b->class->vft[COLOR_model__MClassDef__mclass]))(var_b) /* mclass on <var_b:MClassDef>*/;
1432 var_cb = var9;
1433 var10 = ((short int (*)(val*, val*))(var_ca->class->vft[COLOR_kernel__Object___33d_61d]))(var_ca, var_cb) /* != on <var_ca:MClass>*/;
1434 if (var10){
1435 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
1436 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var11) /* flatten_mclass_hierarchy on <var11:MModule>*/;
1437 var13 = ((long (*)(val*, val*, val*))(var12->class->vft[COLOR_sorter__AbstractSorter__compare]))(var12, var_ca, var_cb) /* compare on <var12:POSet[MClass]>*/;
1438 var = var13;
1439 goto RET_LABEL;
1440 } else {
1441 }
1442 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDefSorter__mmodule]))(self) /* mmodule on <self:MPropDefSorter>*/;
1443 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_mmodule__MModule__model]))(var14) /* model on <var14:MModule>*/;
1444 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var15) /* mclassdef_hierarchy on <var15:Model>*/;
1445 var17 = ((long (*)(val*, val*, val*))(var16->class->vft[COLOR_sorter__AbstractSorter__compare]))(var16, var_a, var_b) /* compare on <var16:POSet[MClassDef]>*/;
1446 var = var17;
1447 goto RET_LABEL;
1448 RET_LABEL:;
1449 return var;
1450 }
1451 /* method model#MPropDefSorter#compare for (self: Object, nullable Object, nullable Object): Int */
1452 long VIRTUAL_model__MPropDefSorter__compare(val* self, val* p0, val* p1) {
1453 long var /* : Int */;
1454 long var1 /* : Int */;
1455 var1 = model__MPropDefSorter__compare(self, p0, p1);
1456 var = var1;
1457 RET_LABEL:;
1458 return var;
1459 }
1460 /* method model#MPropDefSorter#init for (self: MPropDefSorter, MModule) */
1461 void model__MPropDefSorter__init(val* self, val* p0) {
1462 self->attrs[COLOR_model__MPropDefSorter___64dmmodule].val = p0; /* @mmodule on <self:MPropDefSorter> */
1463 RET_LABEL:;
1464 }
1465 /* method model#MPropDefSorter#init for (self: Object, MModule) */
1466 void VIRTUAL_model__MPropDefSorter__init(val* self, val* p0) {
1467 model__MPropDefSorter__init(self, p0);
1468 RET_LABEL:;
1469 }
1470 /* method model#MClass#intro_mmodule for (self: MClass): MModule */
1471 val* model__MClass__intro_mmodule(val* self) {
1472 val* var /* : MModule */;
1473 val* var1 /* : MModule */;
1474 var1 = self->attrs[COLOR_model__MClass___64dintro_mmodule].val; /* @intro_mmodule on <self:MClass> */
1475 if (var1 == NULL) {
1476 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mmodule");
1477 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 290);
1478 show_backtrace(1);
1479 }
1480 var = var1;
1481 RET_LABEL:;
1482 return var;
1483 }
1484 /* method model#MClass#intro_mmodule for (self: Object): MModule */
1485 val* VIRTUAL_model__MClass__intro_mmodule(val* self) {
1486 val* var /* : MModule */;
1487 val* var1 /* : MModule */;
1488 var1 = model__MClass__intro_mmodule(self);
1489 var = var1;
1490 RET_LABEL:;
1491 return var;
1492 }
1493 /* method model#MClass#intro_mmodule= for (self: MClass, MModule) */
1494 void model__MClass__intro_mmodule_61d(val* self, val* p0) {
1495 self->attrs[COLOR_model__MClass___64dintro_mmodule].val = p0; /* @intro_mmodule on <self:MClass> */
1496 RET_LABEL:;
1497 }
1498 /* method model#MClass#intro_mmodule= for (self: Object, MModule) */
1499 void VIRTUAL_model__MClass__intro_mmodule_61d(val* self, val* p0) {
1500 model__MClass__intro_mmodule_61d(self, p0);
1501 RET_LABEL:;
1502 }
1503 /* method model#MClass#name for (self: MClass): String */
1504 val* model__MClass__name(val* self) {
1505 val* var /* : String */;
1506 val* var1 /* : String */;
1507 var1 = self->attrs[COLOR_model__MClass___64dname].val; /* @name on <self:MClass> */
1508 if (var1 == NULL) {
1509 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
1510 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 295);
1511 show_backtrace(1);
1512 }
1513 var = var1;
1514 RET_LABEL:;
1515 return var;
1516 }
1517 /* method model#MClass#name for (self: Object): String */
1518 val* VIRTUAL_model__MClass__name(val* self) {
1519 val* var /* : String */;
1520 val* var1 /* : String */;
1521 var1 = model__MClass__name(self);
1522 var = var1;
1523 RET_LABEL:;
1524 return var;
1525 }
1526 /* method model#MClass#name= for (self: MClass, String) */
1527 void model__MClass__name_61d(val* self, val* p0) {
1528 self->attrs[COLOR_model__MClass___64dname].val = p0; /* @name on <self:MClass> */
1529 RET_LABEL:;
1530 }
1531 /* method model#MClass#name= for (self: Object, String) */
1532 void VIRTUAL_model__MClass__name_61d(val* self, val* p0) {
1533 model__MClass__name_61d(self, p0);
1534 RET_LABEL:;
1535 }
1536 /* method model#MClass#full_name for (self: MClass): String */
1537 val* model__MClass__full_name(val* self) {
1538 val* var /* : String */;
1539 val* var1 /* : Array[Object] */;
1540 long var2 /* : Int */;
1541 val* var_ /* var : Array[Object] */;
1542 static val* varonce;
1543 val* var3 /* : String */;
1544 char* var4 /* : NativeString */;
1545 long var5 /* : Int */;
1546 val* var6 /* : String */;
1547 val* var7 /* : MModule */;
1548 val* var8 /* : String */;
1549 static val* varonce9;
1550 val* var10 /* : String */;
1551 char* var11 /* : NativeString */;
1552 long var12 /* : Int */;
1553 val* var13 /* : String */;
1554 val* var14 /* : String */;
1555 static val* varonce15;
1556 val* var16 /* : String */;
1557 char* var17 /* : NativeString */;
1558 long var18 /* : Int */;
1559 val* var19 /* : String */;
1560 val* var20 /* : String */;
1561 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
1562 var2 = 5;
1563 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
1564 var_ = var1;
1565 if (varonce) {
1566 var3 = varonce;
1567 } else {
1568 var4 = "";
1569 var5 = 0;
1570 var6 = string__NativeString__to_s_with_length(var4, var5);
1571 var3 = var6;
1572 varonce = var3;
1573 }
1574 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
1575 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__intro_mmodule]))(self) /* intro_mmodule on <self:MClass>*/;
1576 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_mmodule__MModule__full_name]))(var7) /* full_name on <var7:MModule>*/;
1577 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
1578 if (varonce9) {
1579 var10 = varonce9;
1580 } else {
1581 var11 = "::";
1582 var12 = 2;
1583 var13 = string__NativeString__to_s_with_length(var11, var12);
1584 var10 = var13;
1585 varonce9 = var10;
1586 }
1587 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1588 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on <self:MClass>*/;
1589 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
1590 if (varonce15) {
1591 var16 = varonce15;
1592 } else {
1593 var17 = "";
1594 var18 = 0;
1595 var19 = string__NativeString__to_s_with_length(var17, var18);
1596 var16 = var19;
1597 varonce15 = var16;
1598 }
1599 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
1600 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1601 var = var20;
1602 goto RET_LABEL;
1603 RET_LABEL:;
1604 return var;
1605 }
1606 /* method model#MClass#full_name for (self: Object): String */
1607 val* VIRTUAL_model__MClass__full_name(val* self) {
1608 val* var /* : String */;
1609 val* var1 /* : String */;
1610 var1 = model__MClass__full_name(self);
1611 var = var1;
1612 RET_LABEL:;
1613 return var;
1614 }
1615 /* method model#MClass#arity for (self: MClass): Int */
1616 long model__MClass__arity(val* self) {
1617 long var /* : Int */;
1618 long var1 /* : Int */;
1619 var1 = self->attrs[COLOR_model__MClass___64darity].l; /* @arity on <self:MClass> */
1620 var = var1;
1621 RET_LABEL:;
1622 return var;
1623 }
1624 /* method model#MClass#arity for (self: Object): Int */
1625 long VIRTUAL_model__MClass__arity(val* self) {
1626 long var /* : Int */;
1627 long var1 /* : Int */;
1628 var1 = model__MClass__arity(self);
1629 var = var1;
1630 RET_LABEL:;
1631 return var;
1632 }
1633 /* method model#MClass#arity= for (self: MClass, Int) */
1634 void model__MClass__arity_61d(val* self, long p0) {
1635 self->attrs[COLOR_model__MClass___64darity].l = p0; /* @arity on <self:MClass> */
1636 RET_LABEL:;
1637 }
1638 /* method model#MClass#arity= for (self: Object, Int) */
1639 void VIRTUAL_model__MClass__arity_61d(val* self, long p0) {
1640 model__MClass__arity_61d(self, p0);
1641 RET_LABEL:;
1642 }
1643 /* method model#MClass#kind for (self: MClass): MClassKind */
1644 val* model__MClass__kind(val* self) {
1645 val* var /* : MClassKind */;
1646 val* var1 /* : MClassKind */;
1647 var1 = self->attrs[COLOR_model__MClass___64dkind].val; /* @kind on <self:MClass> */
1648 if (var1 == NULL) {
1649 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @kind");
1650 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 310);
1651 show_backtrace(1);
1652 }
1653 var = var1;
1654 RET_LABEL:;
1655 return var;
1656 }
1657 /* method model#MClass#kind for (self: Object): MClassKind */
1658 val* VIRTUAL_model__MClass__kind(val* self) {
1659 val* var /* : MClassKind */;
1660 val* var1 /* : MClassKind */;
1661 var1 = model__MClass__kind(self);
1662 var = var1;
1663 RET_LABEL:;
1664 return var;
1665 }
1666 /* method model#MClass#kind= for (self: MClass, MClassKind) */
1667 void model__MClass__kind_61d(val* self, val* p0) {
1668 self->attrs[COLOR_model__MClass___64dkind].val = p0; /* @kind on <self:MClass> */
1669 RET_LABEL:;
1670 }
1671 /* method model#MClass#kind= for (self: Object, MClassKind) */
1672 void VIRTUAL_model__MClass__kind_61d(val* self, val* p0) {
1673 model__MClass__kind_61d(self, p0);
1674 RET_LABEL:;
1675 }
1676 /* method model#MClass#visibility for (self: MClass): MVisibility */
1677 val* model__MClass__visibility(val* self) {
1678 val* var /* : MVisibility */;
1679 val* var1 /* : MVisibility */;
1680 var1 = self->attrs[COLOR_model__MClass___64dvisibility].val; /* @visibility on <self:MClass> */
1681 if (var1 == NULL) {
1682 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
1683 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 314);
1684 show_backtrace(1);
1685 }
1686 var = var1;
1687 RET_LABEL:;
1688 return var;
1689 }
1690 /* method model#MClass#visibility for (self: Object): MVisibility */
1691 val* VIRTUAL_model__MClass__visibility(val* self) {
1692 val* var /* : MVisibility */;
1693 val* var1 /* : MVisibility */;
1694 var1 = model__MClass__visibility(self);
1695 var = var1;
1696 RET_LABEL:;
1697 return var;
1698 }
1699 /* method model#MClass#visibility= for (self: MClass, MVisibility) */
1700 void model__MClass__visibility_61d(val* self, val* p0) {
1701 self->attrs[COLOR_model__MClass___64dvisibility].val = p0; /* @visibility on <self:MClass> */
1702 RET_LABEL:;
1703 }
1704 /* method model#MClass#visibility= for (self: Object, MVisibility) */
1705 void VIRTUAL_model__MClass__visibility_61d(val* self, val* p0) {
1706 model__MClass__visibility_61d(self, p0);
1707 RET_LABEL:;
1708 }
1709 /* method model#MClass#init for (self: MClass, MModule, String, Int, MClassKind, MVisibility) */
1710 void model__MClass__init(val* self, val* p0, val* p1, long p2, val* p3, val* p4) {
1711 val* var_intro_mmodule /* var intro_mmodule: MModule */;
1712 val* var_name /* var name: String */;
1713 long var_arity /* var arity: Int */;
1714 val* var_kind /* var kind: MClassKind */;
1715 val* var_visibility /* var visibility: MVisibility */;
1716 val* var /* : Array[MClass] */;
1717 val* var1 /* : Model */;
1718 val* var_model /* var model: Model */;
1719 val* var2 /* : MultiHashMap[String, MClass] */;
1720 val* var3 /* : Array[MClass] */;
1721 long var4 /* : Int */;
1722 short int var5 /* : Bool */;
1723 short int var7 /* : Bool */;
1724 int cltype;
1725 int idtype;
1726 const char* var_class_name;
1727 short int var8 /* : Bool */;
1728 val* var9 /* : Array[MParameterType] */;
1729 val* var_mparametertypes /* var mparametertypes: Array[MParameterType] */;
1730 val* var10 /* : Range[Int] */;
1731 long var11 /* : Int */;
1732 val* var12 /* : Discrete */;
1733 val* var13 /* : Discrete */;
1734 val* var14 /* : Iterator[nullable Object] */;
1735 short int var15 /* : Bool */;
1736 val* var16 /* : nullable Object */;
1737 long var_i /* var i: Int */;
1738 long var17 /* : Int */;
1739 val* var18 /* : MParameterType */;
1740 val* var_mparametertype /* var mparametertype: MParameterType */;
1741 val* var19 /* : MGenericType */;
1742 val* var_mclass_type /* var mclass_type: MGenericType */;
1743 val* var20 /* : Array[MGenericType] */;
1744 val* var21 /* : MClassType */;
1745 var_intro_mmodule = p0;
1746 var_name = p1;
1747 var_arity = p2;
1748 var_kind = p3;
1749 var_visibility = p4;
1750 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__intro_mmodule_61d]))(self, var_intro_mmodule) /* intro_mmodule= on <self:MClass>*/;
1751 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__name_61d]))(self, var_name) /* name= on <self:MClass>*/;
1752 ((void (*)(val*, long))(self->class->vft[COLOR_model__MClass__arity_61d]))(self, var_arity) /* arity= on <self:MClass>*/;
1753 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__kind_61d]))(self, var_kind) /* kind= on <self:MClass>*/;
1754 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__visibility_61d]))(self, var_visibility) /* visibility= on <self:MClass>*/;
1755 var = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_model__MModule__intro_mclasses]))(var_intro_mmodule) /* intro_mclasses on <var_intro_mmodule:MModule>*/;
1756 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MClass]>*/;
1757 var1 = ((val* (*)(val*))(var_intro_mmodule->class->vft[COLOR_mmodule__MModule__model]))(var_intro_mmodule) /* model on <var_intro_mmodule:MModule>*/;
1758 var_model = var1;
1759 var2 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclasses_by_name]))(var_model) /* mclasses_by_name on <var_model:Model>*/;
1760 ((void (*)(val*, val*, val*))(var2->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var2, var_name, self) /* add_one on <var2:MultiHashMap[String, MClass]>*/;
1761 var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclasses]))(var_model) /* mclasses on <var_model:Model>*/;
1762 ((void (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var3, self) /* add on <var3:Array[MClass]>*/;
1763 var4 = 0;
1764 { /* Inline kernel#Int#> (var_arity,var4) */
1765 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
1766 /* <var4:Int> isa OTHER */
1767 var7 = 1; /* easy <var4:Int> isa OTHER*/
1768 if (!var7) {
1769 var_class_name = type_kernel__Int.name;
1770 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1771 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
1772 show_backtrace(1);
1773 }
1774 var8 = var_arity > var4;
1775 var5 = var8;
1776 goto RET_LABEL6;
1777 RET_LABEL6:(void)0;
1778 }
1779 if (var5){
1780 var9 = NEW_array__Array(&type_array__Arraymodel__MParameterType);
1781 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MParameterType]>*/;
1782 var_mparametertypes = var9;
1783 var10 = NEW_range__Range(&type_range__Rangekernel__Int);
1784 var11 = 0;
1785 var12 = BOX_kernel__Int(var11); /* autobox from Int to Discrete */
1786 var13 = BOX_kernel__Int(var_arity); /* autobox from Int to Discrete */
1787 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_range__Range__without_last]))(var10, var12, var13) /* without_last on <var10:Range[Int]>*/;
1788 var14 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Range[Int]>*/;
1789 for(;;) {
1790 var15 = ((short int (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var14) /* is_ok on <var14:Iterator[nullable Object]>*/;
1791 if(!var15) break;
1792 var16 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__item]))(var14) /* item on <var14:Iterator[nullable Object]>*/;
1793 var17 = ((struct instance_kernel__Int*)var16)->value; /* autounbox from nullable Object to Int */;
1794 var_i = var17;
1795 var18 = NEW_model__MParameterType(&type_model__MParameterType);
1796 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_model__MParameterType__init]))(var18, self, var_i) /* init on <var18:MParameterType>*/;
1797 var_mparametertype = var18;
1798 ((void (*)(val*, val*))(var_mparametertypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparametertypes, var_mparametertype) /* add on <var_mparametertypes:Array[MParameterType]>*/;
1799 CONTINUE_label: (void)0;
1800 ((void (*)(val*))(var14->class->vft[COLOR_abstract_collection__Iterator__next]))(var14) /* next on <var14:Iterator[nullable Object]>*/;
1801 }
1802 BREAK_label: (void)0;
1803 var19 = NEW_model__MGenericType(&type_model__MGenericType);
1804 ((void (*)(val*, val*, val*))(var19->class->vft[COLOR_model__MGenericType__init]))(var19, self, var_mparametertypes) /* init on <var19:MGenericType>*/;
1805 var_mclass_type = var19;
1806 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var_mclass_type) /* mclass_type= on <self:MClass>*/;
1807 var20 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
1808 ((void (*)(val*, val*))(var20->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var20, var_mclass_type) /* add on <var20:Array[MGenericType]>*/;
1809 } else {
1810 var21 = NEW_model__MClassType(&type_model__MClassType);
1811 ((void (*)(val*, val*))(var21->class->vft[COLOR_model__MClassType__init]))(var21, self) /* init on <var21:MClassType>*/;
1812 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClass__mclass_type_61d]))(self, var21) /* mclass_type= on <self:MClass>*/;
1813 }
1814 RET_LABEL:;
1815 }
1816 /* method model#MClass#init for (self: Object, MModule, String, Int, MClassKind, MVisibility) */
1817 void VIRTUAL_model__MClass__init(val* self, val* p0, val* p1, long p2, val* p3, val* p4) {
1818 model__MClass__init(self, p0, p1, p2, p3, p4);
1819 RET_LABEL:;
1820 }
1821 /* method model#MClass#mclassdefs for (self: MClass): Array[MClassDef] */
1822 val* model__MClass__mclassdefs(val* self) {
1823 val* var /* : Array[MClassDef] */;
1824 val* var1 /* : Array[MClassDef] */;
1825 var1 = self->attrs[COLOR_model__MClass___64dmclassdefs].val; /* @mclassdefs on <self:MClass> */
1826 if (var1 == NULL) {
1827 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdefs");
1828 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 345);
1829 show_backtrace(1);
1830 }
1831 var = var1;
1832 RET_LABEL:;
1833 return var;
1834 }
1835 /* method model#MClass#mclassdefs for (self: Object): Array[MClassDef] */
1836 val* VIRTUAL_model__MClass__mclassdefs(val* self) {
1837 val* var /* : Array[MClassDef] */;
1838 val* var1 /* : Array[MClassDef] */;
1839 var1 = model__MClass__mclassdefs(self);
1840 var = var1;
1841 RET_LABEL:;
1842 return var;
1843 }
1844 /* method model#MClass#mclassdefs= for (self: MClass, Array[MClassDef]) */
1845 void model__MClass__mclassdefs_61d(val* self, val* p0) {
1846 self->attrs[COLOR_model__MClass___64dmclassdefs].val = p0; /* @mclassdefs on <self:MClass> */
1847 RET_LABEL:;
1848 }
1849 /* method model#MClass#mclassdefs= for (self: Object, Array[MClassDef]) */
1850 void VIRTUAL_model__MClass__mclassdefs_61d(val* self, val* p0) {
1851 model__MClass__mclassdefs_61d(self, p0);
1852 RET_LABEL:;
1853 }
1854 /* method model#MClass#to_s for (self: MClass): String */
1855 val* model__MClass__to_s(val* self) {
1856 val* var /* : String */;
1857 val* var1 /* : String */;
1858 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__name]))(self) /* name on <self:MClass>*/;
1859 var = var1;
1860 goto RET_LABEL;
1861 RET_LABEL:;
1862 return var;
1863 }
1864 /* method model#MClass#to_s for (self: Object): String */
1865 val* VIRTUAL_model__MClass__to_s(val* self) {
1866 val* var /* : String */;
1867 val* var1 /* : String */;
1868 var1 = model__MClass__to_s(self);
1869 var = var1;
1870 RET_LABEL:;
1871 return var;
1872 }
1873 /* method model#MClass#intro for (self: MClass): MClassDef */
1874 val* model__MClass__intro(val* self) {
1875 val* var /* : MClassDef */;
1876 val* var1 /* : Array[MClassDef] */;
1877 short int var2 /* : Bool */;
1878 short int var3 /* : Bool */;
1879 val* var4 /* : Array[MClassDef] */;
1880 val* var5 /* : nullable Object */;
1881 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclassdefs]))(self) /* mclassdefs on <self:MClass>*/;
1882 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:Array[MClassDef]>*/;
1883 var3 = !var2;
1884 if (!var3) {
1885 fprintf(stderr, "Runtime error: %s", "Assert \'has_a_first_definition\' failed");
1886 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 357);
1887 show_backtrace(1);
1888 }
1889 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclassdefs]))(self) /* mclassdefs on <self:MClass>*/;
1890 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__first]))(var4) /* first on <var4:Array[MClassDef]>*/;
1891 var = var5;
1892 goto RET_LABEL;
1893 RET_LABEL:;
1894 return var;
1895 }
1896 /* method model#MClass#intro for (self: Object): MClassDef */
1897 val* VIRTUAL_model__MClass__intro(val* self) {
1898 val* var /* : MClassDef */;
1899 val* var1 /* : MClassDef */;
1900 var1 = model__MClass__intro(self);
1901 var = var1;
1902 RET_LABEL:;
1903 return var;
1904 }
1905 /* method model#MClass#in_hierarchy for (self: MClass, MModule): POSetElement[MClass] */
1906 val* model__MClass__in_hierarchy(val* self, val* p0) {
1907 val* var /* : POSetElement[MClass] */;
1908 val* var_mmodule /* var mmodule: MModule */;
1909 val* var1 /* : POSet[MClass] */;
1910 val* var2 /* : POSetElement[Object] */;
1911 var_mmodule = p0;
1912 var1 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var_mmodule) /* flatten_mclass_hierarchy on <var_mmodule:MModule>*/;
1913 var2 = ((val* (*)(val*, val*))(var1->class->vft[COLOR_poset__POSet___91d_93d]))(var1, self) /* [] on <var1:POSet[MClass]>*/;
1914 var = var2;
1915 goto RET_LABEL;
1916 RET_LABEL:;
1917 return var;
1918 }
1919 /* method model#MClass#in_hierarchy for (self: Object, MModule): POSetElement[MClass] */
1920 val* VIRTUAL_model__MClass__in_hierarchy(val* self, val* p0) {
1921 val* var /* : POSetElement[MClass] */;
1922 val* var1 /* : POSetElement[MClass] */;
1923 var1 = model__MClass__in_hierarchy(self, p0);
1924 var = var1;
1925 RET_LABEL:;
1926 return var;
1927 }
1928 /* method model#MClass#mclass_type for (self: MClass): MClassType */
1929 val* model__MClass__mclass_type(val* self) {
1930 val* var /* : MClassType */;
1931 val* var1 /* : MClassType */;
1932 var1 = self->attrs[COLOR_model__MClass___64dmclass_type].val; /* @mclass_type on <self:MClass> */
1933 if (var1 == NULL) {
1934 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass_type");
1935 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 370);
1936 show_backtrace(1);
1937 }
1938 var = var1;
1939 RET_LABEL:;
1940 return var;
1941 }
1942 /* method model#MClass#mclass_type for (self: Object): MClassType */
1943 val* VIRTUAL_model__MClass__mclass_type(val* self) {
1944 val* var /* : MClassType */;
1945 val* var1 /* : MClassType */;
1946 var1 = model__MClass__mclass_type(self);
1947 var = var1;
1948 RET_LABEL:;
1949 return var;
1950 }
1951 /* method model#MClass#mclass_type= for (self: MClass, MClassType) */
1952 void model__MClass__mclass_type_61d(val* self, val* p0) {
1953 self->attrs[COLOR_model__MClass___64dmclass_type].val = p0; /* @mclass_type on <self:MClass> */
1954 RET_LABEL:;
1955 }
1956 /* method model#MClass#mclass_type= for (self: Object, MClassType) */
1957 void VIRTUAL_model__MClass__mclass_type_61d(val* self, val* p0) {
1958 model__MClass__mclass_type_61d(self, p0);
1959 RET_LABEL:;
1960 }
1961 /* method model#MClass#get_mtype for (self: MClass, Array[MType]): MClassType */
1962 val* model__MClass__get_mtype(val* self, val* p0) {
1963 val* var /* : MClassType */;
1964 val* var_mtype_arguments /* var mtype_arguments: Array[MType] */;
1965 long var1 /* : Int */;
1966 long var2 /* : Int */;
1967 short int var3 /* : Bool */;
1968 short int var5 /* : Bool */;
1969 long var6 /* : Int */;
1970 long var7 /* : Int */;
1971 short int var8 /* : Bool */;
1972 short int var10 /* : Bool */;
1973 val* var11 /* : MClassType */;
1974 val* var12 /* : Array[MGenericType] */;
1975 val* var13 /* : Iterator[nullable Object] */;
1976 short int var14 /* : Bool */;
1977 val* var15 /* : nullable Object */;
1978 val* var_t /* var t: MGenericType */;
1979 val* var16 /* : Array[MType] */;
1980 short int var17 /* : Bool */;
1981 val* var18 /* : MGenericType */;
1982 val* var_res /* var res: MGenericType */;
1983 val* var19 /* : Array[MGenericType] */;
1984 var_mtype_arguments = p0;
1985 var1 = ((long (*)(val*))(var_mtype_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_mtype_arguments) /* length on <var_mtype_arguments:Array[MType]>*/;
1986 var2 = ((long (*)(val*))(self->class->vft[COLOR_model__MClass__arity]))(self) /* arity on <self:MClass>*/;
1987 { /* Inline kernel#Int#== (var1,var2) */
1988 var5 = var1 == var2;
1989 var3 = var5;
1990 goto RET_LABEL4;
1991 RET_LABEL4:(void)0;
1992 }
1993 if (!var3) {
1994 fprintf(stderr, "Runtime error: %s", "Assert failed");
1995 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 393);
1996 show_backtrace(1);
1997 }
1998 var6 = ((long (*)(val*))(self->class->vft[COLOR_model__MClass__arity]))(self) /* arity on <self:MClass>*/;
1999 var7 = 0;
2000 { /* Inline kernel#Int#== (var6,var7) */
2001 var10 = var6 == var7;
2002 var8 = var10;
2003 goto RET_LABEL9;
2004 RET_LABEL9:(void)0;
2005 }
2006 if (var8){
2007 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__mclass_type]))(self) /* mclass_type on <self:MClass>*/;
2008 var = var11;
2009 goto RET_LABEL;
2010 } else {
2011 }
2012 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
2013 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[MGenericType]>*/;
2014 for(;;) {
2015 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
2016 if(!var14) break;
2017 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
2018 var_t = var15;
2019 var16 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__arguments]))(var_t) /* arguments on <var_t:MGenericType>*/;
2020 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var_mtype_arguments) /* == on <var16:Array[MType]>*/;
2021 if (var17){
2022 var = var_t;
2023 goto RET_LABEL;
2024 } else {
2025 }
2026 CONTINUE_label: (void)0;
2027 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
2028 }
2029 BREAK_label: (void)0;
2030 var18 = NEW_model__MGenericType(&type_model__MGenericType);
2031 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_model__MGenericType__init]))(var18, self, var_mtype_arguments) /* init on <var18:MGenericType>*/;
2032 var_res = var18;
2033 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__get_mtype_cache]))(self) /* get_mtype_cache on <self:MClass>*/;
2034 ((void (*)(val*, val*))(var19->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var19, var_res) /* add on <var19:Array[MGenericType]>*/;
2035 var = var_res;
2036 goto RET_LABEL;
2037 RET_LABEL:;
2038 return var;
2039 }
2040 /* method model#MClass#get_mtype for (self: Object, Array[MType]): MClassType */
2041 val* VIRTUAL_model__MClass__get_mtype(val* self, val* p0) {
2042 val* var /* : MClassType */;
2043 val* var1 /* : MClassType */;
2044 var1 = model__MClass__get_mtype(self, p0);
2045 var = var1;
2046 RET_LABEL:;
2047 return var;
2048 }
2049 /* method model#MClass#get_mtype_cache for (self: MClass): Array[MGenericType] */
2050 val* model__MClass__get_mtype_cache(val* self) {
2051 val* var /* : Array[MGenericType] */;
2052 val* var1 /* : Array[MGenericType] */;
2053 var1 = self->attrs[COLOR_model__MClass___64dget_mtype_cache].val; /* @get_mtype_cache on <self:MClass> */
2054 if (var1 == NULL) {
2055 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @get_mtype_cache");
2056 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 405);
2057 show_backtrace(1);
2058 }
2059 var = var1;
2060 RET_LABEL:;
2061 return var;
2062 }
2063 /* method model#MClass#get_mtype_cache for (self: Object): Array[MGenericType] */
2064 val* VIRTUAL_model__MClass__get_mtype_cache(val* self) {
2065 val* var /* : Array[MGenericType] */;
2066 val* var1 /* : Array[MGenericType] */;
2067 var1 = model__MClass__get_mtype_cache(self);
2068 var = var1;
2069 RET_LABEL:;
2070 return var;
2071 }
2072 /* method model#MClass#get_mtype_cache= for (self: MClass, Array[MGenericType]) */
2073 void model__MClass__get_mtype_cache_61d(val* self, val* p0) {
2074 self->attrs[COLOR_model__MClass___64dget_mtype_cache].val = p0; /* @get_mtype_cache on <self:MClass> */
2075 RET_LABEL:;
2076 }
2077 /* method model#MClass#get_mtype_cache= for (self: Object, Array[MGenericType]) */
2078 void VIRTUAL_model__MClass__get_mtype_cache_61d(val* self, val* p0) {
2079 model__MClass__get_mtype_cache_61d(self, p0);
2080 RET_LABEL:;
2081 }
2082 /* method model#MClassDef#mmodule for (self: MClassDef): MModule */
2083 val* model__MClassDef__mmodule(val* self) {
2084 val* var /* : MModule */;
2085 val* var1 /* : MModule */;
2086 var1 = self->attrs[COLOR_model__MClassDef___64dmmodule].val; /* @mmodule on <self:MClassDef> */
2087 if (var1 == NULL) {
2088 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mmodule");
2089 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 415);
2090 show_backtrace(1);
2091 }
2092 var = var1;
2093 RET_LABEL:;
2094 return var;
2095 }
2096 /* method model#MClassDef#mmodule for (self: Object): MModule */
2097 val* VIRTUAL_model__MClassDef__mmodule(val* self) {
2098 val* var /* : MModule */;
2099 val* var1 /* : MModule */;
2100 var1 = model__MClassDef__mmodule(self);
2101 var = var1;
2102 RET_LABEL:;
2103 return var;
2104 }
2105 /* method model#MClassDef#mmodule= for (self: MClassDef, MModule) */
2106 void model__MClassDef__mmodule_61d(val* self, val* p0) {
2107 self->attrs[COLOR_model__MClassDef___64dmmodule].val = p0; /* @mmodule on <self:MClassDef> */
2108 RET_LABEL:;
2109 }
2110 /* method model#MClassDef#mmodule= for (self: Object, MModule) */
2111 void VIRTUAL_model__MClassDef__mmodule_61d(val* self, val* p0) {
2112 model__MClassDef__mmodule_61d(self, p0);
2113 RET_LABEL:;
2114 }
2115 /* method model#MClassDef#mclass for (self: MClassDef): MClass */
2116 val* model__MClassDef__mclass(val* self) {
2117 val* var /* : MClass */;
2118 val* var1 /* : MClass */;
2119 var1 = self->attrs[COLOR_model__MClassDef___64dmclass].val; /* @mclass on <self:MClassDef> */
2120 if (var1 == NULL) {
2121 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
2122 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 418);
2123 show_backtrace(1);
2124 }
2125 var = var1;
2126 RET_LABEL:;
2127 return var;
2128 }
2129 /* method model#MClassDef#mclass for (self: Object): MClass */
2130 val* VIRTUAL_model__MClassDef__mclass(val* self) {
2131 val* var /* : MClass */;
2132 val* var1 /* : MClass */;
2133 var1 = model__MClassDef__mclass(self);
2134 var = var1;
2135 RET_LABEL:;
2136 return var;
2137 }
2138 /* method model#MClassDef#mclass= for (self: MClassDef, MClass) */
2139 void model__MClassDef__mclass_61d(val* self, val* p0) {
2140 self->attrs[COLOR_model__MClassDef___64dmclass].val = p0; /* @mclass on <self:MClassDef> */
2141 RET_LABEL:;
2142 }
2143 /* method model#MClassDef#mclass= for (self: Object, MClass) */
2144 void VIRTUAL_model__MClassDef__mclass_61d(val* self, val* p0) {
2145 model__MClassDef__mclass_61d(self, p0);
2146 RET_LABEL:;
2147 }
2148 /* method model#MClassDef#bound_mtype for (self: MClassDef): MClassType */
2149 val* model__MClassDef__bound_mtype(val* self) {
2150 val* var /* : MClassType */;
2151 val* var1 /* : MClassType */;
2152 var1 = self->attrs[COLOR_model__MClassDef___64dbound_mtype].val; /* @bound_mtype on <self:MClassDef> */
2153 if (var1 == NULL) {
2154 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @bound_mtype");
2155 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 421);
2156 show_backtrace(1);
2157 }
2158 var = var1;
2159 RET_LABEL:;
2160 return var;
2161 }
2162 /* method model#MClassDef#bound_mtype for (self: Object): MClassType */
2163 val* VIRTUAL_model__MClassDef__bound_mtype(val* self) {
2164 val* var /* : MClassType */;
2165 val* var1 /* : MClassType */;
2166 var1 = model__MClassDef__bound_mtype(self);
2167 var = var1;
2168 RET_LABEL:;
2169 return var;
2170 }
2171 /* method model#MClassDef#bound_mtype= for (self: MClassDef, MClassType) */
2172 void model__MClassDef__bound_mtype_61d(val* self, val* p0) {
2173 self->attrs[COLOR_model__MClassDef___64dbound_mtype].val = p0; /* @bound_mtype on <self:MClassDef> */
2174 RET_LABEL:;
2175 }
2176 /* method model#MClassDef#bound_mtype= for (self: Object, MClassType) */
2177 void VIRTUAL_model__MClassDef__bound_mtype_61d(val* self, val* p0) {
2178 model__MClassDef__bound_mtype_61d(self, p0);
2179 RET_LABEL:;
2180 }
2181 /* method model#MClassDef#parameter_names for (self: MClassDef): Array[String] */
2182 val* model__MClassDef__parameter_names(val* self) {
2183 val* var /* : Array[String] */;
2184 val* var1 /* : Array[String] */;
2185 var1 = self->attrs[COLOR_model__MClassDef___64dparameter_names].val; /* @parameter_names on <self:MClassDef> */
2186 if (var1 == NULL) {
2187 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @parameter_names");
2188 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 433);
2189 show_backtrace(1);
2190 }
2191 var = var1;
2192 RET_LABEL:;
2193 return var;
2194 }
2195 /* method model#MClassDef#parameter_names for (self: Object): Array[String] */
2196 val* VIRTUAL_model__MClassDef__parameter_names(val* self) {
2197 val* var /* : Array[String] */;
2198 val* var1 /* : Array[String] */;
2199 var1 = model__MClassDef__parameter_names(self);
2200 var = var1;
2201 RET_LABEL:;
2202 return var;
2203 }
2204 /* method model#MClassDef#parameter_names= for (self: MClassDef, Array[String]) */
2205 void model__MClassDef__parameter_names_61d(val* self, val* p0) {
2206 self->attrs[COLOR_model__MClassDef___64dparameter_names].val = p0; /* @parameter_names on <self:MClassDef> */
2207 RET_LABEL:;
2208 }
2209 /* method model#MClassDef#parameter_names= for (self: Object, Array[String]) */
2210 void VIRTUAL_model__MClassDef__parameter_names_61d(val* self, val* p0) {
2211 model__MClassDef__parameter_names_61d(self, p0);
2212 RET_LABEL:;
2213 }
2214 /* method model#MClassDef#location for (self: MClassDef): Location */
2215 val* model__MClassDef__location(val* self) {
2216 val* var /* : Location */;
2217 val* var1 /* : Location */;
2218 var1 = self->attrs[COLOR_model__MClassDef___64dlocation].val; /* @location on <self:MClassDef> */
2219 if (var1 == NULL) {
2220 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
2221 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 436);
2222 show_backtrace(1);
2223 }
2224 var = var1;
2225 RET_LABEL:;
2226 return var;
2227 }
2228 /* method model#MClassDef#location for (self: Object): Location */
2229 val* VIRTUAL_model__MClassDef__location(val* self) {
2230 val* var /* : Location */;
2231 val* var1 /* : Location */;
2232 var1 = model__MClassDef__location(self);
2233 var = var1;
2234 RET_LABEL:;
2235 return var;
2236 }
2237 /* method model#MClassDef#location= for (self: MClassDef, Location) */
2238 void model__MClassDef__location_61d(val* self, val* p0) {
2239 self->attrs[COLOR_model__MClassDef___64dlocation].val = p0; /* @location on <self:MClassDef> */
2240 RET_LABEL:;
2241 }
2242 /* method model#MClassDef#location= for (self: Object, Location) */
2243 void VIRTUAL_model__MClassDef__location_61d(val* self, val* p0) {
2244 model__MClassDef__location_61d(self, p0);
2245 RET_LABEL:;
2246 }
2247 /* method model#MClassDef#to_s for (self: MClassDef): String */
2248 val* model__MClassDef__to_s(val* self) {
2249 val* var /* : String */;
2250 val* var1 /* : String */;
2251 var1 = self->attrs[COLOR_model__MClassDef___64dto_s].val; /* @to_s on <self:MClassDef> */
2252 if (var1 == NULL) {
2253 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
2254 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 439);
2255 show_backtrace(1);
2256 }
2257 var = var1;
2258 RET_LABEL:;
2259 return var;
2260 }
2261 /* method model#MClassDef#to_s for (self: Object): String */
2262 val* VIRTUAL_model__MClassDef__to_s(val* self) {
2263 val* var /* : String */;
2264 val* var1 /* : String */;
2265 var1 = model__MClassDef__to_s(self);
2266 var = var1;
2267 RET_LABEL:;
2268 return var;
2269 }
2270 /* method model#MClassDef#to_s= for (self: MClassDef, String) */
2271 void model__MClassDef__to_s_61d(val* self, val* p0) {
2272 self->attrs[COLOR_model__MClassDef___64dto_s].val = p0; /* @to_s on <self:MClassDef> */
2273 RET_LABEL:;
2274 }
2275 /* method model#MClassDef#to_s= for (self: Object, String) */
2276 void VIRTUAL_model__MClassDef__to_s_61d(val* self, val* p0) {
2277 model__MClassDef__to_s_61d(self, p0);
2278 RET_LABEL:;
2279 }
2280 /* method model#MClassDef#init for (self: MClassDef, MModule, MClassType, Location, Array[String]) */
2281 void model__MClassDef__init(val* self, val* p0, val* p1, val* p2, val* p3) {
2282 val* var_mmodule /* var mmodule: MModule */;
2283 val* var_bound_mtype /* var bound_mtype: MClassType */;
2284 val* var_location /* var location: Location */;
2285 val* var_parameter_names /* var parameter_names: Array[String] */;
2286 val* var /* : MClass */;
2287 long var1 /* : Int */;
2288 long var2 /* : Int */;
2289 short int var3 /* : Bool */;
2290 short int var5 /* : Bool */;
2291 val* var6 /* : MClass */;
2292 val* var7 /* : Array[MClassDef] */;
2293 val* var8 /* : MClass */;
2294 val* var9 /* : Array[MClassDef] */;
2295 static val* varonce;
2296 val* var10 /* : String */;
2297 char* var11 /* : NativeString */;
2298 long var12 /* : Int */;
2299 val* var13 /* : String */;
2300 val* var14 /* : MClass */;
2301 val* var15 /* : Array[Object] */;
2302 long var16 /* : Int */;
2303 val* var17 /* : NativeArray[Object] */;
2304 val* var18 /* : String */;
2305 var_mmodule = p0;
2306 var_bound_mtype = p1;
2307 var_location = p2;
2308 var_parameter_names = p3;
2309 var = ((val* (*)(val*))(var_bound_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_bound_mtype) /* mclass on <var_bound_mtype:MClassType>*/;
2310 var1 = ((long (*)(val*))(var->class->vft[COLOR_model__MClass__arity]))(var) /* arity on <var:MClass>*/;
2311 var2 = ((long (*)(val*))(var_parameter_names->class->vft[COLOR_abstract_collection__Collection__length]))(var_parameter_names) /* length on <var_parameter_names:Array[String]>*/;
2312 { /* Inline kernel#Int#== (var1,var2) */
2313 var5 = var1 == var2;
2314 var3 = var5;
2315 goto RET_LABEL4;
2316 RET_LABEL4:(void)0;
2317 }
2318 if (!var3) {
2319 fprintf(stderr, "Runtime error: %s", "Assert failed");
2320 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 445);
2321 show_backtrace(1);
2322 }
2323 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype_61d]))(self, var_bound_mtype) /* bound_mtype= on <self:MClassDef>*/;
2324 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MClassDef>*/;
2325 var6 = ((val* (*)(val*))(var_bound_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_bound_mtype) /* mclass on <var_bound_mtype:MClassType>*/;
2326 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__mclass_61d]))(self, var6) /* mclass= on <self:MClassDef>*/;
2327 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__location_61d]))(self, var_location) /* location= on <self:MClassDef>*/;
2328 var7 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
2329 ((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, self) /* add on <var7:Array[MClassDef]>*/;
2330 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2331 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MClass__mclassdefs]))(var8) /* mclassdefs on <var8:MClass>*/;
2332 ((void (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var9, self) /* add on <var9:Array[MClassDef]>*/;
2333 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__parameter_names_61d]))(self, var_parameter_names) /* parameter_names= on <self:MClassDef>*/;
2334 if (varonce) {
2335 var10 = varonce;
2336 } else {
2337 var11 = "#";
2338 var12 = 1;
2339 var13 = string__NativeString__to_s_with_length(var11, var12);
2340 var10 = var13;
2341 varonce = var10;
2342 }
2343 var14 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2344 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
2345 { /* var15 = array_instance Array[Object] */
2346 var16 = 3;
2347 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
2348 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var_mmodule;
2349 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var10;
2350 ((struct instance_array__NativeArray*)var17)->values[2] = (val*) var14;
2351 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
2352 }
2353 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
2354 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__to_s_61d]))(self, var18) /* to_s= on <self:MClassDef>*/;
2355 RET_LABEL:;
2356 }
2357 /* method model#MClassDef#init for (self: Object, MModule, MClassType, Location, Array[String]) */
2358 void VIRTUAL_model__MClassDef__init(val* self, val* p0, val* p1, val* p2, val* p3) {
2359 model__MClassDef__init(self, p0, p1, p2, p3);
2360 RET_LABEL:;
2361 }
2362 /* method model#MClassDef#supertypes for (self: MClassDef): Array[MClassType] */
2363 val* model__MClassDef__supertypes(val* self) {
2364 val* var /* : Array[MClassType] */;
2365 val* var1 /* : Array[MClassType] */;
2366 var1 = self->attrs[COLOR_model__MClassDef___64dsupertypes].val; /* @supertypes on <self:MClassDef> */
2367 if (var1 == NULL) {
2368 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @supertypes");
2369 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 456);
2370 show_backtrace(1);
2371 }
2372 var = var1;
2373 RET_LABEL:;
2374 return var;
2375 }
2376 /* method model#MClassDef#supertypes for (self: Object): Array[MClassType] */
2377 val* VIRTUAL_model__MClassDef__supertypes(val* self) {
2378 val* var /* : Array[MClassType] */;
2379 val* var1 /* : Array[MClassType] */;
2380 var1 = model__MClassDef__supertypes(self);
2381 var = var1;
2382 RET_LABEL:;
2383 return var;
2384 }
2385 /* method model#MClassDef#supertypes= for (self: MClassDef, Array[MClassType]) */
2386 void model__MClassDef__supertypes_61d(val* self, val* p0) {
2387 self->attrs[COLOR_model__MClassDef___64dsupertypes].val = p0; /* @supertypes on <self:MClassDef> */
2388 RET_LABEL:;
2389 }
2390 /* method model#MClassDef#supertypes= for (self: Object, Array[MClassType]) */
2391 void VIRTUAL_model__MClassDef__supertypes_61d(val* self, val* p0) {
2392 model__MClassDef__supertypes_61d(self, p0);
2393 RET_LABEL:;
2394 }
2395 /* method model#MClassDef#set_supertypes for (self: MClassDef, Array[MClassType]) */
2396 void model__MClassDef__set_supertypes(val* self, val* p0) {
2397 val* var_supertypes /* var supertypes: Array[MClassType] */;
2398 val* var /* : nullable POSetElement[MClassDef] */;
2399 val* var1 /* : null */;
2400 short int var2 /* : Bool */;
2401 val* var3 /* : MModule */;
2402 val* var_mmodule /* var mmodule: MModule */;
2403 val* var4 /* : Model */;
2404 val* var_model /* var model: Model */;
2405 val* var5 /* : MClassType */;
2406 val* var_mtype /* var mtype: MClassType */;
2407 val* var6 /* : Iterator[nullable Object] */;
2408 short int var7 /* : Bool */;
2409 val* var8 /* : nullable Object */;
2410 val* var_supertype /* var supertype: MClassType */;
2411 val* var9 /* : Array[MClassType] */;
2412 val* var10 /* : POSet[MClassType] */;
2413 short int var11 /* : Bool */;
2414 val* var12 /* : MClass */;
2415 val* var13 /* : MModule */;
2416 short int var14 /* : Bool */;
2417 short int var_ /* var : Bool */;
2418 val* var15 /* : MClass */;
2419 val* var16 /* : MModule */;
2420 short int var17 /* : Bool */;
2421 val* var18 /* : POSet[MClassType] */;
2422 var_supertypes = p0;
2423 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy]))(self) /* in_hierarchy on <self:MClassDef>*/;
2424 var1 = NULL;
2425 if (var == NULL) {
2426 var2 = 1; /* is null */
2427 } else {
2428 var2 = 0; /* arg is null but recv is not */
2429 }
2430 if (!var2) {
2431 fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
2432 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 466);
2433 show_backtrace(1);
2434 }
2435 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2436 var_mmodule = var3;
2437 var4 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__model]))(var_mmodule) /* model on <var_mmodule:MModule>*/;
2438 var_model = var4;
2439 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype]))(self) /* bound_mtype on <self:MClassDef>*/;
2440 var_mtype = var5;
2441 var6 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Array[MClassType]>*/;
2442 for(;;) {
2443 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
2444 if(!var7) break;
2445 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
2446 var_supertype = var8;
2447 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__supertypes]))(self) /* supertypes on <self:MClassDef>*/;
2448 ((void (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var9, var_supertype) /* add on <var9:Array[MClassType]>*/;
2449 var10 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__full_mtype_specialization_hierarchy]))(var_model) /* full_mtype_specialization_hierarchy on <var_model:Model>*/;
2450 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_poset__POSet__add_edge]))(var10, var_mtype, var_supertype) /* add_edge on <var10:POSet[MClassType]>*/;
2451 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2452 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClass__intro_mmodule]))(var12) /* intro_mmodule on <var12:MClass>*/;
2453 var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_kernel__Object___61d_61d]))(var13, var_mmodule) /* == on <var13:MModule>*/;
2454 var_ = var14;
2455 if (var14){
2456 var15 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
2457 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__intro_mmodule]))(var15) /* intro_mmodule on <var15:MClass>*/;
2458 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var_mmodule) /* == on <var16:MModule>*/;
2459 var11 = var17;
2460 } else {
2461 var11 = var_;
2462 }
2463 if (var11){
2464 var18 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__intro_mtype_specialization_hierarchy]))(var_model) /* intro_mtype_specialization_hierarchy on <var_model:Model>*/;
2465 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_poset__POSet__add_edge]))(var18, var_mtype, var_supertype) /* add_edge on <var18:POSet[MClassType]>*/;
2466 } else {
2467 }
2468 CONTINUE_label: (void)0;
2469 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
2470 }
2471 BREAK_label: (void)0;
2472 RET_LABEL:;
2473 }
2474 /* method model#MClassDef#set_supertypes for (self: Object, Array[MClassType]) */
2475 void VIRTUAL_model__MClassDef__set_supertypes(val* self, val* p0) {
2476 model__MClassDef__set_supertypes(self, p0);
2477 RET_LABEL:;
2478 }
2479 /* method model#MClassDef#add_in_hierarchy for (self: MClassDef) */
2480 void model__MClassDef__add_in_hierarchy(val* self) {
2481 val* var /* : nullable POSetElement[MClassDef] */;
2482 val* var1 /* : null */;
2483 short int var2 /* : Bool */;
2484 val* var3 /* : MModule */;
2485 val* var4 /* : Model */;
2486 val* var_model /* var model: Model */;
2487 val* var5 /* : POSet[MClassDef] */;
2488 val* var6 /* : POSetElement[Object] */;
2489 val* var_res /* var res: POSetElement[MClassDef] */;
2490 val* var7 /* : MClassType */;
2491 val* var_mtype /* var mtype: MClassType */;
2492 val* var8 /* : MModule */;
2493 val* var9 /* : Set[MClassDef] */;
2494 val* var10 /* : Iterator[nullable Object] */;
2495 short int var11 /* : Bool */;
2496 val* var12 /* : nullable Object */;
2497 val* var_mclassdef /* var mclassdef: MClassDef */;
2498 val* var13 /* : POSet[Object] */;
2499 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy]))(self) /* in_hierarchy on <self:MClassDef>*/;
2500 var1 = NULL;
2501 if (var == NULL) {
2502 var2 = 1; /* is null */
2503 } else {
2504 var2 = 0; /* arg is null but recv is not */
2505 }
2506 if (!var2) {
2507 fprintf(stderr, "Runtime error: %s", "Assert \'unique_invocation\' failed");
2508 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 491);
2509 show_backtrace(1);
2510 }
2511 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2512 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__MModule__model]))(var3) /* model on <var3:MModule>*/;
2513 var_model = var4;
2514 var5 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mclassdef_hierarchy]))(var_model) /* mclassdef_hierarchy on <var_model:Model>*/;
2515 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_poset__POSet__add_node]))(var5, self) /* add_node on <var5:POSet[MClassDef]>*/;
2516 var_res = var6;
2517 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassDef__in_hierarchy_61d]))(self, var_res) /* in_hierarchy= on <self:MClassDef>*/;
2518 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__bound_mtype]))(self) /* bound_mtype on <self:MClassDef>*/;
2519 var_mtype = var7;
2520 var8 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mmodule]))(self) /* mmodule on <self:MClassDef>*/;
2521 var9 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var8) /* collect_mclassdefs on <var_mtype:MClassType>*/;
2522 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Set[MClassDef]>*/;
2523 for(;;) {
2524 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
2525 if(!var11) break;
2526 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
2527 var_mclassdef = var12;
2528 var13 = ((val* (*)(val*))(var_res->class->vft[COLOR_poset__POSetElement__poset]))(var_res) /* poset on <var_res:POSetElement[MClassDef]>*/;
2529 ((void (*)(val*, val*, val*))(var13->class->vft[COLOR_poset__POSet__add_edge]))(var13, self, var_mclassdef) /* add_edge on <var13:POSet[Object](POSet[MClassDef])>*/;
2530 CONTINUE_label: (void)0;
2531 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
2532 }
2533 BREAK_label: (void)0;
2534 RET_LABEL:;
2535 }
2536 /* method model#MClassDef#add_in_hierarchy for (self: Object) */
2537 void VIRTUAL_model__MClassDef__add_in_hierarchy(val* self) {
2538 model__MClassDef__add_in_hierarchy(self);
2539 RET_LABEL:;
2540 }
2541 /* method model#MClassDef#in_hierarchy for (self: MClassDef): nullable POSetElement[MClassDef] */
2542 val* model__MClassDef__in_hierarchy(val* self) {
2543 val* var /* : nullable POSetElement[MClassDef] */;
2544 val* var1 /* : nullable POSetElement[MClassDef] */;
2545 var1 = self->attrs[COLOR_model__MClassDef___64din_hierarchy].val; /* @in_hierarchy on <self:MClassDef> */
2546 var = var1;
2547 RET_LABEL:;
2548 return var;
2549 }
2550 /* method model#MClassDef#in_hierarchy for (self: Object): nullable POSetElement[MClassDef] */
2551 val* VIRTUAL_model__MClassDef__in_hierarchy(val* self) {
2552 val* var /* : nullable POSetElement[MClassDef] */;
2553 val* var1 /* : nullable POSetElement[MClassDef] */;
2554 var1 = model__MClassDef__in_hierarchy(self);
2555 var = var1;
2556 RET_LABEL:;
2557 return var;
2558 }
2559 /* method model#MClassDef#in_hierarchy= for (self: MClassDef, nullable POSetElement[MClassDef]) */
2560 void model__MClassDef__in_hierarchy_61d(val* self, val* p0) {
2561 self->attrs[COLOR_model__MClassDef___64din_hierarchy].val = p0; /* @in_hierarchy on <self:MClassDef> */
2562 RET_LABEL:;
2563 }
2564 /* method model#MClassDef#in_hierarchy= for (self: Object, nullable POSetElement[MClassDef]) */
2565 void VIRTUAL_model__MClassDef__in_hierarchy_61d(val* self, val* p0) {
2566 model__MClassDef__in_hierarchy_61d(self, p0);
2567 RET_LABEL:;
2568 }
2569 /* method model#MClassDef#is_intro for (self: MClassDef): Bool */
2570 short int model__MClassDef__is_intro(val* self) {
2571 short int var /* : Bool */;
2572 val* var1 /* : MClass */;
2573 val* var2 /* : MClassDef */;
2574 short int var3 /* : Bool */;
2575 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassDef__mclass]))(self) /* mclass on <self:MClassDef>*/;
2576 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro]))(var1) /* intro on <var1:MClass>*/;
2577 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, self) /* == on <var2:MClassDef>*/;
2578 var = var3;
2579 goto RET_LABEL;
2580 RET_LABEL:;
2581 return var;
2582 }
2583 /* method model#MClassDef#is_intro for (self: Object): Bool */
2584 short int VIRTUAL_model__MClassDef__is_intro(val* self) {
2585 short int var /* : Bool */;
2586 short int var1 /* : Bool */;
2587 var1 = model__MClassDef__is_intro(self);
2588 var = var1;
2589 RET_LABEL:;
2590 return var;
2591 }
2592 /* method model#MClassDef#intro_mproperties for (self: MClassDef): Array[MProperty] */
2593 val* model__MClassDef__intro_mproperties(val* self) {
2594 val* var /* : Array[MProperty] */;
2595 val* var1 /* : Array[MProperty] */;
2596 var1 = self->attrs[COLOR_model__MClassDef___64dintro_mproperties].val; /* @intro_mproperties on <self:MClassDef> */
2597 if (var1 == NULL) {
2598 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mproperties");
2599 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 510);
2600 show_backtrace(1);
2601 }
2602 var = var1;
2603 RET_LABEL:;
2604 return var;
2605 }
2606 /* method model#MClassDef#intro_mproperties for (self: Object): Array[MProperty] */
2607 val* VIRTUAL_model__MClassDef__intro_mproperties(val* self) {
2608 val* var /* : Array[MProperty] */;
2609 val* var1 /* : Array[MProperty] */;
2610 var1 = model__MClassDef__intro_mproperties(self);
2611 var = var1;
2612 RET_LABEL:;
2613 return var;
2614 }
2615 /* method model#MClassDef#intro_mproperties= for (self: MClassDef, Array[MProperty]) */
2616 void model__MClassDef__intro_mproperties_61d(val* self, val* p0) {
2617 self->attrs[COLOR_model__MClassDef___64dintro_mproperties].val = p0; /* @intro_mproperties on <self:MClassDef> */
2618 RET_LABEL:;
2619 }
2620 /* method model#MClassDef#intro_mproperties= for (self: Object, Array[MProperty]) */
2621 void VIRTUAL_model__MClassDef__intro_mproperties_61d(val* self, val* p0) {
2622 model__MClassDef__intro_mproperties_61d(self, p0);
2623 RET_LABEL:;
2624 }
2625 /* method model#MClassDef#mpropdefs for (self: MClassDef): Array[MPropDef] */
2626 val* model__MClassDef__mpropdefs(val* self) {
2627 val* var /* : Array[MPropDef] */;
2628 val* var1 /* : Array[MPropDef] */;
2629 var1 = self->attrs[COLOR_model__MClassDef___64dmpropdefs].val; /* @mpropdefs on <self:MClassDef> */
2630 if (var1 == NULL) {
2631 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
2632 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 513);
2633 show_backtrace(1);
2634 }
2635 var = var1;
2636 RET_LABEL:;
2637 return var;
2638 }
2639 /* method model#MClassDef#mpropdefs for (self: Object): Array[MPropDef] */
2640 val* VIRTUAL_model__MClassDef__mpropdefs(val* self) {
2641 val* var /* : Array[MPropDef] */;
2642 val* var1 /* : Array[MPropDef] */;
2643 var1 = model__MClassDef__mpropdefs(self);
2644 var = var1;
2645 RET_LABEL:;
2646 return var;
2647 }
2648 /* method model#MClassDef#mpropdefs= for (self: MClassDef, Array[MPropDef]) */
2649 void model__MClassDef__mpropdefs_61d(val* self, val* p0) {
2650 self->attrs[COLOR_model__MClassDef___64dmpropdefs].val = p0; /* @mpropdefs on <self:MClassDef> */
2651 RET_LABEL:;
2652 }
2653 /* method model#MClassDef#mpropdefs= for (self: Object, Array[MPropDef]) */
2654 void VIRTUAL_model__MClassDef__mpropdefs_61d(val* self, val* p0) {
2655 model__MClassDef__mpropdefs_61d(self, p0);
2656 RET_LABEL:;
2657 }
2658 /* method model#MType#model for (self: MType): Model */
2659 val* model__MType__model(val* self) {
2660 val* var /* : Model */;
2661 const char* var_class_name;
2662 var_class_name = self == NULL ? "null" : self->type->name;
2663 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "model", var_class_name);
2664 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 546);
2665 show_backtrace(1);
2666 RET_LABEL:;
2667 return var;
2668 }
2669 /* method model#MType#model for (self: Object): Model */
2670 val* VIRTUAL_model__MType__model(val* self) {
2671 val* var /* : Model */;
2672 val* var1 /* : Model */;
2673 var1 = model__MType__model(self);
2674 var = var1;
2675 RET_LABEL:;
2676 return var;
2677 }
2678 /* method model#MType#is_subtype for (self: MType, MModule, nullable MClassType, MType): Bool */
2679 short int model__MType__is_subtype(val* self, val* p0, val* p1, val* p2) {
2680 short int var /* : Bool */;
2681 val* var_mmodule /* var mmodule: MModule */;
2682 val* var_anchor /* var anchor: nullable MClassType */;
2683 val* var_sup /* var sup: MType */;
2684 val* var_sub /* var sub: MType */;
2685 short int var1 /* : Bool */;
2686 short int var2 /* : Bool */;
2687 val* var3 /* : null */;
2688 short int var4 /* : Bool */;
2689 short int var5 /* : Bool */;
2690 short int var6 /* : Bool */;
2691 short int var7 /* : Bool */;
2692 short int var8 /* : Bool */;
2693 val* var9 /* : null */;
2694 short int var10 /* : Bool */;
2695 val* var11 /* : null */;
2696 short int var12 /* : Bool */;
2697 short int var13 /* : Bool */;
2698 short int var14 /* : Bool */;
2699 int cltype;
2700 int idtype;
2701 short int var_ /* var : Bool */;
2702 short int var15 /* : Bool */;
2703 int cltype16;
2704 int idtype17;
2705 val* var18 /* : null */;
2706 short int var19 /* : Bool */;
2707 val* var20 /* : MClass */;
2708 val* var21 /* : MClassType */;
2709 short int var22 /* : Bool */;
2710 val* var23 /* : MType */;
2711 short int var24 /* : Bool */;
2712 short int var25 /* : Bool */;
2713 int cltype26;
2714 int idtype27;
2715 short int var_28 /* var : Bool */;
2716 short int var29 /* : Bool */;
2717 int cltype30;
2718 int idtype31;
2719 val* var32 /* : null */;
2720 short int var33 /* : Bool */;
2721 val* var34 /* : MClass */;
2722 val* var35 /* : MClassType */;
2723 short int var36 /* : Bool */;
2724 val* var37 /* : MType */;
2725 short int var38 /* : Bool */;
2726 short int var_sup_accept_null /* var sup_accept_null: Bool */;
2727 short int var39 /* : Bool */;
2728 int cltype40;
2729 int idtype41;
2730 short int var42 /* : Bool */;
2731 val* var43 /* : MType */;
2732 short int var44 /* : Bool */;
2733 int cltype45;
2734 int idtype46;
2735 short int var47 /* : Bool */;
2736 short int var48 /* : Bool */;
2737 int cltype49;
2738 int idtype50;
2739 short int var51 /* : Bool */;
2740 short int var52 /* : Bool */;
2741 val* var53 /* : MType */;
2742 short int var54 /* : Bool */;
2743 int cltype55;
2744 int idtype56;
2745 short int var57 /* : Bool */;
2746 short int var58 /* : Bool */;
2747 int cltype59;
2748 int idtype60;
2749 short int var_61 /* var : Bool */;
2750 short int var62 /* : Bool */;
2751 int cltype63;
2752 int idtype64;
2753 short int var65 /* : Bool */;
2754 short int var66 /* : Bool */;
2755 short int var67 /* : Bool */;
2756 int cltype68;
2757 int idtype69;
2758 short int var_70 /* var : Bool */;
2759 short int var71 /* : Bool */;
2760 int cltype72;
2761 int idtype73;
2762 val* var74 /* : null */;
2763 short int var75 /* : Bool */;
2764 val* var76 /* : MType */;
2765 short int var77 /* : Bool */;
2766 int cltype78;
2767 int idtype79;
2768 short int var80 /* : Bool */;
2769 short int var81 /* : Bool */;
2770 val* var82 /* : MType */;
2771 short int var83 /* : Bool */;
2772 int cltype84;
2773 int idtype85;
2774 short int var86 /* : Bool */;
2775 int cltype87;
2776 int idtype88;
2777 short int var89 /* : Bool */;
2778 int cltype90;
2779 int idtype91;
2780 short int var92 /* : Bool */;
2781 short int var93 /* : Bool */;
2782 int cltype94;
2783 int idtype95;
2784 short int var96 /* : Bool */;
2785 short int var97 /* : Bool */;
2786 val* var98 /* : null */;
2787 short int var99 /* : Bool */;
2788 val* var100 /* : MType */;
2789 val* var_resolved_sub /* var resolved_sub: MClassType */;
2790 val* var101 /* : Set[MClass] */;
2791 val* var102 /* : MClass */;
2792 short int var103 /* : Bool */;
2793 short int var_res /* var res: Bool */;
2794 short int var104 /* : Bool */;
2795 short int var105 /* : Bool */;
2796 short int var107 /* : Bool */;
2797 short int var108 /* : Bool */;
2798 short int var109 /* : Bool */;
2799 int cltype110;
2800 int idtype111;
2801 short int var112 /* : Bool */;
2802 short int var113 /* : Bool */;
2803 val* var114 /* : MClass */;
2804 val* var115 /* : MClassType */;
2805 val* var_sub2 /* var sub2: MClassType */;
2806 val* var116 /* : MClass */;
2807 val* var117 /* : MClass */;
2808 short int var118 /* : Bool */;
2809 val* var119 /* : Range[Int] */;
2810 long var120 /* : Int */;
2811 val* var121 /* : MClass */;
2812 long var122 /* : Int */;
2813 val* var123 /* : Discrete */;
2814 val* var124 /* : Discrete */;
2815 val* var125 /* : Iterator[nullable Object] */;
2816 short int var126 /* : Bool */;
2817 val* var127 /* : nullable Object */;
2818 long var_i /* var i: Int */;
2819 long var128 /* : Int */;
2820 val* var129 /* : Array[MType] */;
2821 val* var130 /* : nullable Object */;
2822 val* var_sub_arg /* var sub_arg: MType */;
2823 val* var131 /* : Array[MType] */;
2824 val* var132 /* : nullable Object */;
2825 val* var_sup_arg /* var sup_arg: MType */;
2826 short int var133 /* : Bool */;
2827 short int var134 /* : Bool */;
2828 short int var135 /* : Bool */;
2829 short int var137 /* : Bool */;
2830 short int var138 /* : Bool */;
2831 short int var139 /* : Bool */;
2832 var_mmodule = p0;
2833 var_anchor = p1;
2834 var_sup = p2;
2835 var_sub = self;
2836 var1 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType>*/;
2837 if (var1){
2838 var2 = 1;
2839 var = var2;
2840 goto RET_LABEL;
2841 } else {
2842 }
2843 var3 = NULL;
2844 if (var_anchor == NULL) {
2845 var4 = 1; /* is null */
2846 } else {
2847 var4 = 0; /* arg is null but recv is not */
2848 }
2849 if (var4){
2850 var5 = ((short int (*)(val*))(var_sub->class->vft[COLOR_model__MType__need_anchor]))(var_sub) /* need_anchor on <var_sub:MType>*/;
2851 var6 = !var5;
2852 if (!var6) {
2853 fprintf(stderr, "Runtime error: %s", "Assert failed");
2854 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 559);
2855 show_backtrace(1);
2856 }
2857 var7 = ((short int (*)(val*))(var_sup->class->vft[COLOR_model__MType__need_anchor]))(var_sup) /* need_anchor on <var_sup:MType>*/;
2858 var8 = !var7;
2859 if (!var8) {
2860 fprintf(stderr, "Runtime error: %s", "Assert failed");
2861 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 560);
2862 show_backtrace(1);
2863 }
2864 } else {
2865 var9 = NULL;
2866 var10 = ((short int (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__can_resolve_for]))(var_sub, var_anchor, var9, var_mmodule) /* can_resolve_for on <var_sub:MType>*/;
2867 if (!var10) {
2868 fprintf(stderr, "Runtime error: %s", "Assert failed");
2869 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 562);
2870 show_backtrace(1);
2871 }
2872 var11 = NULL;
2873 var12 = ((short int (*)(val*, val*, val*, val*))(var_sup->class->vft[COLOR_model__MType__can_resolve_for]))(var_sup, var_anchor, var11, var_mmodule) /* can_resolve_for on <var_sup:MType>*/;
2874 if (!var12) {
2875 fprintf(stderr, "Runtime error: %s", "Assert failed");
2876 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 563);
2877 show_backtrace(1);
2878 }
2879 }
2880 /* <var_sub:MType> isa MParameterType */
2881 cltype = type_model__MParameterType.color;
2882 idtype = type_model__MParameterType.id;
2883 if(cltype >= var_sub->type->table_size) {
2884 var14 = 0;
2885 } else {
2886 var14 = var_sub->type->type_table[cltype] == idtype;
2887 }
2888 var_ = var14;
2889 if (var14){
2890 var13 = var_;
2891 } else {
2892 /* <var_sub:MType> isa MVirtualType */
2893 cltype16 = type_model__MVirtualType.color;
2894 idtype17 = type_model__MVirtualType.id;
2895 if(cltype16 >= var_sub->type->table_size) {
2896 var15 = 0;
2897 } else {
2898 var15 = var_sub->type->type_table[cltype16] == idtype17;
2899 }
2900 var13 = var15;
2901 }
2902 if (var13){
2903 var18 = NULL;
2904 if (var_anchor == NULL) {
2905 var19 = 0; /* is null */
2906 } else {
2907 var19 = 1; /* arg is null and recv is not */
2908 }
2909 if (!var19) {
2910 fprintf(stderr, "Runtime error: %s", "Assert failed");
2911 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 570);
2912 show_backtrace(1);
2913 }
2914 var20 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
2915 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClass__mclass_type]))(var20) /* mclass_type on <var20:MClass>*/;
2916 var22 = 0;
2917 var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_sub->class->vft[COLOR_model__MType__resolve_for]))(var_sub, var21, var_anchor, var_mmodule, var22) /* resolve_for on <var_sub:MType>*/;
2918 var_sub = var23;
2919 } else {
2920 }
2921 /* <var_sup:MType> isa MParameterType */
2922 cltype26 = type_model__MParameterType.color;
2923 idtype27 = type_model__MParameterType.id;
2924 if(cltype26 >= var_sup->type->table_size) {
2925 var25 = 0;
2926 } else {
2927 var25 = var_sup->type->type_table[cltype26] == idtype27;
2928 }
2929 var_28 = var25;
2930 if (var25){
2931 var24 = var_28;
2932 } else {
2933 /* <var_sup:MType> isa MVirtualType */
2934 cltype30 = type_model__MVirtualType.color;
2935 idtype31 = type_model__MVirtualType.id;
2936 if(cltype30 >= var_sup->type->table_size) {
2937 var29 = 0;
2938 } else {
2939 var29 = var_sup->type->type_table[cltype30] == idtype31;
2940 }
2941 var24 = var29;
2942 }
2943 if (var24){
2944 var32 = NULL;
2945 if (var_anchor == NULL) {
2946 var33 = 0; /* is null */
2947 } else {
2948 var33 = 1; /* arg is null and recv is not */
2949 }
2950 if (!var33) {
2951 fprintf(stderr, "Runtime error: %s", "Assert failed");
2952 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 574);
2953 show_backtrace(1);
2954 }
2955 var34 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
2956 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_model__MClass__mclass_type]))(var34) /* mclass_type on <var34:MClass>*/;
2957 var36 = 0;
2958 var37 = ((val* (*)(val*, val*, val*, val*, short int))(var_sup->class->vft[COLOR_model__MType__resolve_for]))(var_sup, var35, var_anchor, var_mmodule, var36) /* resolve_for on <var_sup:MType>*/;
2959 var_sup = var37;
2960 } else {
2961 }
2962 var38 = 0;
2963 var_sup_accept_null = var38;
2964 /* <var_sup:MType> isa MNullableType */
2965 cltype40 = type_model__MNullableType.color;
2966 idtype41 = type_model__MNullableType.id;
2967 if(cltype40 >= var_sup->type->table_size) {
2968 var39 = 0;
2969 } else {
2970 var39 = var_sup->type->type_table[cltype40] == idtype41;
2971 }
2972 if (var39){
2973 var42 = 1;
2974 var_sup_accept_null = var42;
2975 var43 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MNullableType__mtype]))(var_sup) /* mtype on <var_sup:MType(MNullableType)>*/;
2976 var_sup = var43;
2977 } else {
2978 /* <var_sup:MType> isa MNullType */
2979 cltype45 = type_model__MNullType.color;
2980 idtype46 = type_model__MNullType.id;
2981 if(cltype45 >= var_sup->type->table_size) {
2982 var44 = 0;
2983 } else {
2984 var44 = var_sup->type->type_table[cltype45] == idtype46;
2985 }
2986 if (var44){
2987 var47 = 1;
2988 var_sup_accept_null = var47;
2989 } else {
2990 }
2991 }
2992 /* <var_sub:MType> isa MNullableType */
2993 cltype49 = type_model__MNullableType.color;
2994 idtype50 = type_model__MNullableType.id;
2995 if(cltype49 >= var_sub->type->table_size) {
2996 var48 = 0;
2997 } else {
2998 var48 = var_sub->type->type_table[cltype49] == idtype50;
2999 }
3000 if (var48){
3001 var51 = !var_sup_accept_null;
3002 if (var51){
3003 var52 = 0;
3004 var = var52;
3005 goto RET_LABEL;
3006 } else {
3007 }
3008 var53 = ((val* (*)(val*))(var_sub->class->vft[COLOR_model__MNullableType__mtype]))(var_sub) /* mtype on <var_sub:MType(MNullableType)>*/;
3009 var_sub = var53;
3010 } else {
3011 /* <var_sub:MType> isa MNullType */
3012 cltype55 = type_model__MNullType.color;
3013 idtype56 = type_model__MNullType.id;
3014 if(cltype55 >= var_sub->type->table_size) {
3015 var54 = 0;
3016 } else {
3017 var54 = var_sub->type->type_table[cltype55] == idtype56;
3018 }
3019 if (var54){
3020 var = var_sup_accept_null;
3021 goto RET_LABEL;
3022 } else {
3023 }
3024 }
3025 /* <var_sup:MType> isa MParameterType */
3026 cltype59 = type_model__MParameterType.color;
3027 idtype60 = type_model__MParameterType.id;
3028 if(cltype59 >= var_sup->type->table_size) {
3029 var58 = 0;
3030 } else {
3031 var58 = var_sup->type->type_table[cltype59] == idtype60;
3032 }
3033 var_61 = var58;
3034 if (var58){
3035 var57 = var_61;
3036 } else {
3037 /* <var_sup:MType> isa MVirtualType */
3038 cltype63 = type_model__MVirtualType.color;
3039 idtype64 = type_model__MVirtualType.id;
3040 if(cltype63 >= var_sup->type->table_size) {
3041 var62 = 0;
3042 } else {
3043 var62 = var_sup->type->type_table[cltype63] == idtype64;
3044 }
3045 var57 = var62;
3046 }
3047 if (var57){
3048 var65 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType>*/;
3049 var = var65;
3050 goto RET_LABEL;
3051 } else {
3052 }
3053 /* <var_sub:MType> isa MParameterType */
3054 cltype68 = type_model__MParameterType.color;
3055 idtype69 = type_model__MParameterType.id;
3056 if(cltype68 >= var_sub->type->table_size) {
3057 var67 = 0;
3058 } else {
3059 var67 = var_sub->type->type_table[cltype68] == idtype69;
3060 }
3061 var_70 = var67;
3062 if (var67){
3063 var66 = var_70;
3064 } else {
3065 /* <var_sub:MType> isa MVirtualType */
3066 cltype72 = type_model__MVirtualType.color;
3067 idtype73 = type_model__MVirtualType.id;
3068 if(cltype72 >= var_sub->type->table_size) {
3069 var71 = 0;
3070 } else {
3071 var71 = var_sub->type->type_table[cltype72] == idtype73;
3072 }
3073 var66 = var71;
3074 }
3075 if (var66){
3076 var74 = NULL;
3077 if (var_anchor == NULL) {
3078 var75 = 0; /* is null */
3079 } else {
3080 var75 = 1; /* arg is null and recv is not */
3081 }
3082 if (!var75) {
3083 fprintf(stderr, "Runtime error: %s", "Assert failed");
3084 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 606);
3085 show_backtrace(1);
3086 }
3087 var76 = ((val* (*)(val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__anchor_to]))(var_sub, var_mmodule, var_anchor) /* anchor_to on <var_sub:MType>*/;
3088 var_sub = var76;
3089 /* <var_sub:MType> isa MNullableType */
3090 cltype78 = type_model__MNullableType.color;
3091 idtype79 = type_model__MNullableType.id;
3092 if(cltype78 >= var_sub->type->table_size) {
3093 var77 = 0;
3094 } else {
3095 var77 = var_sub->type->type_table[cltype78] == idtype79;
3096 }
3097 if (var77){
3098 var80 = !var_sup_accept_null;
3099 if (var80){
3100 var81 = 0;
3101 var = var81;
3102 goto RET_LABEL;
3103 } else {
3104 }
3105 var82 = ((val* (*)(val*))(var_sub->class->vft[COLOR_model__MNullableType__mtype]))(var_sub) /* mtype on <var_sub:MType(MNullableType)>*/;
3106 var_sub = var82;
3107 } else {
3108 /* <var_sub:MType> isa MNullType */
3109 cltype84 = type_model__MNullType.color;
3110 idtype85 = type_model__MNullType.id;
3111 if(cltype84 >= var_sub->type->table_size) {
3112 var83 = 0;
3113 } else {
3114 var83 = var_sub->type->type_table[cltype84] == idtype85;
3115 }
3116 if (var83){
3117 var = var_sup_accept_null;
3118 goto RET_LABEL;
3119 } else {
3120 }
3121 }
3122 } else {
3123 }
3124 /* <var_sub:MType> isa MClassType */
3125 cltype87 = type_model__MClassType.color;
3126 idtype88 = type_model__MClassType.id;
3127 if(cltype87 >= var_sub->type->table_size) {
3128 var86 = 0;
3129 } else {
3130 var86 = var_sub->type->type_table[cltype87] == idtype88;
3131 }
3132 if (!var86) {
3133 fprintf(stderr, "Runtime error: %s", "Assert failed");
3134 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 618);
3135 show_backtrace(1);
3136 }
3137 /* <var_sup:MType> isa MNullType */
3138 cltype90 = type_model__MNullType.color;
3139 idtype91 = type_model__MNullType.id;
3140 if(cltype90 >= var_sup->type->table_size) {
3141 var89 = 0;
3142 } else {
3143 var89 = var_sup->type->type_table[cltype90] == idtype91;
3144 }
3145 if (var89){
3146 var92 = 0;
3147 var = var92;
3148 goto RET_LABEL;
3149 } else {
3150 }
3151 /* <var_sup:MType> isa MClassType */
3152 cltype94 = type_model__MClassType.color;
3153 idtype95 = type_model__MClassType.id;
3154 if(cltype94 >= var_sup->type->table_size) {
3155 var93 = 0;
3156 } else {
3157 var93 = var_sup->type->type_table[cltype94] == idtype95;
3158 }
3159 if (!var93) {
3160 fprintf(stderr, "Runtime error: %s", "Assert failed");
3161 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 625);
3162 show_backtrace(1);
3163 }
3164 var96 = ((short int (*)(val*, val*))(var_sub->class->vft[COLOR_kernel__Object___61d_61d]))(var_sub, var_sup) /* == on <var_sub:MType(MClassType)>*/;
3165 if (var96){
3166 var97 = 1;
3167 var = var97;
3168 goto RET_LABEL;
3169 } else {
3170 }
3171 var98 = NULL;
3172 if (var_anchor == NULL) {
3173 var99 = 1; /* is null */
3174 } else {
3175 var99 = 0; /* arg is null but recv is not */
3176 }
3177 if (var99){
3178 var_anchor = var_sub;
3179 } else {
3180 }
3181 var100 = ((val* (*)(val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__anchor_to]))(var_sub, var_mmodule, var_anchor) /* anchor_to on <var_sub:MType(MClassType)>*/;
3182 var_resolved_sub = var100;
3183 var101 = ((val* (*)(val*, val*))(var_resolved_sub->class->vft[COLOR_model__MType__collect_mclasses]))(var_resolved_sub, var_mmodule) /* collect_mclasses on <var_resolved_sub:MClassType>*/;
3184 var102 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MClassType)>*/;
3185 var103 = ((short int (*)(val*, val*))(var101->class->vft[COLOR_abstract_collection__Collection__has]))(var101, var102) /* has on <var101:Set[MClass]>*/;
3186 var_res = var103;
3187 var104 = 0;
3188 { /* Inline kernel#Bool#== (var_res,var104) */
3189 var107 = var_res == var104;
3190 var105 = var107;
3191 goto RET_LABEL106;
3192 RET_LABEL106:(void)0;
3193 }
3194 if (var105){
3195 var108 = 0;
3196 var = var108;
3197 goto RET_LABEL;
3198 } else {
3199 }
3200 /* <var_sup:MType(MClassType)> isa MGenericType */
3201 cltype110 = type_model__MGenericType.color;
3202 idtype111 = type_model__MGenericType.id;
3203 if(cltype110 >= var_sup->type->table_size) {
3204 var109 = 0;
3205 } else {
3206 var109 = var_sup->type->type_table[cltype110] == idtype111;
3207 }
3208 var112 = !var109;
3209 if (var112){
3210 var113 = 1;
3211 var = var113;
3212 goto RET_LABEL;
3213 } else {
3214 }
3215 var114 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3216 var115 = ((val* (*)(val*, val*, val*, val*))(var_sub->class->vft[COLOR_model__MType__supertype_to]))(var_sub, var_mmodule, var_anchor, var114) /* supertype_to on <var_sub:MType(MClassType)>*/;
3217 var_sub2 = var115;
3218 var116 = ((val* (*)(val*))(var_sub2->class->vft[COLOR_model__MClassType__mclass]))(var_sub2) /* mclass on <var_sub2:MClassType>*/;
3219 var117 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3220 var118 = ((short int (*)(val*, val*))(var116->class->vft[COLOR_kernel__Object___61d_61d]))(var116, var117) /* == on <var116:MClass>*/;
3221 if (!var118) {
3222 fprintf(stderr, "Runtime error: %s", "Assert failed");
3223 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 637);
3224 show_backtrace(1);
3225 }
3226 var119 = NEW_range__Range(&type_range__Rangekernel__Int);
3227 var120 = 0;
3228 var121 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__mclass]))(var_sup) /* mclass on <var_sup:MType(MGenericType)>*/;
3229 var122 = ((long (*)(val*))(var121->class->vft[COLOR_model__MClass__arity]))(var121) /* arity on <var121:MClass>*/;
3230 var123 = BOX_kernel__Int(var120); /* autobox from Int to Discrete */
3231 var124 = BOX_kernel__Int(var122); /* autobox from Int to Discrete */
3232 ((void (*)(val*, val*, val*))(var119->class->vft[COLOR_range__Range__without_last]))(var119, var123, var124) /* without_last on <var119:Range[Int]>*/;
3233 var125 = ((val* (*)(val*))(var119->class->vft[COLOR_abstract_collection__Collection__iterator]))(var119) /* iterator on <var119:Range[Int]>*/;
3234 for(;;) {
3235 var126 = ((short int (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var125) /* is_ok on <var125:Iterator[nullable Object]>*/;
3236 if(!var126) break;
3237 var127 = ((val* (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__item]))(var125) /* item on <var125:Iterator[nullable Object]>*/;
3238 var128 = ((struct instance_kernel__Int*)var127)->value; /* autounbox from nullable Object to Int */;
3239 var_i = var128;
3240 var129 = ((val* (*)(val*))(var_sub2->class->vft[COLOR_model__MClassType__arguments]))(var_sub2) /* arguments on <var_sub2:MClassType>*/;
3241 var130 = ((val* (*)(val*, long))(var129->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var129, var_i) /* [] on <var129:Array[MType]>*/;
3242 var_sub_arg = var130;
3243 var131 = ((val* (*)(val*))(var_sup->class->vft[COLOR_model__MClassType__arguments]))(var_sup) /* arguments on <var_sup:MType(MGenericType)>*/;
3244 var132 = ((val* (*)(val*, long))(var131->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var131, var_i) /* [] on <var131:Array[MType]>*/;
3245 var_sup_arg = var132;
3246 var133 = ((short int (*)(val*, val*, val*, val*))(var_sub_arg->class->vft[COLOR_model__MType__is_subtype]))(var_sub_arg, var_mmodule, var_anchor, var_sup_arg) /* is_subtype on <var_sub_arg:MType>*/;
3247 var_res = var133;
3248 var134 = 0;
3249 { /* Inline kernel#Bool#== (var_res,var134) */
3250 var137 = var_res == var134;
3251 var135 = var137;
3252 goto RET_LABEL136;
3253 RET_LABEL136:(void)0;
3254 }
3255 if (var135){
3256 var138 = 0;
3257 var = var138;
3258 goto RET_LABEL;
3259 } else {
3260 }
3261 CONTINUE_label: (void)0;
3262 ((void (*)(val*))(var125->class->vft[COLOR_abstract_collection__Iterator__next]))(var125) /* next on <var125:Iterator[nullable Object]>*/;
3263 }
3264 BREAK_label: (void)0;
3265 var139 = 1;
3266 var = var139;
3267 goto RET_LABEL;
3268 RET_LABEL:;
3269 return var;
3270 }
3271 /* method model#MType#is_subtype for (self: Object, MModule, nullable MClassType, MType): Bool */
3272 short int VIRTUAL_model__MType__is_subtype(val* self, val* p0, val* p1, val* p2) {
3273 short int var /* : Bool */;
3274 short int var1 /* : Bool */;
3275 var1 = model__MType__is_subtype(self, p0, p1, p2);
3276 var = var1;
3277 RET_LABEL:;
3278 return var;
3279 }
3280 /* method model#MType#anchor_to for (self: MType, MModule, MClassType): MType */
3281 val* model__MType__anchor_to(val* self, val* p0, val* p1) {
3282 val* var /* : MType */;
3283 val* var_mmodule /* var mmodule: MModule */;
3284 val* var_anchor /* var anchor: MClassType */;
3285 short int var1 /* : Bool */;
3286 short int var2 /* : Bool */;
3287 short int var3 /* : Bool */;
3288 short int var4 /* : Bool */;
3289 val* var5 /* : null */;
3290 short int var6 /* : Bool */;
3291 val* var7 /* : MType */;
3292 val* var_res /* var res: MType */;
3293 short int var8 /* : Bool */;
3294 short int var9 /* : Bool */;
3295 var_mmodule = p0;
3296 var_anchor = p1;
3297 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3298 var2 = !var1;
3299 if (var2){
3300 var = self;
3301 goto RET_LABEL;
3302 } else {
3303 }
3304 var3 = ((short int (*)(val*))(var_anchor->class->vft[COLOR_model__MType__need_anchor]))(var_anchor) /* need_anchor on <var_anchor:MClassType>*/;
3305 var4 = !var3;
3306 if (!var4) {
3307 fprintf(stderr, "Runtime error: %s", "Assert failed");
3308 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 682);
3309 show_backtrace(1);
3310 }
3311 var5 = NULL;
3312 var6 = 1;
3313 var7 = ((val* (*)(val*, val*, val*, val*, short int))(self->class->vft[COLOR_model__MType__resolve_for]))(self, var_anchor, var5, var_mmodule, var6) /* resolve_for on <self:MType>*/;
3314 var_res = var7;
3315 var8 = ((short int (*)(val*))(var_res->class->vft[COLOR_model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
3316 var9 = !var8;
3317 if (!var9) {
3318 fprintf(stderr, "Runtime error: %s", "Assert failed");
3319 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 685);
3320 show_backtrace(1);
3321 }
3322 var = var_res;
3323 goto RET_LABEL;
3324 RET_LABEL:;
3325 return var;
3326 }
3327 /* method model#MType#anchor_to for (self: Object, MModule, MClassType): MType */
3328 val* VIRTUAL_model__MType__anchor_to(val* self, val* p0, val* p1) {
3329 val* var /* : MType */;
3330 val* var1 /* : MType */;
3331 var1 = model__MType__anchor_to(self, p0, p1);
3332 var = var1;
3333 RET_LABEL:;
3334 return var;
3335 }
3336 /* method model#MType#need_anchor for (self: MType): Bool */
3337 short int model__MType__need_anchor(val* self) {
3338 short int var /* : Bool */;
3339 short int var1 /* : Bool */;
3340 var1 = 1;
3341 var = var1;
3342 goto RET_LABEL;
3343 RET_LABEL:;
3344 return var;
3345 }
3346 /* method model#MType#need_anchor for (self: Object): Bool */
3347 short int VIRTUAL_model__MType__need_anchor(val* self) {
3348 short int var /* : Bool */;
3349 short int var1 /* : Bool */;
3350 var1 = model__MType__need_anchor(self);
3351 var = var1;
3352 RET_LABEL:;
3353 return var;
3354 }
3355 /* method model#MType#supertype_to for (self: MType, MModule, nullable MClassType, MClass): MClassType */
3356 val* model__MType__supertype_to(val* self, val* p0, val* p1, val* p2) {
3357 val* var /* : MClassType */;
3358 val* var_mmodule /* var mmodule: MModule */;
3359 val* var_anchor /* var anchor: nullable MClassType */;
3360 val* var_super_mclass /* var super_mclass: MClass */;
3361 long var1 /* : Int */;
3362 long var2 /* : Int */;
3363 short int var3 /* : Bool */;
3364 short int var5 /* : Bool */;
3365 val* var6 /* : MClassType */;
3366 short int var7 /* : Bool */;
3367 short int var8 /* : Bool */;
3368 int cltype;
3369 int idtype;
3370 short int var_ /* var : Bool */;
3371 val* var9 /* : MClass */;
3372 short int var10 /* : Bool */;
3373 short int var11 /* : Bool */;
3374 val* var12 /* : null */;
3375 short int var13 /* : Bool */;
3376 val* var14 /* : MType */;
3377 val* var_resolved_self /* var resolved_self: nullable Object */;
3378 val* var15 /* : Set[MClassType] */;
3379 val* var_supertypes /* var supertypes: Set[MClassType] */;
3380 val* var16 /* : Iterator[nullable Object] */;
3381 short int var17 /* : Bool */;
3382 val* var18 /* : nullable Object */;
3383 val* var_supertype /* var supertype: MClassType */;
3384 val* var19 /* : MClass */;
3385 short int var20 /* : Bool */;
3386 short int var21 /* : Bool */;
3387 val* var22 /* : MType */;
3388 var_mmodule = p0;
3389 var_anchor = p1;
3390 var_super_mclass = p2;
3391 var1 = ((long (*)(val*))(var_super_mclass->class->vft[COLOR_model__MClass__arity]))(var_super_mclass) /* arity on <var_super_mclass:MClass>*/;
3392 var2 = 0;
3393 { /* Inline kernel#Int#== (var1,var2) */
3394 var5 = var1 == var2;
3395 var3 = var5;
3396 goto RET_LABEL4;
3397 RET_LABEL4:(void)0;
3398 }
3399 if (var3){
3400 var6 = ((val* (*)(val*))(var_super_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_super_mclass) /* mclass_type on <var_super_mclass:MClass>*/;
3401 var = var6;
3402 goto RET_LABEL;
3403 } else {
3404 }
3405 /* <self:MType> isa MClassType */
3406 cltype = type_model__MClassType.color;
3407 idtype = type_model__MClassType.id;
3408 if(cltype >= self->type->table_size) {
3409 var8 = 0;
3410 } else {
3411 var8 = self->type->type_table[cltype] == idtype;
3412 }
3413 var_ = var8;
3414 if (var8){
3415 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MType(MClassType)>*/;
3416 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var_super_mclass) /* == on <var9:MClass>*/;
3417 var7 = var10;
3418 } else {
3419 var7 = var_;
3420 }
3421 if (var7){
3422 var = self;
3423 goto RET_LABEL;
3424 } else {
3425 }
3426 var11 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3427 if (var11){
3428 var12 = NULL;
3429 if (var_anchor == NULL) {
3430 var13 = 0; /* is null */
3431 } else {
3432 var13 = 1; /* arg is null and recv is not */
3433 }
3434 if (!var13) {
3435 fprintf(stderr, "Runtime error: %s", "Assert failed");
3436 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 711);
3437 show_backtrace(1);
3438 }
3439 var14 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MType__anchor_to]))(self, var_mmodule, var_anchor) /* anchor_to on <self:MType>*/;
3440 var_resolved_self = var14;
3441 } else {
3442 var_resolved_self = self;
3443 }
3444 var15 = ((val* (*)(val*, val*))(var_resolved_self->class->vft[COLOR_model__MType__collect_mtypes]))(var_resolved_self, var_mmodule) /* collect_mtypes on <var_resolved_self:nullable Object(MType)>*/;
3445 var_supertypes = var15;
3446 var16 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Set[MClassType]>*/;
3447 for(;;) {
3448 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
3449 if(!var17) break;
3450 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
3451 var_supertype = var18;
3452 var19 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
3453 var20 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var_super_mclass) /* == on <var19:MClass>*/;
3454 if (var20){
3455 var21 = 0;
3456 var22 = ((val* (*)(val*, val*, val*, val*, short int))(var_supertype->class->vft[COLOR_model__MType__resolve_for]))(var_supertype, self, var_anchor, var_mmodule, var21) /* resolve_for on <var_supertype:MClassType>*/;
3457 var = var22;
3458 goto RET_LABEL;
3459 } else {
3460 }
3461 CONTINUE_label: (void)0;
3462 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
3463 }
3464 BREAK_label: (void)0;
3465 fprintf(stderr, "Runtime error: %s", "Aborted");
3466 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 723);
3467 show_backtrace(1);
3468 RET_LABEL:;
3469 return var;
3470 }
3471 /* method model#MType#supertype_to for (self: Object, MModule, nullable MClassType, MClass): MClassType */
3472 val* VIRTUAL_model__MType__supertype_to(val* self, val* p0, val* p1, val* p2) {
3473 val* var /* : MClassType */;
3474 val* var1 /* : MClassType */;
3475 var1 = model__MType__supertype_to(self, p0, p1, p2);
3476 var = var1;
3477 RET_LABEL:;
3478 return var;
3479 }
3480 /* method model#MType#resolve_for for (self: MType, MType, nullable MClassType, MModule, Bool): MType */
3481 val* model__MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3482 val* var /* : MType */;
3483 const char* var_class_name;
3484 var_class_name = self == NULL ? "null" : self->type->name;
3485 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "resolve_for", var_class_name);
3486 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 726);
3487 show_backtrace(1);
3488 RET_LABEL:;
3489 return var;
3490 }
3491 /* method model#MType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
3492 val* VIRTUAL_model__MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3493 val* var /* : MType */;
3494 val* var1 /* : MType */;
3495 var1 = model__MType__resolve_for(self, p0, p1, p2, p3);
3496 var = var1;
3497 RET_LABEL:;
3498 return var;
3499 }
3500 /* method model#MType#can_resolve_for for (self: MType, MType, nullable MClassType, MModule): Bool */
3501 short int model__MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3502 short int var /* : Bool */;
3503 const char* var_class_name;
3504 var_class_name = self == NULL ? "null" : self->type->name;
3505 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "can_resolve_for", var_class_name);
3506 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 798);
3507 show_backtrace(1);
3508 RET_LABEL:;
3509 return var;
3510 }
3511 /* method model#MType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
3512 short int VIRTUAL_model__MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3513 short int var /* : Bool */;
3514 short int var1 /* : Bool */;
3515 var1 = model__MType__can_resolve_for(self, p0, p1, p2);
3516 var = var1;
3517 RET_LABEL:;
3518 return var;
3519 }
3520 /* method model#MType#as_nullable for (self: MType): MType */
3521 val* model__MType__as_nullable(val* self) {
3522 val* var /* : MType */;
3523 val* var1 /* : nullable MType */;
3524 val* var_res /* var res: nullable MType */;
3525 val* var2 /* : null */;
3526 short int var3 /* : Bool */;
3527 val* var4 /* : MNullableType */;
3528 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MType__as_nullable_cache]))(self) /* as_nullable_cache on <self:MType>*/;
3529 var_res = var1;
3530 var2 = NULL;
3531 if (var_res == NULL) {
3532 var3 = 0; /* is null */
3533 } else {
3534 var3 = 1; /* arg is null and recv is not */
3535 }
3536 if (var3){
3537 var = var_res;
3538 goto RET_LABEL;
3539 } else {
3540 }
3541 var4 = NEW_model__MNullableType(&type_model__MNullableType);
3542 ((void (*)(val*, val*))(var4->class->vft[COLOR_model__MNullableType__init]))(var4, self) /* init on <var4:MNullableType>*/;
3543 var_res = var4;
3544 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MType__as_nullable_cache_61d]))(self, var_res) /* as_nullable_cache= on <self:MType>*/;
3545 var = var_res;
3546 goto RET_LABEL;
3547 RET_LABEL:;
3548 return var;
3549 }
3550 /* method model#MType#as_nullable for (self: Object): MType */
3551 val* VIRTUAL_model__MType__as_nullable(val* self) {
3552 val* var /* : MType */;
3553 val* var1 /* : MType */;
3554 var1 = model__MType__as_nullable(self);
3555 var = var1;
3556 RET_LABEL:;
3557 return var;
3558 }
3559 /* method model#MType#as_nullable_cache for (self: MType): nullable MType */
3560 val* model__MType__as_nullable_cache(val* self) {
3561 val* var /* : nullable MType */;
3562 val* var1 /* : nullable MType */;
3563 var1 = self->attrs[COLOR_model__MType___64das_nullable_cache].val; /* @as_nullable_cache on <self:MType> */
3564 var = var1;
3565 RET_LABEL:;
3566 return var;
3567 }
3568 /* method model#MType#as_nullable_cache for (self: Object): nullable MType */
3569 val* VIRTUAL_model__MType__as_nullable_cache(val* self) {
3570 val* var /* : nullable MType */;
3571 val* var1 /* : nullable MType */;
3572 var1 = model__MType__as_nullable_cache(self);
3573 var = var1;
3574 RET_LABEL:;
3575 return var;
3576 }
3577 /* method model#MType#as_nullable_cache= for (self: MType, nullable MType) */
3578 void model__MType__as_nullable_cache_61d(val* self, val* p0) {
3579 self->attrs[COLOR_model__MType___64das_nullable_cache].val = p0; /* @as_nullable_cache on <self:MType> */
3580 RET_LABEL:;
3581 }
3582 /* method model#MType#as_nullable_cache= for (self: Object, nullable MType) */
3583 void VIRTUAL_model__MType__as_nullable_cache_61d(val* self, val* p0) {
3584 model__MType__as_nullable_cache_61d(self, p0);
3585 RET_LABEL:;
3586 }
3587 /* method model#MType#depth for (self: MType): Int */
3588 long model__MType__depth(val* self) {
3589 long var /* : Int */;
3590 long var1 /* : Int */;
3591 var1 = 1;
3592 var = var1;
3593 goto RET_LABEL;
3594 RET_LABEL:;
3595 return var;
3596 }
3597 /* method model#MType#depth for (self: Object): Int */
3598 long VIRTUAL_model__MType__depth(val* self) {
3599 long var /* : Int */;
3600 long var1 /* : Int */;
3601 var1 = model__MType__depth(self);
3602 var = var1;
3603 RET_LABEL:;
3604 return var;
3605 }
3606 /* method model#MType#length for (self: MType): Int */
3607 long model__MType__length(val* self) {
3608 long var /* : Int */;
3609 long var1 /* : Int */;
3610 var1 = 1;
3611 var = var1;
3612 goto RET_LABEL;
3613 RET_LABEL:;
3614 return var;
3615 }
3616 /* method model#MType#length for (self: Object): Int */
3617 long VIRTUAL_model__MType__length(val* self) {
3618 long var /* : Int */;
3619 long var1 /* : Int */;
3620 var1 = model__MType__length(self);
3621 var = var1;
3622 RET_LABEL:;
3623 return var;
3624 }
3625 /* method model#MType#collect_mclassdefs for (self: MType, MModule): Set[MClassDef] */
3626 val* model__MType__collect_mclassdefs(val* self, val* p0) {
3627 val* var /* : Set[MClassDef] */;
3628 const char* var_class_name;
3629 var_class_name = self == NULL ? "null" : self->type->name;
3630 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclassdefs", var_class_name);
3631 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 860);
3632 show_backtrace(1);
3633 RET_LABEL:;
3634 return var;
3635 }
3636 /* method model#MType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
3637 val* VIRTUAL_model__MType__collect_mclassdefs(val* self, val* p0) {
3638 val* var /* : Set[MClassDef] */;
3639 val* var1 /* : Set[MClassDef] */;
3640 var1 = model__MType__collect_mclassdefs(self, p0);
3641 var = var1;
3642 RET_LABEL:;
3643 return var;
3644 }
3645 /* method model#MType#collect_mclasses for (self: MType, MModule): Set[MClass] */
3646 val* model__MType__collect_mclasses(val* self, val* p0) {
3647 val* var /* : Set[MClass] */;
3648 const char* var_class_name;
3649 var_class_name = self == NULL ? "null" : self->type->name;
3650 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mclasses", var_class_name);
3651 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 870);
3652 show_backtrace(1);
3653 RET_LABEL:;
3654 return var;
3655 }
3656 /* method model#MType#collect_mclasses for (self: Object, MModule): Set[MClass] */
3657 val* VIRTUAL_model__MType__collect_mclasses(val* self, val* p0) {
3658 val* var /* : Set[MClass] */;
3659 val* var1 /* : Set[MClass] */;
3660 var1 = model__MType__collect_mclasses(self, p0);
3661 var = var1;
3662 RET_LABEL:;
3663 return var;
3664 }
3665 /* method model#MType#collect_mtypes for (self: MType, MModule): Set[MClassType] */
3666 val* model__MType__collect_mtypes(val* self, val* p0) {
3667 val* var /* : Set[MClassType] */;
3668 const char* var_class_name;
3669 var_class_name = self == NULL ? "null" : self->type->name;
3670 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "collect_mtypes", var_class_name);
3671 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 876);
3672 show_backtrace(1);
3673 RET_LABEL:;
3674 return var;
3675 }
3676 /* method model#MType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
3677 val* VIRTUAL_model__MType__collect_mtypes(val* self, val* p0) {
3678 val* var /* : Set[MClassType] */;
3679 val* var1 /* : Set[MClassType] */;
3680 var1 = model__MType__collect_mtypes(self, p0);
3681 var = var1;
3682 RET_LABEL:;
3683 return var;
3684 }
3685 /* method model#MType#has_mproperty for (self: MType, MModule, MProperty): Bool */
3686 short int model__MType__has_mproperty(val* self, val* p0, val* p1) {
3687 short int var /* : Bool */;
3688 val* var_mmodule /* var mmodule: MModule */;
3689 val* var_mproperty /* var mproperty: MProperty */;
3690 short int var1 /* : Bool */;
3691 short int var2 /* : Bool */;
3692 val* var3 /* : Set[MClassDef] */;
3693 val* var4 /* : MClassDef */;
3694 short int var5 /* : Bool */;
3695 var_mmodule = p0;
3696 var_mproperty = p1;
3697 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MType>*/;
3698 var2 = !var1;
3699 if (!var2) {
3700 fprintf(stderr, "Runtime error: %s", "Assert failed");
3701 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 889);
3702 show_backtrace(1);
3703 }
3704 var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_model__MType__collect_mclassdefs]))(self, var_mmodule) /* collect_mclassdefs on <self:MType>*/;
3705 var4 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var_mproperty) /* intro_mclassdef on <var_mproperty:MProperty>*/;
3706 var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__Collection__has]))(var3, var4) /* has on <var3:Set[MClassDef]>*/;
3707 var = var5;
3708 goto RET_LABEL;
3709 RET_LABEL:;
3710 return var;
3711 }
3712 /* method model#MType#has_mproperty for (self: Object, MModule, MProperty): Bool */
3713 short int VIRTUAL_model__MType__has_mproperty(val* self, val* p0, val* p1) {
3714 short int var /* : Bool */;
3715 short int var1 /* : Bool */;
3716 var1 = model__MType__has_mproperty(self, p0, p1);
3717 var = var1;
3718 RET_LABEL:;
3719 return var;
3720 }
3721 /* method model#MType#init for (self: MType) */
3722 void model__MType__init(val* self) {
3723 RET_LABEL:;
3724 }
3725 /* method model#MType#init for (self: Object) */
3726 void VIRTUAL_model__MType__init(val* self) {
3727 model__MType__init(self);
3728 RET_LABEL:;
3729 }
3730 /* method model#MClassType#mclass for (self: MClassType): MClass */
3731 val* model__MClassType__mclass(val* self) {
3732 val* var /* : MClass */;
3733 val* var1 /* : MClass */;
3734 var1 = self->attrs[COLOR_model__MClassType___64dmclass].val; /* @mclass on <self:MClassType> */
3735 if (var1 == NULL) {
3736 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
3737 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 900);
3738 show_backtrace(1);
3739 }
3740 var = var1;
3741 RET_LABEL:;
3742 return var;
3743 }
3744 /* method model#MClassType#mclass for (self: Object): MClass */
3745 val* VIRTUAL_model__MClassType__mclass(val* self) {
3746 val* var /* : MClass */;
3747 val* var1 /* : MClass */;
3748 var1 = model__MClassType__mclass(self);
3749 var = var1;
3750 RET_LABEL:;
3751 return var;
3752 }
3753 /* method model#MClassType#mclass= for (self: MClassType, MClass) */
3754 void model__MClassType__mclass_61d(val* self, val* p0) {
3755 self->attrs[COLOR_model__MClassType___64dmclass].val = p0; /* @mclass on <self:MClassType> */
3756 RET_LABEL:;
3757 }
3758 /* method model#MClassType#mclass= for (self: Object, MClass) */
3759 void VIRTUAL_model__MClassType__mclass_61d(val* self, val* p0) {
3760 model__MClassType__mclass_61d(self, p0);
3761 RET_LABEL:;
3762 }
3763 /* method model#MClassType#model for (self: MClassType): Model */
3764 val* model__MClassType__model(val* self) {
3765 val* var /* : Model */;
3766 val* var1 /* : MClass */;
3767 val* var2 /* : MModule */;
3768 val* var3 /* : Model */;
3769 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3770 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
3771 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_mmodule__MModule__model]))(var2) /* model on <var2:MModule>*/;
3772 var = var3;
3773 goto RET_LABEL;
3774 RET_LABEL:;
3775 return var;
3776 }
3777 /* method model#MClassType#model for (self: Object): Model */
3778 val* VIRTUAL_model__MClassType__model(val* self) {
3779 val* var /* : Model */;
3780 val* var1 /* : Model */;
3781 var1 = model__MClassType__model(self);
3782 var = var1;
3783 RET_LABEL:;
3784 return var;
3785 }
3786 /* method model#MClassType#init for (self: MClassType, MClass) */
3787 void model__MClassType__init(val* self, val* p0) {
3788 val* var_mclass /* var mclass: MClass */;
3789 var_mclass = p0;
3790 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MClassType>*/;
3791 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__mclass_61d]))(self, var_mclass) /* mclass= on <self:MClassType>*/;
3792 RET_LABEL:;
3793 }
3794 /* method model#MClassType#init for (self: Object, MClass) */
3795 void VIRTUAL_model__MClassType__init(val* self, val* p0) {
3796 model__MClassType__init(self, p0);
3797 RET_LABEL:;
3798 }
3799 /* method model#MClassType#arguments for (self: MClassType): Array[MType] */
3800 val* model__MClassType__arguments(val* self) {
3801 val* var /* : Array[MType] */;
3802 val* var1 /* : Array[MType] */;
3803 var1 = self->attrs[COLOR_model__MClassType___64darguments].val; /* @arguments on <self:MClassType> */
3804 if (var1 == NULL) {
3805 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @arguments");
3806 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 910);
3807 show_backtrace(1);
3808 }
3809 var = var1;
3810 RET_LABEL:;
3811 return var;
3812 }
3813 /* method model#MClassType#arguments for (self: Object): Array[MType] */
3814 val* VIRTUAL_model__MClassType__arguments(val* self) {
3815 val* var /* : Array[MType] */;
3816 val* var1 /* : Array[MType] */;
3817 var1 = model__MClassType__arguments(self);
3818 var = var1;
3819 RET_LABEL:;
3820 return var;
3821 }
3822 /* method model#MClassType#arguments= for (self: MClassType, Array[MType]) */
3823 void model__MClassType__arguments_61d(val* self, val* p0) {
3824 self->attrs[COLOR_model__MClassType___64darguments].val = p0; /* @arguments on <self:MClassType> */
3825 RET_LABEL:;
3826 }
3827 /* method model#MClassType#arguments= for (self: Object, Array[MType]) */
3828 void VIRTUAL_model__MClassType__arguments_61d(val* self, val* p0) {
3829 model__MClassType__arguments_61d(self, p0);
3830 RET_LABEL:;
3831 }
3832 /* method model#MClassType#to_s for (self: MClassType): String */
3833 val* model__MClassType__to_s(val* self) {
3834 val* var /* : String */;
3835 val* var1 /* : MClass */;
3836 val* var2 /* : String */;
3837 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
3838 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MClass>*/;
3839 var = var2;
3840 goto RET_LABEL;
3841 RET_LABEL:;
3842 return var;
3843 }
3844 /* method model#MClassType#to_s for (self: Object): String */
3845 val* VIRTUAL_model__MClassType__to_s(val* self) {
3846 val* var /* : String */;
3847 val* var1 /* : String */;
3848 var1 = model__MClassType__to_s(self);
3849 var = var1;
3850 RET_LABEL:;
3851 return var;
3852 }
3853 /* method model#MClassType#need_anchor for (self: MClassType): Bool */
3854 short int model__MClassType__need_anchor(val* self) {
3855 short int var /* : Bool */;
3856 short int var1 /* : Bool */;
3857 var1 = 0;
3858 var = var1;
3859 goto RET_LABEL;
3860 RET_LABEL:;
3861 return var;
3862 }
3863 /* method model#MClassType#need_anchor for (self: Object): Bool */
3864 short int VIRTUAL_model__MClassType__need_anchor(val* self) {
3865 short int var /* : Bool */;
3866 short int var1 /* : Bool */;
3867 var1 = model__MClassType__need_anchor(self);
3868 var = var1;
3869 RET_LABEL:;
3870 return var;
3871 }
3872 /* method model#MClassType#anchor_to for (self: MClassType, MModule, MClassType): MClassType */
3873 val* model__MClassType__anchor_to(val* self, val* p0, val* p1) {
3874 val* var /* : MClassType */;
3875 val* var_mmodule /* var mmodule: MModule */;
3876 val* var_anchor /* var anchor: MClassType */;
3877 val* var1 /* : MType */;
3878 short int var2 /* : Bool */;
3879 int cltype;
3880 int idtype;
3881 const char* var_class_name;
3882 var_mmodule = p0;
3883 var_anchor = p1;
3884 var1 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MClassType__anchor_to]))(self, p0, p1) /* anchor_to on <self:MClassType>*/;
3885 /* <var1:MType> isa MClassType */
3886 cltype = type_model__MClassType.color;
3887 idtype = type_model__MClassType.id;
3888 if(cltype >= var1->type->table_size) {
3889 var2 = 0;
3890 } else {
3891 var2 = var1->type->type_table[cltype] == idtype;
3892 }
3893 if (!var2) {
3894 var_class_name = var1 == NULL ? "null" : var1->type->name;
3895 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
3896 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 920);
3897 show_backtrace(1);
3898 }
3899 var = var1;
3900 goto RET_LABEL;
3901 RET_LABEL:;
3902 return var;
3903 }
3904 /* method model#MClassType#anchor_to for (self: Object, MModule, MClassType): MType */
3905 val* VIRTUAL_model__MClassType__anchor_to(val* self, val* p0, val* p1) {
3906 val* var /* : MType */;
3907 val* var1 /* : MClassType */;
3908 var1 = model__MClassType__anchor_to(self, p0, p1);
3909 var = var1;
3910 RET_LABEL:;
3911 return var;
3912 }
3913 /* method model#MClassType#resolve_for for (self: MClassType, MType, nullable MClassType, MModule, Bool): MClassType */
3914 val* model__MClassType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3915 val* var /* : MClassType */;
3916 val* var_mtype /* var mtype: MType */;
3917 val* var_anchor /* var anchor: nullable MClassType */;
3918 val* var_mmodule /* var mmodule: MModule */;
3919 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
3920 var_mtype = p0;
3921 var_anchor = p1;
3922 var_mmodule = p2;
3923 var_cleanup_virtual = p3;
3924 var = self;
3925 goto RET_LABEL;
3926 RET_LABEL:;
3927 return var;
3928 }
3929 /* method model#MClassType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
3930 val* VIRTUAL_model__MClassType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
3931 val* var /* : MType */;
3932 val* var1 /* : MClassType */;
3933 var1 = model__MClassType__resolve_for(self, p0, p1, p2, p3);
3934 var = var1;
3935 RET_LABEL:;
3936 return var;
3937 }
3938 /* method model#MClassType#can_resolve_for for (self: MClassType, MType, nullable MClassType, MModule): Bool */
3939 short int model__MClassType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3940 short int var /* : Bool */;
3941 val* var_mtype /* var mtype: MType */;
3942 val* var_anchor /* var anchor: nullable MClassType */;
3943 val* var_mmodule /* var mmodule: MModule */;
3944 short int var1 /* : Bool */;
3945 var_mtype = p0;
3946 var_anchor = p1;
3947 var_mmodule = p2;
3948 var1 = 1;
3949 var = var1;
3950 goto RET_LABEL;
3951 RET_LABEL:;
3952 return var;
3953 }
3954 /* method model#MClassType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
3955 short int VIRTUAL_model__MClassType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
3956 short int var /* : Bool */;
3957 short int var1 /* : Bool */;
3958 var1 = model__MClassType__can_resolve_for(self, p0, p1, p2);
3959 var = var1;
3960 RET_LABEL:;
3961 return var;
3962 }
3963 /* method model#MClassType#collect_mclassdefs for (self: MClassType, MModule): Set[MClassDef] */
3964 val* model__MClassType__collect_mclassdefs(val* self, val* p0) {
3965 val* var /* : Set[MClassDef] */;
3966 val* var_mmodule /* var mmodule: MModule */;
3967 short int var1 /* : Bool */;
3968 short int var2 /* : Bool */;
3969 val* var3 /* : HashMap[MModule, Set[MClassDef]] */;
3970 val* var_cache /* var cache: HashMap[MModule, Set[MClassDef]] */;
3971 short int var4 /* : Bool */;
3972 short int var5 /* : Bool */;
3973 val* var6 /* : nullable Object */;
3974 var_mmodule = p0;
3975 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
3976 var2 = !var1;
3977 if (!var2) {
3978 fprintf(stderr, "Runtime error: %s", "Assert failed");
3979 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 929);
3980 show_backtrace(1);
3981 }
3982 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclassdefs_cache]))(self) /* collect_mclassdefs_cache on <self:MClassType>*/;
3983 var_cache = var3;
3984 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClassDef]]>*/;
3985 var5 = !var4;
3986 if (var5){
3987 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
3988 } else {
3989 }
3990 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClassDef]]>*/;
3991 var = var6;
3992 goto RET_LABEL;
3993 RET_LABEL:;
3994 return var;
3995 }
3996 /* method model#MClassType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
3997 val* VIRTUAL_model__MClassType__collect_mclassdefs(val* self, val* p0) {
3998 val* var /* : Set[MClassDef] */;
3999 val* var1 /* : Set[MClassDef] */;
4000 var1 = model__MClassType__collect_mclassdefs(self, p0);
4001 var = var1;
4002 RET_LABEL:;
4003 return var;
4004 }
4005 /* method model#MClassType#collect_mclasses for (self: MClassType, MModule): Set[MClass] */
4006 val* model__MClassType__collect_mclasses(val* self, val* p0) {
4007 val* var /* : Set[MClass] */;
4008 val* var_mmodule /* var mmodule: MModule */;
4009 short int var1 /* : Bool */;
4010 short int var2 /* : Bool */;
4011 val* var3 /* : HashMap[MModule, Set[MClass]] */;
4012 val* var_cache /* var cache: HashMap[MModule, Set[MClass]] */;
4013 short int var4 /* : Bool */;
4014 short int var5 /* : Bool */;
4015 val* var6 /* : nullable Object */;
4016 var_mmodule = p0;
4017 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
4018 var2 = !var1;
4019 if (!var2) {
4020 fprintf(stderr, "Runtime error: %s", "Assert failed");
4021 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 939);
4022 show_backtrace(1);
4023 }
4024 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclasses_cache]))(self) /* collect_mclasses_cache on <self:MClassType>*/;
4025 var_cache = var3;
4026 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClass]]>*/;
4027 var5 = !var4;
4028 if (var5){
4029 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
4030 } else {
4031 }
4032 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClass]]>*/;
4033 var = var6;
4034 goto RET_LABEL;
4035 RET_LABEL:;
4036 return var;
4037 }
4038 /* method model#MClassType#collect_mclasses for (self: Object, MModule): Set[MClass] */
4039 val* VIRTUAL_model__MClassType__collect_mclasses(val* self, val* p0) {
4040 val* var /* : Set[MClass] */;
4041 val* var1 /* : Set[MClass] */;
4042 var1 = model__MClassType__collect_mclasses(self, p0);
4043 var = var1;
4044 RET_LABEL:;
4045 return var;
4046 }
4047 /* method model#MClassType#collect_mtypes for (self: MClassType, MModule): Set[MClassType] */
4048 val* model__MClassType__collect_mtypes(val* self, val* p0) {
4049 val* var /* : Set[MClassType] */;
4050 val* var_mmodule /* var mmodule: MModule */;
4051 short int var1 /* : Bool */;
4052 short int var2 /* : Bool */;
4053 val* var3 /* : HashMap[MModule, Set[MClassType]] */;
4054 val* var_cache /* var cache: HashMap[MModule, Set[MClassType]] */;
4055 short int var4 /* : Bool */;
4056 short int var5 /* : Bool */;
4057 val* var6 /* : nullable Object */;
4058 var_mmodule = p0;
4059 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MClassType>*/;
4060 var2 = !var1;
4061 if (!var2) {
4062 fprintf(stderr, "Runtime error: %s", "Assert failed");
4063 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 949);
4064 show_backtrace(1);
4065 }
4066 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mtypes_cache]))(self) /* collect_mtypes_cache on <self:MClassType>*/;
4067 var_cache = var3;
4068 var4 = ((short int (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_cache, var_mmodule) /* has_key on <var_cache:HashMap[MModule, Set[MClassType]]>*/;
4069 var5 = !var4;
4070 if (var5){
4071 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__collect_things]))(self, var_mmodule) /* collect_things on <self:MClassType>*/;
4072 } else {
4073 }
4074 var6 = ((val* (*)(val*, val*))(var_cache->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_cache, var_mmodule) /* [] on <var_cache:HashMap[MModule, Set[MClassType]]>*/;
4075 var = var6;
4076 goto RET_LABEL;
4077 RET_LABEL:;
4078 return var;
4079 }
4080 /* method model#MClassType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
4081 val* VIRTUAL_model__MClassType__collect_mtypes(val* self, val* p0) {
4082 val* var /* : Set[MClassType] */;
4083 val* var1 /* : Set[MClassType] */;
4084 var1 = model__MClassType__collect_mtypes(self, p0);
4085 var = var1;
4086 RET_LABEL:;
4087 return var;
4088 }
4089 /* method model#MClassType#collect_things for (self: MClassType, MModule) */
4090 void model__MClassType__collect_things(val* self, val* p0) {
4091 val* var_mmodule /* var mmodule: MModule */;
4092 val* var /* : HashSet[MClassDef] */;
4093 val* var_res /* var res: HashSet[MClassDef] */;
4094 val* var1 /* : HashSet[MClass] */;
4095 val* var_seen /* var seen: HashSet[MClass] */;
4096 val* var2 /* : HashSet[MClassType] */;
4097 val* var_types /* var types: HashSet[MClassType] */;
4098 val* var3 /* : MClass */;
4099 val* var4 /* : Array[MClass] */;
4100 long var5 /* : Int */;
4101 val* var_ /* var : Array[MClass] */;
4102 val* var6 /* : MClass */;
4103 val* var_todo /* var todo: Array[MClass] */;
4104 short int var7 /* : Bool */;
4105 short int var8 /* : Bool */;
4106 val* var9 /* : nullable Object */;
4107 val* var_mclass /* var mclass: MClass */;
4108 val* var10 /* : Array[MClassDef] */;
4109 val* var11 /* : Iterator[nullable Object] */;
4110 short int var12 /* : Bool */;
4111 val* var13 /* : nullable Object */;
4112 val* var_mclassdef /* var mclassdef: MClassDef */;
4113 val* var14 /* : POSetElement[MModule] */;
4114 val* var15 /* : MModule */;
4115 short int var16 /* : Bool */;
4116 short int var17 /* : Bool */;
4117 val* var18 /* : Array[MClassType] */;
4118 val* var19 /* : Iterator[nullable Object] */;
4119 short int var20 /* : Bool */;
4120 val* var21 /* : nullable Object */;
4121 val* var_supertype /* var supertype: MClassType */;
4122 val* var22 /* : MClass */;
4123 val* var_superclass /* var superclass: MClass */;
4124 short int var23 /* : Bool */;
4125 val* var26 /* : HashMap[MModule, Set[MClassDef]] */;
4126 val* var27 /* : HashMap[MModule, Set[MClass]] */;
4127 val* var28 /* : HashMap[MModule, Set[MClassType]] */;
4128 var_mmodule = p0;
4129 var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
4130 ((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashSet__init]))(var) /* init on <var:HashSet[MClassDef]>*/;
4131 var_res = var;
4132 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
4133 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
4134 var_seen = var1;
4135 var2 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
4136 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashSet__init]))(var2) /* init on <var2:HashSet[MClassType]>*/;
4137 var_types = var2;
4138 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4139 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var3) /* add on <var_seen:HashSet[MClass]>*/;
4140 var4 = NEW_array__Array(&type_array__Arraymodel__MClass);
4141 var5 = 1;
4142 ((void (*)(val*, long))(var4->class->vft[COLOR_array__Array__with_capacity]))(var4, var5) /* with_capacity on <var4:Array[MClass]>*/;
4143 var_ = var4;
4144 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
4145 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var6) /* push on <var_:Array[MClass]>*/;
4146 var_todo = var_;
4147 for(;;) {
4148 var7 = ((short int (*)(val*))(var_todo->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_todo) /* is_empty on <var_todo:Array[MClass]>*/;
4149 var8 = !var7;
4150 if (!var8) break;
4151 var9 = ((val* (*)(val*))(var_todo->class->vft[COLOR_abstract_collection__Sequence__pop]))(var_todo) /* pop on <var_todo:Array[MClass]>*/;
4152 var_mclass = var9;
4153 var10 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:MClass>*/;
4154 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MClassDef]>*/;
4155 for(;;) {
4156 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
4157 if(!var12) break;
4158 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
4159 var_mclassdef = var13;
4160 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
4161 var15 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_mclassdef) /* mmodule on <var_mclassdef:MClassDef>*/;
4162 var16 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var15) /* <= on <var14:POSetElement[MModule]>*/;
4163 var17 = !var16;
4164 if (var17){
4165 goto CONTINUE_label;
4166 } else {
4167 }
4168 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_mclassdef) /* add on <var_res:HashSet[MClassDef]>*/;
4169 var18 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__supertypes]))(var_mclassdef) /* supertypes on <var_mclassdef:MClassDef>*/;
4170 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__iterator]))(var18) /* iterator on <var18:Array[MClassType]>*/;
4171 for(;;) {
4172 var20 = ((short int (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var19) /* is_ok on <var19:Iterator[nullable Object]>*/;
4173 if(!var20) break;
4174 var21 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__item]))(var19) /* item on <var19:Iterator[nullable Object]>*/;
4175 var_supertype = var21;
4176 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var_supertype) /* add on <var_types:HashSet[MClassType]>*/;
4177 var22 = ((val* (*)(val*))(var_supertype->class->vft[COLOR_model__MClassType__mclass]))(var_supertype) /* mclass on <var_supertype:MClassType>*/;
4178 var_superclass = var22;
4179 var23 = ((short int (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__Collection__has]))(var_seen, var_superclass) /* has on <var_seen:HashSet[MClass]>*/;
4180 if (var23){
4181 goto CONTINUE_label24;
4182 } else {
4183 }
4184 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_superclass) /* add on <var_seen:HashSet[MClass]>*/;
4185 ((void (*)(val*, val*))(var_todo->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_todo, var_superclass) /* add on <var_todo:Array[MClass]>*/;
4186 CONTINUE_label24: (void)0;
4187 ((void (*)(val*))(var19->class->vft[COLOR_abstract_collection__Iterator__next]))(var19) /* next on <var19:Iterator[nullable Object]>*/;
4188 }
4189 BREAK_label24: (void)0;
4190 CONTINUE_label: (void)0;
4191 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
4192 }
4193 BREAK_label: (void)0;
4194 CONTINUE_label25: (void)0;
4195 }
4196 BREAK_label25: (void)0;
4197 var26 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclassdefs_cache]))(self) /* collect_mclassdefs_cache on <self:MClassType>*/;
4198 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var26, var_mmodule, var_res) /* []= on <var26:HashMap[MModule, Set[MClassDef]]>*/;
4199 var27 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mclasses_cache]))(self) /* collect_mclasses_cache on <self:MClassType>*/;
4200 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var27, var_mmodule, var_seen) /* []= on <var27:HashMap[MModule, Set[MClass]]>*/;
4201 var28 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__collect_mtypes_cache]))(self) /* collect_mtypes_cache on <self:MClassType>*/;
4202 ((void (*)(val*, val*, val*))(var28->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var28, var_mmodule, var_types) /* []= on <var28:HashMap[MModule, Set[MClassType]]>*/;
4203 RET_LABEL:;
4204 }
4205 /* method model#MClassType#collect_things for (self: Object, MModule) */
4206 void VIRTUAL_model__MClassType__collect_things(val* self, val* p0) {
4207 model__MClassType__collect_things(self, p0);
4208 RET_LABEL:;
4209 }
4210 /* method model#MClassType#collect_mclassdefs_cache for (self: MClassType): HashMap[MModule, Set[MClassDef]] */
4211 val* model__MClassType__collect_mclassdefs_cache(val* self) {
4212 val* var /* : HashMap[MModule, Set[MClassDef]] */;
4213 val* var1 /* : HashMap[MModule, Set[MClassDef]] */;
4214 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclassdefs_cache].val; /* @collect_mclassdefs_cache on <self:MClassType> */
4215 if (var1 == NULL) {
4216 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclassdefs_cache");
4217 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 987);
4218 show_backtrace(1);
4219 }
4220 var = var1;
4221 RET_LABEL:;
4222 return var;
4223 }
4224 /* method model#MClassType#collect_mclassdefs_cache for (self: Object): HashMap[MModule, Set[MClassDef]] */
4225 val* VIRTUAL_model__MClassType__collect_mclassdefs_cache(val* self) {
4226 val* var /* : HashMap[MModule, Set[MClassDef]] */;
4227 val* var1 /* : HashMap[MModule, Set[MClassDef]] */;
4228 var1 = model__MClassType__collect_mclassdefs_cache(self);
4229 var = var1;
4230 RET_LABEL:;
4231 return var;
4232 }
4233 /* method model#MClassType#collect_mclassdefs_cache= for (self: MClassType, HashMap[MModule, Set[MClassDef]]) */
4234 void model__MClassType__collect_mclassdefs_cache_61d(val* self, val* p0) {
4235 self->attrs[COLOR_model__MClassType___64dcollect_mclassdefs_cache].val = p0; /* @collect_mclassdefs_cache on <self:MClassType> */
4236 RET_LABEL:;
4237 }
4238 /* method model#MClassType#collect_mclassdefs_cache= for (self: Object, HashMap[MModule, Set[MClassDef]]) */
4239 void VIRTUAL_model__MClassType__collect_mclassdefs_cache_61d(val* self, val* p0) {
4240 model__MClassType__collect_mclassdefs_cache_61d(self, p0);
4241 RET_LABEL:;
4242 }
4243 /* method model#MClassType#collect_mclasses_cache for (self: MClassType): HashMap[MModule, Set[MClass]] */
4244 val* model__MClassType__collect_mclasses_cache(val* self) {
4245 val* var /* : HashMap[MModule, Set[MClass]] */;
4246 val* var1 /* : HashMap[MModule, Set[MClass]] */;
4247 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mclasses_cache].val; /* @collect_mclasses_cache on <self:MClassType> */
4248 if (var1 == NULL) {
4249 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mclasses_cache");
4250 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 988);
4251 show_backtrace(1);
4252 }
4253 var = var1;
4254 RET_LABEL:;
4255 return var;
4256 }
4257 /* method model#MClassType#collect_mclasses_cache for (self: Object): HashMap[MModule, Set[MClass]] */
4258 val* VIRTUAL_model__MClassType__collect_mclasses_cache(val* self) {
4259 val* var /* : HashMap[MModule, Set[MClass]] */;
4260 val* var1 /* : HashMap[MModule, Set[MClass]] */;
4261 var1 = model__MClassType__collect_mclasses_cache(self);
4262 var = var1;
4263 RET_LABEL:;
4264 return var;
4265 }
4266 /* method model#MClassType#collect_mclasses_cache= for (self: MClassType, HashMap[MModule, Set[MClass]]) */
4267 void model__MClassType__collect_mclasses_cache_61d(val* self, val* p0) {
4268 self->attrs[COLOR_model__MClassType___64dcollect_mclasses_cache].val = p0; /* @collect_mclasses_cache on <self:MClassType> */
4269 RET_LABEL:;
4270 }
4271 /* method model#MClassType#collect_mclasses_cache= for (self: Object, HashMap[MModule, Set[MClass]]) */
4272 void VIRTUAL_model__MClassType__collect_mclasses_cache_61d(val* self, val* p0) {
4273 model__MClassType__collect_mclasses_cache_61d(self, p0);
4274 RET_LABEL:;
4275 }
4276 /* method model#MClassType#collect_mtypes_cache for (self: MClassType): HashMap[MModule, Set[MClassType]] */
4277 val* model__MClassType__collect_mtypes_cache(val* self) {
4278 val* var /* : HashMap[MModule, Set[MClassType]] */;
4279 val* var1 /* : HashMap[MModule, Set[MClassType]] */;
4280 var1 = self->attrs[COLOR_model__MClassType___64dcollect_mtypes_cache].val; /* @collect_mtypes_cache on <self:MClassType> */
4281 if (var1 == NULL) {
4282 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @collect_mtypes_cache");
4283 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 989);
4284 show_backtrace(1);
4285 }
4286 var = var1;
4287 RET_LABEL:;
4288 return var;
4289 }
4290 /* method model#MClassType#collect_mtypes_cache for (self: Object): HashMap[MModule, Set[MClassType]] */
4291 val* VIRTUAL_model__MClassType__collect_mtypes_cache(val* self) {
4292 val* var /* : HashMap[MModule, Set[MClassType]] */;
4293 val* var1 /* : HashMap[MModule, Set[MClassType]] */;
4294 var1 = model__MClassType__collect_mtypes_cache(self);
4295 var = var1;
4296 RET_LABEL:;
4297 return var;
4298 }
4299 /* method model#MClassType#collect_mtypes_cache= for (self: MClassType, HashMap[MModule, Set[MClassType]]) */
4300 void model__MClassType__collect_mtypes_cache_61d(val* self, val* p0) {
4301 self->attrs[COLOR_model__MClassType___64dcollect_mtypes_cache].val = p0; /* @collect_mtypes_cache on <self:MClassType> */
4302 RET_LABEL:;
4303 }
4304 /* method model#MClassType#collect_mtypes_cache= for (self: Object, HashMap[MModule, Set[MClassType]]) */
4305 void VIRTUAL_model__MClassType__collect_mtypes_cache_61d(val* self, val* p0) {
4306 model__MClassType__collect_mtypes_cache_61d(self, p0);
4307 RET_LABEL:;
4308 }
4309 /* method model#MGenericType#init for (self: MGenericType, MClass, Array[MType]) */
4310 void model__MGenericType__init(val* self, val* p0, val* p1) {
4311 val* var_mclass /* var mclass: MClass */;
4312 val* var_arguments /* var arguments: Array[MType] */;
4313 val* var /* : MClass */;
4314 long var1 /* : Int */;
4315 long var2 /* : Int */;
4316 short int var3 /* : Bool */;
4317 short int var5 /* : Bool */;
4318 short int var6 /* : Bool */;
4319 val* var7 /* : Iterator[nullable Object] */;
4320 short int var8 /* : Bool */;
4321 val* var9 /* : nullable Object */;
4322 val* var_t /* var t: MType */;
4323 short int var10 /* : Bool */;
4324 short int var11 /* : Bool */;
4325 static val* varonce;
4326 val* var12 /* : String */;
4327 char* var13 /* : NativeString */;
4328 long var14 /* : Int */;
4329 val* var15 /* : String */;
4330 static val* varonce16;
4331 val* var17 /* : String */;
4332 char* var18 /* : NativeString */;
4333 long var19 /* : Int */;
4334 val* var20 /* : String */;
4335 val* var21 /* : String */;
4336 static val* varonce22;
4337 val* var23 /* : String */;
4338 char* var24 /* : NativeString */;
4339 long var25 /* : Int */;
4340 val* var26 /* : String */;
4341 val* var27 /* : Array[Object] */;
4342 long var28 /* : Int */;
4343 val* var29 /* : NativeArray[Object] */;
4344 val* var30 /* : String */;
4345 var_mclass = p0;
4346 var_arguments = p1;
4347 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__init]))(self, var_mclass) /* init on <self:MGenericType>*/;
4348 var = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MGenericType>*/;
4349 var1 = ((long (*)(val*))(var->class->vft[COLOR_model__MClass__arity]))(var) /* arity on <var:MClass>*/;
4350 var2 = ((long (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__length]))(var_arguments) /* length on <var_arguments:Array[MType]>*/;
4351 { /* Inline kernel#Int#== (var1,var2) */
4352 var5 = var1 == var2;
4353 var3 = var5;
4354 goto RET_LABEL4;
4355 RET_LABEL4:(void)0;
4356 }
4357 if (!var3) {
4358 fprintf(stderr, "Runtime error: %s", "Assert failed");
4359 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1001);
4360 show_backtrace(1);
4361 }
4362 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassType__arguments_61d]))(self, var_arguments) /* arguments= on <self:MGenericType>*/;
4363 var6 = 0;
4364 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MGenericType__need_anchor_61d]))(self, var6) /* need_anchor= on <self:MGenericType>*/;
4365 var7 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_arguments) /* iterator on <var_arguments:Array[MType]>*/;
4366 for(;;) {
4367 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
4368 if(!var8) break;
4369 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
4370 var_t = var9;
4371 var10 = ((short int (*)(val*))(var_t->class->vft[COLOR_model__MType__need_anchor]))(var_t) /* need_anchor on <var_t:MType>*/;
4372 if (var10){
4373 var11 = 1;
4374 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MGenericType__need_anchor_61d]))(self, var11) /* need_anchor= on <self:MGenericType>*/;
4375 goto BREAK_label;
4376 } else {
4377 }
4378 CONTINUE_label: (void)0;
4379 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
4380 }
4381 BREAK_label: (void)0;
4382 if (varonce) {
4383 var12 = varonce;
4384 } else {
4385 var13 = "[";
4386 var14 = 1;
4387 var15 = string__NativeString__to_s_with_length(var13, var14);
4388 var12 = var15;
4389 varonce = var12;
4390 }
4391 if (varonce16) {
4392 var17 = varonce16;
4393 } else {
4394 var18 = ", ";
4395 var19 = 2;
4396 var20 = string__NativeString__to_s_with_length(var18, var19);
4397 var17 = var20;
4398 varonce16 = var17;
4399 }
4400 var21 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var17) /* join on <var_arguments:Array[MType]>*/;
4401 if (varonce22) {
4402 var23 = varonce22;
4403 } else {
4404 var24 = "]";
4405 var25 = 1;
4406 var26 = string__NativeString__to_s_with_length(var24, var25);
4407 var23 = var26;
4408 varonce22 = var23;
4409 }
4410 var27 = NEW_array__Array(&type_array__Arraykernel__Object);
4411 { /* var27 = array_instance Array[Object] */
4412 var28 = 4;
4413 var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
4414 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var_mclass;
4415 ((struct instance_array__NativeArray*)var29)->values[1] = (val*) var12;
4416 ((struct instance_array__NativeArray*)var29)->values[2] = (val*) var21;
4417 ((struct instance_array__NativeArray*)var29)->values[3] = (val*) var23;
4418 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
4419 }
4420 var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
4421 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MGenericType__to_s_61d]))(self, var30) /* to_s= on <self:MGenericType>*/;
4422 RET_LABEL:;
4423 }
4424 /* method model#MGenericType#init for (self: Object, MClass, Array[MType]) */
4425 void VIRTUAL_model__MGenericType__init(val* self, val* p0, val* p1) {
4426 model__MGenericType__init(self, p0, p1);
4427 RET_LABEL:;
4428 }
4429 /* method model#MGenericType#to_s for (self: MGenericType): String */
4430 val* model__MGenericType__to_s(val* self) {
4431 val* var /* : String */;
4432 val* var1 /* : String */;
4433 var1 = self->attrs[COLOR_model__MGenericType___64dto_s].val; /* @to_s on <self:MGenericType> */
4434 if (var1 == NULL) {
4435 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
4436 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1015);
4437 show_backtrace(1);
4438 }
4439 var = var1;
4440 RET_LABEL:;
4441 return var;
4442 }
4443 /* method model#MGenericType#to_s for (self: Object): String */
4444 val* VIRTUAL_model__MGenericType__to_s(val* self) {
4445 val* var /* : String */;
4446 val* var1 /* : String */;
4447 var1 = model__MGenericType__to_s(self);
4448 var = var1;
4449 RET_LABEL:;
4450 return var;
4451 }
4452 /* method model#MGenericType#to_s= for (self: MGenericType, String) */
4453 void model__MGenericType__to_s_61d(val* self, val* p0) {
4454 self->attrs[COLOR_model__MGenericType___64dto_s].val = p0; /* @to_s on <self:MGenericType> */
4455 RET_LABEL:;
4456 }
4457 /* method model#MGenericType#to_s= for (self: Object, String) */
4458 void VIRTUAL_model__MGenericType__to_s_61d(val* self, val* p0) {
4459 model__MGenericType__to_s_61d(self, p0);
4460 RET_LABEL:;
4461 }
4462 /* method model#MGenericType#need_anchor for (self: MGenericType): Bool */
4463 short int model__MGenericType__need_anchor(val* self) {
4464 short int var /* : Bool */;
4465 short int var1 /* : Bool */;
4466 var1 = self->attrs[COLOR_model__MGenericType___64dneed_anchor].s; /* @need_anchor on <self:MGenericType> */
4467 var = var1;
4468 RET_LABEL:;
4469 return var;
4470 }
4471 /* method model#MGenericType#need_anchor for (self: Object): Bool */
4472 short int VIRTUAL_model__MGenericType__need_anchor(val* self) {
4473 short int var /* : Bool */;
4474 short int var1 /* : Bool */;
4475 var1 = model__MGenericType__need_anchor(self);
4476 var = var1;
4477 RET_LABEL:;
4478 return var;
4479 }
4480 /* method model#MGenericType#need_anchor= for (self: MGenericType, Bool) */
4481 void model__MGenericType__need_anchor_61d(val* self, short int p0) {
4482 self->attrs[COLOR_model__MGenericType___64dneed_anchor].s = p0; /* @need_anchor on <self:MGenericType> */
4483 RET_LABEL:;
4484 }
4485 /* method model#MGenericType#need_anchor= for (self: Object, Bool) */
4486 void VIRTUAL_model__MGenericType__need_anchor_61d(val* self, short int p0) {
4487 model__MGenericType__need_anchor_61d(self, p0);
4488 RET_LABEL:;
4489 }
4490 /* method model#MGenericType#resolve_for for (self: MGenericType, MType, nullable MClassType, MModule, Bool): MType */
4491 val* model__MGenericType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4492 val* var /* : MType */;
4493 val* var_mtype /* var mtype: MType */;
4494 val* var_anchor /* var anchor: nullable MClassType */;
4495 val* var_mmodule /* var mmodule: MModule */;
4496 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
4497 short int var1 /* : Bool */;
4498 short int var2 /* : Bool */;
4499 short int var3 /* : Bool */;
4500 val* var4 /* : Array[MType] */;
4501 val* var_types /* var types: Array[MType] */;
4502 val* var5 /* : Array[MType] */;
4503 val* var6 /* : Iterator[nullable Object] */;
4504 short int var7 /* : Bool */;
4505 val* var8 /* : nullable Object */;
4506 val* var_t /* var t: MType */;
4507 val* var9 /* : MType */;
4508 val* var10 /* : MClass */;
4509 val* var11 /* : MClassType */;
4510 var_mtype = p0;
4511 var_anchor = p1;
4512 var_mmodule = p2;
4513 var_cleanup_virtual = p3;
4514 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MGenericType>*/;
4515 var2 = !var1;
4516 if (var2){
4517 var = self;
4518 goto RET_LABEL;
4519 } else {
4520 }
4521 var3 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MGenericType>*/;
4522 if (!var3) {
4523 fprintf(stderr, "Runtime error: %s", "Assert failed");
4524 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1024);
4525 show_backtrace(1);
4526 }
4527 var4 = NEW_array__Array(&type_array__Arraymodel__MType);
4528 ((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MType]>*/;
4529 var_types = var4;
4530 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4531 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MType]>*/;
4532 for(;;) {
4533 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4534 if(!var7) break;
4535 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4536 var_t = var8;
4537 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var_t->class->vft[COLOR_model__MType__resolve_for]))(var_t, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_t:MType>*/;
4538 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var9) /* add on <var_types:Array[MType]>*/;
4539 CONTINUE_label: (void)0;
4540 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4541 }
4542 BREAK_label: (void)0;
4543 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MGenericType>*/;
4544 var11 = ((val* (*)(val*, val*))(var10->class->vft[COLOR_model__MClass__get_mtype]))(var10, var_types) /* get_mtype on <var10:MClass>*/;
4545 var = var11;
4546 goto RET_LABEL;
4547 RET_LABEL:;
4548 return var;
4549 }
4550 /* method model#MGenericType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
4551 val* VIRTUAL_model__MGenericType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4552 val* var /* : MType */;
4553 val* var1 /* : MType */;
4554 var1 = model__MGenericType__resolve_for(self, p0, p1, p2, p3);
4555 var = var1;
4556 RET_LABEL:;
4557 return var;
4558 }
4559 /* method model#MGenericType#can_resolve_for for (self: MGenericType, MType, nullable MClassType, MModule): Bool */
4560 short int model__MGenericType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
4561 short int var /* : Bool */;
4562 val* var_mtype /* var mtype: MType */;
4563 val* var_anchor /* var anchor: nullable MClassType */;
4564 val* var_mmodule /* var mmodule: MModule */;
4565 short int var1 /* : Bool */;
4566 short int var2 /* : Bool */;
4567 short int var3 /* : Bool */;
4568 val* var4 /* : Array[MType] */;
4569 val* var5 /* : Iterator[nullable Object] */;
4570 short int var6 /* : Bool */;
4571 val* var7 /* : nullable Object */;
4572 val* var_t /* var t: MType */;
4573 short int var8 /* : Bool */;
4574 short int var9 /* : Bool */;
4575 short int var10 /* : Bool */;
4576 short int var11 /* : Bool */;
4577 var_mtype = p0;
4578 var_anchor = p1;
4579 var_mmodule = p2;
4580 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MGenericType>*/;
4581 var2 = !var1;
4582 if (var2){
4583 var3 = 1;
4584 var = var3;
4585 goto RET_LABEL;
4586 } else {
4587 }
4588 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4589 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Array[MType]>*/;
4590 for(;;) {
4591 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
4592 if(!var6) break;
4593 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
4594 var_t = var7;
4595 var8 = ((short int (*)(val*, val*, val*, val*))(var_t->class->vft[COLOR_model__MType__can_resolve_for]))(var_t, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <var_t:MType>*/;
4596 var9 = !var8;
4597 if (var9){
4598 var10 = 0;
4599 var = var10;
4600 goto RET_LABEL;
4601 } else {
4602 }
4603 CONTINUE_label: (void)0;
4604 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
4605 }
4606 BREAK_label: (void)0;
4607 var11 = 1;
4608 var = var11;
4609 goto RET_LABEL;
4610 RET_LABEL:;
4611 return var;
4612 }
4613 /* method model#MGenericType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
4614 short int VIRTUAL_model__MGenericType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
4615 short int var /* : Bool */;
4616 short int var1 /* : Bool */;
4617 var1 = model__MGenericType__can_resolve_for(self, p0, p1, p2);
4618 var = var1;
4619 RET_LABEL:;
4620 return var;
4621 }
4622 /* method model#MGenericType#depth for (self: MGenericType): Int */
4623 long model__MGenericType__depth(val* self) {
4624 long var /* : Int */;
4625 long var1 /* : Int */;
4626 long var_dmax /* var dmax: Int */;
4627 val* var2 /* : Array[MType] */;
4628 val* var3 /* : Iterator[nullable Object] */;
4629 short int var4 /* : Bool */;
4630 val* var5 /* : nullable Object */;
4631 val* var_a /* var a: MType */;
4632 long var6 /* : Int */;
4633 long var_d /* var d: Int */;
4634 short int var7 /* : Bool */;
4635 short int var9 /* : Bool */;
4636 int cltype;
4637 int idtype;
4638 const char* var_class_name;
4639 short int var10 /* : Bool */;
4640 long var11 /* : Int */;
4641 long var12 /* : Int */;
4642 long var14 /* : Int */;
4643 var1 = 0;
4644 var_dmax = var1;
4645 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4646 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MType]>*/;
4647 for(;;) {
4648 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4649 if(!var4) break;
4650 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4651 var_a = var5;
4652 var6 = ((long (*)(val*))(var_a->class->vft[COLOR_model__MType__depth]))(var_a) /* depth on <var_a:MType>*/;
4653 var_d = var6;
4654 { /* Inline kernel#Int#> (var_d,var_dmax) */
4655 /* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
4656 /* <var_dmax:Int> isa OTHER */
4657 var9 = 1; /* easy <var_dmax:Int> isa OTHER*/
4658 if (!var9) {
4659 var_class_name = type_kernel__Int.name;
4660 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4661 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
4662 show_backtrace(1);
4663 }
4664 var10 = var_d > var_dmax;
4665 var7 = var10;
4666 goto RET_LABEL8;
4667 RET_LABEL8:(void)0;
4668 }
4669 if (var7){
4670 var_dmax = var_d;
4671 } else {
4672 }
4673 CONTINUE_label: (void)0;
4674 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4675 }
4676 BREAK_label: (void)0;
4677 var11 = 1;
4678 { /* Inline kernel#Int#+ (var_dmax,var11) */
4679 var14 = var_dmax + var11;
4680 var12 = var14;
4681 goto RET_LABEL13;
4682 RET_LABEL13:(void)0;
4683 }
4684 var = var12;
4685 goto RET_LABEL;
4686 RET_LABEL:;
4687 return var;
4688 }
4689 /* method model#MGenericType#depth for (self: Object): Int */
4690 long VIRTUAL_model__MGenericType__depth(val* self) {
4691 long var /* : Int */;
4692 long var1 /* : Int */;
4693 var1 = model__MGenericType__depth(self);
4694 var = var1;
4695 RET_LABEL:;
4696 return var;
4697 }
4698 /* method model#MGenericType#length for (self: MGenericType): Int */
4699 long model__MGenericType__length(val* self) {
4700 long var /* : Int */;
4701 long var1 /* : Int */;
4702 long var_res /* var res: Int */;
4703 val* var2 /* : Array[MType] */;
4704 val* var3 /* : Iterator[nullable Object] */;
4705 short int var4 /* : Bool */;
4706 val* var5 /* : nullable Object */;
4707 val* var_a /* var a: MType */;
4708 long var6 /* : Int */;
4709 long var7 /* : Int */;
4710 long var9 /* : Int */;
4711 var1 = 1;
4712 var_res = var1;
4713 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__arguments]))(self) /* arguments on <self:MGenericType>*/;
4714 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MType]>*/;
4715 for(;;) {
4716 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4717 if(!var4) break;
4718 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4719 var_a = var5;
4720 var6 = ((long (*)(val*))(var_a->class->vft[COLOR_model__MType__length]))(var_a) /* length on <var_a:MType>*/;
4721 { /* Inline kernel#Int#+ (var_res,var6) */
4722 var9 = var_res + var6;
4723 var7 = var9;
4724 goto RET_LABEL8;
4725 RET_LABEL8:(void)0;
4726 }
4727 var_res = var7;
4728 CONTINUE_label: (void)0;
4729 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4730 }
4731 BREAK_label: (void)0;
4732 var = var_res;
4733 goto RET_LABEL;
4734 RET_LABEL:;
4735 return var;
4736 }
4737 /* method model#MGenericType#length for (self: Object): Int */
4738 long VIRTUAL_model__MGenericType__length(val* self) {
4739 long var /* : Int */;
4740 long var1 /* : Int */;
4741 var1 = model__MGenericType__length(self);
4742 var = var1;
4743 RET_LABEL:;
4744 return var;
4745 }
4746 /* method model#MVirtualType#mproperty for (self: MVirtualType): MProperty */
4747 val* model__MVirtualType__mproperty(val* self) {
4748 val* var /* : MProperty */;
4749 val* var1 /* : MProperty */;
4750 var1 = self->attrs[COLOR_model__MVirtualType___64dmproperty].val; /* @mproperty on <self:MVirtualType> */
4751 if (var1 == NULL) {
4752 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
4753 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1066);
4754 show_backtrace(1);
4755 }
4756 var = var1;
4757 RET_LABEL:;
4758 return var;
4759 }
4760 /* method model#MVirtualType#mproperty for (self: Object): MProperty */
4761 val* VIRTUAL_model__MVirtualType__mproperty(val* self) {
4762 val* var /* : MProperty */;
4763 val* var1 /* : MProperty */;
4764 var1 = model__MVirtualType__mproperty(self);
4765 var = var1;
4766 RET_LABEL:;
4767 return var;
4768 }
4769 /* method model#MVirtualType#mproperty= for (self: MVirtualType, MProperty) */
4770 void model__MVirtualType__mproperty_61d(val* self, val* p0) {
4771 self->attrs[COLOR_model__MVirtualType___64dmproperty].val = p0; /* @mproperty on <self:MVirtualType> */
4772 RET_LABEL:;
4773 }
4774 /* method model#MVirtualType#mproperty= for (self: Object, MProperty) */
4775 void VIRTUAL_model__MVirtualType__mproperty_61d(val* self, val* p0) {
4776 model__MVirtualType__mproperty_61d(self, p0);
4777 RET_LABEL:;
4778 }
4779 /* method model#MVirtualType#model for (self: MVirtualType): Model */
4780 val* model__MVirtualType__model(val* self) {
4781 val* var /* : Model */;
4782 val* var1 /* : MProperty */;
4783 val* var2 /* : MClassDef */;
4784 val* var3 /* : MModule */;
4785 val* var4 /* : Model */;
4786 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4787 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro_mclassdef]))(var1) /* intro_mclassdef on <var1:MProperty>*/;
4788 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__mmodule]))(var2) /* mmodule on <var2:MClassDef>*/;
4789 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_mmodule__MModule__model]))(var3) /* model on <var3:MModule>*/;
4790 var = var4;
4791 goto RET_LABEL;
4792 RET_LABEL:;
4793 return var;
4794 }
4795 /* method model#MVirtualType#model for (self: Object): Model */
4796 val* VIRTUAL_model__MVirtualType__model(val* self) {
4797 val* var /* : Model */;
4798 val* var1 /* : Model */;
4799 var1 = model__MVirtualType__model(self);
4800 var = var1;
4801 RET_LABEL:;
4802 return var;
4803 }
4804 /* method model#MVirtualType#lookup_bound for (self: MVirtualType, MModule, MType): MType */
4805 val* model__MVirtualType__lookup_bound(val* self, val* p0, val* p1) {
4806 val* var /* : MType */;
4807 val* var_mmodule /* var mmodule: MModule */;
4808 val* var_resolved_receiver /* var resolved_receiver: MType */;
4809 short int var1 /* : Bool */;
4810 short int var2 /* : Bool */;
4811 val* var3 /* : MProperty */;
4812 val* var4 /* : Array[MPropDef] */;
4813 val* var_props /* var props: Array[MPropDef] */;
4814 short int var5 /* : Bool */;
4815 long var6 /* : Int */;
4816 long var7 /* : Int */;
4817 short int var8 /* : Bool */;
4818 short int var10 /* : Bool */;
4819 val* var11 /* : nullable Object */;
4820 short int var12 /* : Bool */;
4821 int cltype;
4822 int idtype;
4823 const char* var_class_name;
4824 val* var13 /* : nullable MType */;
4825 val* var14 /* : ArraySet[MType] */;
4826 val* var_types /* var types: ArraySet[MType] */;
4827 val* var15 /* : Iterator[nullable Object] */;
4828 short int var16 /* : Bool */;
4829 val* var17 /* : nullable Object */;
4830 val* var_p /* var p: MPropDef */;
4831 short int var18 /* : Bool */;
4832 int cltype19;
4833 int idtype20;
4834 const char* var_class_name21;
4835 val* var22 /* : nullable MType */;
4836 long var23 /* : Int */;
4837 long var24 /* : Int */;
4838 short int var25 /* : Bool */;
4839 short int var27 /* : Bool */;
4840 val* var28 /* : nullable Object */;
4841 var_mmodule = p0;
4842 var_resolved_receiver = p1;
4843 var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
4844 var2 = !var1;
4845 if (!var2) {
4846 fprintf(stderr, "Runtime error: %s", "Assert failed");
4847 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1080);
4848 show_backtrace(1);
4849 }
4850 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
4851 var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_definitions]))(var3, var_mmodule, var_resolved_receiver) /* lookup_definitions on <var3:MProperty>*/;
4852 var_props = var4;
4853 var5 = ((short int (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_props) /* is_empty on <var_props:Array[MPropDef]>*/;
4854 if (var5){
4855 fprintf(stderr, "Runtime error: %s", "Aborted");
4856 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1083);
4857 show_backtrace(1);
4858 } else {
4859 var6 = ((long (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__length]))(var_props) /* length on <var_props:Array[MPropDef]>*/;
4860 var7 = 1;
4861 { /* Inline kernel#Int#== (var6,var7) */
4862 var10 = var6 == var7;
4863 var8 = var10;
4864 goto RET_LABEL9;
4865 RET_LABEL9:(void)0;
4866 }
4867 if (var8){
4868 var11 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__first]))(var_props) /* first on <var_props:Array[MPropDef]>*/;
4869 /* <var11:nullable Object(MPropDef)> isa MVirtualTypeDef */
4870 cltype = type_model__MVirtualTypeDef.color;
4871 idtype = type_model__MVirtualTypeDef.id;
4872 if(cltype >= var11->type->table_size) {
4873 var12 = 0;
4874 } else {
4875 var12 = var11->type->type_table[cltype] == idtype;
4876 }
4877 if (!var12) {
4878 var_class_name = var11 == NULL ? "null" : var11->type->name;
4879 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name);
4880 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
4881 show_backtrace(1);
4882 }
4883 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var11) /* bound on <var11:MPropDef(MVirtualTypeDef)>*/;
4884 if (var13 == NULL) {
4885 fprintf(stderr, "Runtime error: %s", "Cast failed");
4886 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1085);
4887 show_backtrace(1);
4888 }
4889 var = var13;
4890 goto RET_LABEL;
4891 } else {
4892 }
4893 }
4894 var14 = NEW_array__ArraySet(&type_array__ArraySetmodel__MType);
4895 ((void (*)(val*))(var14->class->vft[COLOR_array__ArraySet__init]))(var14) /* init on <var14:ArraySet[MType]>*/;
4896 var_types = var14;
4897 var15 = ((val* (*)(val*))(var_props->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_props) /* iterator on <var_props:Array[MPropDef]>*/;
4898 for(;;) {
4899 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
4900 if(!var16) break;
4901 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
4902 var_p = var17;
4903 /* <var_p:MPropDef> isa MVirtualTypeDef */
4904 cltype19 = type_model__MVirtualTypeDef.color;
4905 idtype20 = type_model__MVirtualTypeDef.id;
4906 if(cltype19 >= var_p->type->table_size) {
4907 var18 = 0;
4908 } else {
4909 var18 = var_p->type->type_table[cltype19] == idtype20;
4910 }
4911 if (!var18) {
4912 var_class_name21 = var_p == NULL ? "null" : var_p->type->name;
4913 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name21);
4914 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
4915 show_backtrace(1);
4916 }
4917 var22 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var_p) /* bound on <var_p:MPropDef(MVirtualTypeDef)>*/;
4918 if (var22 == NULL) {
4919 fprintf(stderr, "Runtime error: %s", "Cast failed");
4920 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1089);
4921 show_backtrace(1);
4922 }
4923 ((void (*)(val*, val*))(var_types->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_types, var22) /* add on <var_types:ArraySet[MType]>*/;
4924 CONTINUE_label: (void)0;
4925 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
4926 }
4927 BREAK_label: (void)0;
4928 var23 = ((long (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__length]))(var_types) /* length on <var_types:ArraySet[MType]>*/;
4929 var24 = 1;
4930 { /* Inline kernel#Int#== (var23,var24) */
4931 var27 = var23 == var24;
4932 var25 = var27;
4933 goto RET_LABEL26;
4934 RET_LABEL26:(void)0;
4935 }
4936 if (var25){
4937 var28 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__first]))(var_types) /* first on <var_types:ArraySet[MType]>*/;
4938 var = var28;
4939 goto RET_LABEL;
4940 } else {
4941 }
4942 fprintf(stderr, "Runtime error: %s", "Aborted");
4943 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1094);
4944 show_backtrace(1);
4945 RET_LABEL:;
4946 return var;
4947 }
4948 /* method model#MVirtualType#lookup_bound for (self: Object, MModule, MType): MType */
4949 val* VIRTUAL_model__MVirtualType__lookup_bound(val* self, val* p0, val* p1) {
4950 val* var /* : MType */;
4951 val* var1 /* : MType */;
4952 var1 = model__MVirtualType__lookup_bound(self, p0, p1);
4953 var = var1;
4954 RET_LABEL:;
4955 return var;
4956 }
4957 /* method model#MVirtualType#resolve_for for (self: MVirtualType, MType, nullable MClassType, MModule, Bool): MType */
4958 val* model__MVirtualType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
4959 val* var /* : MType */;
4960 val* var_mtype /* var mtype: MType */;
4961 val* var_anchor /* var anchor: nullable MClassType */;
4962 val* var_mmodule /* var mmodule: MModule */;
4963 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
4964 short int var1 /* : Bool */;
4965 short int var2 /* : Bool */;
4966 val* var3 /* : null */;
4967 short int var4 /* : Bool */;
4968 val* var5 /* : null */;
4969 short int var6 /* : Bool */;
4970 val* var7 /* : MType */;
4971 val* var_resolved_reciever /* var resolved_reciever: nullable Object */;
4972 val* var8 /* : MType */;
4973 val* var_verbatim_bound /* var verbatim_bound: MType */;
4974 val* var9 /* : MType */;
4975 val* var_res /* var res: MType */;
4976 short int var10 /* : Bool */;
4977 int cltype;
4978 int idtype;
4979 val* var11 /* : MType */;
4980 short int var12 /* : Bool */;
4981 int cltype13;
4982 int idtype14;
4983 const char* var_class_name;
4984 val* var15 /* : MClass */;
4985 val* var16 /* : MClassKind */;
4986 val* var17 /* : MClassKind */;
4987 short int var18 /* : Bool */;
4988 short int var19 /* : Bool */;
4989 int cltype20;
4990 int idtype21;
4991 short int var22 /* : Bool */;
4992 short int var23 /* : Bool */;
4993 int cltype24;
4994 int idtype25;
4995 short int var_ /* var : Bool */;
4996 val* var26 /* : MClass */;
4997 val* var27 /* : MClassKind */;
4998 val* var28 /* : MClassKind */;
4999 short int var29 /* : Bool */;
5000 var_mtype = p0;
5001 var_anchor = p1;
5002 var_mmodule = p2;
5003 var_cleanup_virtual = p3;
5004 var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MVirtualType>*/;
5005 if (!var1) {
5006 fprintf(stderr, "Runtime error: %s", "Assert failed");
5007 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1099);
5008 show_backtrace(1);
5009 }
5010 var2 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5011 if (var2){
5012 var3 = NULL;
5013 if (var_anchor == NULL) {
5014 var4 = 0; /* is null */
5015 } else {
5016 var4 = 1; /* arg is null and recv is not */
5017 }
5018 if (!var4) {
5019 fprintf(stderr, "Runtime error: %s", "Assert failed");
5020 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1106);
5021 show_backtrace(1);
5022 }
5023 var5 = NULL;
5024 var6 = 1;
5025 var7 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var_anchor, var5, var_mmodule, var6) /* resolve_for on <var_mtype:MType>*/;
5026 var_resolved_reciever = var7;
5027 } else {
5028 var_resolved_reciever = var_mtype;
5029 }
5030 var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MVirtualType__lookup_bound]))(self, var_mmodule, var_resolved_reciever) /* lookup_bound on <self:MVirtualType>*/;
5031 var_verbatim_bound = var8;
5032 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var_verbatim_bound->class->vft[COLOR_model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_verbatim_bound:MType>*/;
5033 var_res = var9;
5034 if (var_cleanup_virtual){
5035 var = var_res;
5036 goto RET_LABEL;
5037 } else {
5038 }
5039 /* <var_resolved_reciever:nullable Object(MType)> isa MNullableType */
5040 cltype = type_model__MNullableType.color;
5041 idtype = type_model__MNullableType.id;
5042 if(cltype >= var_resolved_reciever->type->table_size) {
5043 var10 = 0;
5044 } else {
5045 var10 = var_resolved_reciever->type->type_table[cltype] == idtype;
5046 }
5047 if (var10){
5048 var11 = ((val* (*)(val*))(var_resolved_reciever->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_reciever) /* mtype on <var_resolved_reciever:nullable Object(MNullableType)>*/;
5049 var_resolved_reciever = var11;
5050 } else {
5051 }
5052 /* <var_resolved_reciever:nullable Object(MType)> isa MClassType */
5053 cltype13 = type_model__MClassType.color;
5054 idtype14 = type_model__MClassType.id;
5055 if(cltype13 >= var_resolved_reciever->type->table_size) {
5056 var12 = 0;
5057 } else {
5058 var12 = var_resolved_reciever->type->type_table[cltype13] == idtype14;
5059 }
5060 if (!var12) {
5061 var_class_name = var_resolved_reciever == NULL ? "null" : var_resolved_reciever->type->name;
5062 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5063 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1122);
5064 show_backtrace(1);
5065 }
5066 var15 = ((val* (*)(val*))(var_resolved_reciever->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_reciever) /* mclass on <var_resolved_reciever:MType(MClassType)>*/;
5067 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClass__kind]))(var15) /* kind on <var15:MClass>*/;
5068 var17 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MVirtualType>*/;
5069 var18 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_kernel__Object___61d_61d]))(var16, var17) /* == on <var16:MClassKind>*/;
5070 if (var18){
5071 var = var_res;
5072 goto RET_LABEL;
5073 } else {
5074 }
5075 /* <var_res:MType> isa MVirtualType */
5076 cltype20 = type_model__MVirtualType.color;
5077 idtype21 = type_model__MVirtualType.id;
5078 if(cltype20 >= var_res->type->table_size) {
5079 var19 = 0;
5080 } else {
5081 var19 = var_res->type->type_table[cltype20] == idtype21;
5082 }
5083 if (var19){
5084 var = var_res;
5085 goto RET_LABEL;
5086 } else {
5087 }
5088 /* <var_res:MType> isa MClassType */
5089 cltype24 = type_model__MClassType.color;
5090 idtype25 = type_model__MClassType.id;
5091 if(cltype24 >= var_res->type->table_size) {
5092 var23 = 0;
5093 } else {
5094 var23 = var_res->type->type_table[cltype24] == idtype25;
5095 }
5096 var_ = var23;
5097 if (var23){
5098 var26 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MClassType__mclass]))(var_res) /* mclass on <var_res:MType(MClassType)>*/;
5099 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MClass__kind]))(var26) /* kind on <var26:MClass>*/;
5100 var28 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__enum_kind]))(self) /* enum_kind on <self:MVirtualType>*/;
5101 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MClassKind>*/;
5102 var22 = var29;
5103 } else {
5104 var22 = var_;
5105 }
5106 if (var22){
5107 var = var_res;
5108 goto RET_LABEL;
5109 } else {
5110 }
5111 var = self;
5112 goto RET_LABEL;
5113 RET_LABEL:;
5114 return var;
5115 }
5116 /* method model#MVirtualType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5117 val* VIRTUAL_model__MVirtualType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5118 val* var /* : MType */;
5119 val* var1 /* : MType */;
5120 var1 = model__MVirtualType__resolve_for(self, p0, p1, p2, p3);
5121 var = var1;
5122 RET_LABEL:;
5123 return var;
5124 }
5125 /* method model#MVirtualType#can_resolve_for for (self: MVirtualType, MType, nullable MClassType, MModule): Bool */
5126 short int model__MVirtualType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5127 short int var /* : Bool */;
5128 val* var_mtype /* var mtype: MType */;
5129 val* var_anchor /* var anchor: nullable MClassType */;
5130 val* var_mmodule /* var mmodule: MModule */;
5131 short int var1 /* : Bool */;
5132 val* var2 /* : null */;
5133 short int var3 /* : Bool */;
5134 val* var4 /* : MType */;
5135 val* var5 /* : MProperty */;
5136 short int var6 /* : Bool */;
5137 var_mtype = p0;
5138 var_anchor = p1;
5139 var_mmodule = p2;
5140 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5141 if (var1){
5142 var2 = NULL;
5143 if (var_anchor == NULL) {
5144 var3 = 0; /* is null */
5145 } else {
5146 var3 = 1; /* arg is null and recv is not */
5147 }
5148 if (!var3) {
5149 fprintf(stderr, "Runtime error: %s", "Assert failed");
5150 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1138);
5151 show_backtrace(1);
5152 }
5153 var4 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
5154 var_mtype = var4;
5155 } else {
5156 }
5157 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
5158 var6 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, var5) /* has_mproperty on <var_mtype:MType>*/;
5159 var = var6;
5160 goto RET_LABEL;
5161 RET_LABEL:;
5162 return var;
5163 }
5164 /* method model#MVirtualType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5165 short int VIRTUAL_model__MVirtualType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5166 short int var /* : Bool */;
5167 short int var1 /* : Bool */;
5168 var1 = model__MVirtualType__can_resolve_for(self, p0, p1, p2);
5169 var = var1;
5170 RET_LABEL:;
5171 return var;
5172 }
5173 /* method model#MVirtualType#to_s for (self: MVirtualType): String */
5174 val* model__MVirtualType__to_s(val* self) {
5175 val* var /* : String */;
5176 val* var1 /* : MProperty */;
5177 val* var2 /* : String */;
5178 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MVirtualType__mproperty]))(self) /* mproperty on <self:MVirtualType>*/;
5179 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MProperty>*/;
5180 var = var2;
5181 goto RET_LABEL;
5182 RET_LABEL:;
5183 return var;
5184 }
5185 /* method model#MVirtualType#to_s for (self: Object): String */
5186 val* VIRTUAL_model__MVirtualType__to_s(val* self) {
5187 val* var /* : String */;
5188 val* var1 /* : String */;
5189 var1 = model__MVirtualType__to_s(self);
5190 var = var1;
5191 RET_LABEL:;
5192 return var;
5193 }
5194 /* method model#MVirtualType#init for (self: MVirtualType, MProperty) */
5195 void model__MVirtualType__init(val* self, val* p0) {
5196 val* var_mproperty /* var mproperty: MProperty */;
5197 var_mproperty = p0;
5198 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MVirtualType>*/;
5199 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MVirtualType__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:MVirtualType>*/;
5200 RET_LABEL:;
5201 }
5202 /* method model#MVirtualType#init for (self: Object, MProperty) */
5203 void VIRTUAL_model__MVirtualType__init(val* self, val* p0) {
5204 model__MVirtualType__init(self, p0);
5205 RET_LABEL:;
5206 }
5207 /* method model#MParameterType#mclass for (self: MParameterType): MClass */
5208 val* model__MParameterType__mclass(val* self) {
5209 val* var /* : MClass */;
5210 val* var1 /* : MClass */;
5211 var1 = self->attrs[COLOR_model__MParameterType___64dmclass].val; /* @mclass on <self:MParameterType> */
5212 if (var1 == NULL) {
5213 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclass");
5214 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1180);
5215 show_backtrace(1);
5216 }
5217 var = var1;
5218 RET_LABEL:;
5219 return var;
5220 }
5221 /* method model#MParameterType#mclass for (self: Object): MClass */
5222 val* VIRTUAL_model__MParameterType__mclass(val* self) {
5223 val* var /* : MClass */;
5224 val* var1 /* : MClass */;
5225 var1 = model__MParameterType__mclass(self);
5226 var = var1;
5227 RET_LABEL:;
5228 return var;
5229 }
5230 /* method model#MParameterType#mclass= for (self: MParameterType, MClass) */
5231 void model__MParameterType__mclass_61d(val* self, val* p0) {
5232 self->attrs[COLOR_model__MParameterType___64dmclass].val = p0; /* @mclass on <self:MParameterType> */
5233 RET_LABEL:;
5234 }
5235 /* method model#MParameterType#mclass= for (self: Object, MClass) */
5236 void VIRTUAL_model__MParameterType__mclass_61d(val* self, val* p0) {
5237 model__MParameterType__mclass_61d(self, p0);
5238 RET_LABEL:;
5239 }
5240 /* method model#MParameterType#model for (self: MParameterType): Model */
5241 val* model__MParameterType__model(val* self) {
5242 val* var /* : Model */;
5243 val* var1 /* : MClass */;
5244 val* var2 /* : MModule */;
5245 val* var3 /* : Model */;
5246 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5247 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClass__intro_mmodule]))(var1) /* intro_mmodule on <var1:MClass>*/;
5248 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_mmodule__MModule__model]))(var2) /* model on <var2:MModule>*/;
5249 var = var3;
5250 goto RET_LABEL;
5251 RET_LABEL:;
5252 return var;
5253 }
5254 /* method model#MParameterType#model for (self: Object): Model */
5255 val* VIRTUAL_model__MParameterType__model(val* self) {
5256 val* var /* : Model */;
5257 val* var1 /* : Model */;
5258 var1 = model__MParameterType__model(self);
5259 var = var1;
5260 RET_LABEL:;
5261 return var;
5262 }
5263 /* method model#MParameterType#rank for (self: MParameterType): Int */
5264 long model__MParameterType__rank(val* self) {
5265 long var /* : Int */;
5266 long var1 /* : Int */;
5267 var1 = self->attrs[COLOR_model__MParameterType___64drank].l; /* @rank on <self:MParameterType> */
5268 var = var1;
5269 RET_LABEL:;
5270 return var;
5271 }
5272 /* method model#MParameterType#rank for (self: Object): Int */
5273 long VIRTUAL_model__MParameterType__rank(val* self) {
5274 long var /* : Int */;
5275 long var1 /* : Int */;
5276 var1 = model__MParameterType__rank(self);
5277 var = var1;
5278 RET_LABEL:;
5279 return var;
5280 }
5281 /* method model#MParameterType#rank= for (self: MParameterType, Int) */
5282 void model__MParameterType__rank_61d(val* self, long p0) {
5283 self->attrs[COLOR_model__MParameterType___64drank].l = p0; /* @rank on <self:MParameterType> */
5284 RET_LABEL:;
5285 }
5286 /* method model#MParameterType#rank= for (self: Object, Int) */
5287 void VIRTUAL_model__MParameterType__rank_61d(val* self, long p0) {
5288 model__MParameterType__rank_61d(self, p0);
5289 RET_LABEL:;
5290 }
5291 /* method model#MParameterType#to_s for (self: MParameterType): String */
5292 val* model__MParameterType__to_s(val* self) {
5293 val* var /* : String */;
5294 val* var1 /* : Array[Object] */;
5295 long var2 /* : Int */;
5296 val* var_ /* var : Array[Object] */;
5297 static val* varonce;
5298 val* var3 /* : String */;
5299 char* var4 /* : NativeString */;
5300 long var5 /* : Int */;
5301 val* var6 /* : String */;
5302 val* var7 /* : MClass */;
5303 static val* varonce8;
5304 val* var9 /* : String */;
5305 char* var10 /* : NativeString */;
5306 long var11 /* : Int */;
5307 val* var12 /* : String */;
5308 long var13 /* : Int */;
5309 val* var14 /* : nullable Object */;
5310 static val* varonce15;
5311 val* var16 /* : String */;
5312 char* var17 /* : NativeString */;
5313 long var18 /* : Int */;
5314 val* var19 /* : String */;
5315 val* var20 /* : String */;
5316 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
5317 var2 = 5;
5318 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
5319 var_ = var1;
5320 if (varonce) {
5321 var3 = varonce;
5322 } else {
5323 var4 = "";
5324 var5 = 0;
5325 var6 = string__NativeString__to_s_with_length(var4, var5);
5326 var3 = var6;
5327 varonce = var3;
5328 }
5329 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
5330 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5331 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
5332 if (varonce8) {
5333 var9 = varonce8;
5334 } else {
5335 var10 = "#";
5336 var11 = 1;
5337 var12 = string__NativeString__to_s_with_length(var10, var11);
5338 var9 = var12;
5339 varonce8 = var9;
5340 }
5341 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
5342 var13 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5343 var14 = BOX_kernel__Int(var13); /* autobox from Int to nullable Object */
5344 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
5345 if (varonce15) {
5346 var16 = varonce15;
5347 } else {
5348 var17 = "";
5349 var18 = 0;
5350 var19 = string__NativeString__to_s_with_length(var17, var18);
5351 var16 = var19;
5352 varonce15 = var16;
5353 }
5354 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
5355 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
5356 var = var20;
5357 goto RET_LABEL;
5358 RET_LABEL:;
5359 return var;
5360 }
5361 /* method model#MParameterType#to_s for (self: Object): String */
5362 val* VIRTUAL_model__MParameterType__to_s(val* self) {
5363 val* var /* : String */;
5364 val* var1 /* : String */;
5365 var1 = model__MParameterType__to_s(self);
5366 var = var1;
5367 RET_LABEL:;
5368 return var;
5369 }
5370 /* method model#MParameterType#lookup_bound for (self: MParameterType, MModule, MType): MType */
5371 val* model__MParameterType__lookup_bound(val* self, val* p0, val* p1) {
5372 val* var /* : MType */;
5373 val* var_mmodule /* var mmodule: MModule */;
5374 val* var_resolved_receiver /* var resolved_receiver: MType */;
5375 short int var1 /* : Bool */;
5376 short int var2 /* : Bool */;
5377 val* var3 /* : MClass */;
5378 val* var_goalclass /* var goalclass: MClass */;
5379 val* var4 /* : Set[MClassType] */;
5380 val* var_supertypes /* var supertypes: Set[MClassType] */;
5381 val* var5 /* : Iterator[nullable Object] */;
5382 short int var6 /* : Bool */;
5383 val* var7 /* : nullable Object */;
5384 val* var_t /* var t: MClassType */;
5385 val* var8 /* : MClass */;
5386 short int var9 /* : Bool */;
5387 val* var10 /* : Array[MType] */;
5388 long var11 /* : Int */;
5389 val* var12 /* : nullable Object */;
5390 val* var_res /* var res: MType */;
5391 var_mmodule = p0;
5392 var_resolved_receiver = p1;
5393 var1 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:MType>*/;
5394 var2 = !var1;
5395 if (!var2) {
5396 fprintf(stderr, "Runtime error: %s", "Assert failed");
5397 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1200);
5398 show_backtrace(1);
5399 }
5400 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5401 var_goalclass = var3;
5402 var4 = ((val* (*)(val*, val*))(var_resolved_receiver->class->vft[COLOR_model__MType__collect_mtypes]))(var_resolved_receiver, var_mmodule) /* collect_mtypes on <var_resolved_receiver:MType>*/;
5403 var_supertypes = var4;
5404 var5 = ((val* (*)(val*))(var_supertypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supertypes) /* iterator on <var_supertypes:Set[MClassType]>*/;
5405 for(;;) {
5406 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
5407 if(!var6) break;
5408 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
5409 var_t = var7;
5410 var8 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__mclass]))(var_t) /* mclass on <var_t:MClassType>*/;
5411 var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___61d_61d]))(var8, var_goalclass) /* == on <var8:MClass>*/;
5412 if (var9){
5413 var10 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__arguments]))(var_t) /* arguments on <var_t:MClassType>*/;
5414 var11 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5415 var12 = ((val* (*)(val*, long))(var10->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var10, var11) /* [] on <var10:Array[MType]>*/;
5416 var_res = var12;
5417 var = var_res;
5418 goto RET_LABEL;
5419 } else {
5420 }
5421 CONTINUE_label: (void)0;
5422 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
5423 }
5424 BREAK_label: (void)0;
5425 fprintf(stderr, "Runtime error: %s", "Aborted");
5426 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1211);
5427 show_backtrace(1);
5428 RET_LABEL:;
5429 return var;
5430 }
5431 /* method model#MParameterType#lookup_bound for (self: Object, MModule, MType): MType */
5432 val* VIRTUAL_model__MParameterType__lookup_bound(val* self, val* p0, val* p1) {
5433 val* var /* : MType */;
5434 val* var1 /* : MType */;
5435 var1 = model__MParameterType__lookup_bound(self, p0, p1);
5436 var = var1;
5437 RET_LABEL:;
5438 return var;
5439 }
5440 /* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
5441 val* model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5442 val* var /* : MType */;
5443 val* var_mtype /* var mtype: MType */;
5444 val* var_anchor /* var anchor: nullable MClassType */;
5445 val* var_mmodule /* var mmodule: MModule */;
5446 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
5447 short int var1 /* : Bool */;
5448 short int var2 /* : Bool */;
5449 short int var3 /* : Bool */;
5450 int cltype;
5451 int idtype;
5452 short int var_ /* var : Bool */;
5453 val* var4 /* : MClass */;
5454 val* var5 /* : MClass */;
5455 short int var6 /* : Bool */;
5456 val* var7 /* : Array[MType] */;
5457 long var8 /* : Int */;
5458 val* var9 /* : nullable Object */;
5459 short int var10 /* : Bool */;
5460 val* var11 /* : null */;
5461 short int var12 /* : Bool */;
5462 val* var13 /* : MClass */;
5463 val* var14 /* : MClassType */;
5464 short int var15 /* : Bool */;
5465 val* var16 /* : MType */;
5466 val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
5467 short int var17 /* : Bool */;
5468 int cltype18;
5469 int idtype19;
5470 val* var20 /* : MType */;
5471 short int var21 /* : Bool */;
5472 int cltype22;
5473 int idtype23;
5474 val* var24 /* : MClass */;
5475 val* var25 /* : MClass */;
5476 short int var26 /* : Bool */;
5477 val* var27 /* : Array[MType] */;
5478 long var28 /* : Int */;
5479 val* var29 /* : nullable Object */;
5480 short int var30 /* : Bool */;
5481 int cltype31;
5482 int idtype32;
5483 val* var33 /* : MType */;
5484 short int var34 /* : Bool */;
5485 int cltype35;
5486 int idtype36;
5487 val* var37 /* : MClass */;
5488 val* var38 /* : MClass */;
5489 short int var39 /* : Bool */;
5490 val* var40 /* : Array[MType] */;
5491 long var41 /* : Int */;
5492 val* var42 /* : nullable Object */;
5493 val* var_res /* var res: MType */;
5494 short int var43 /* : Bool */;
5495 val* var44 /* : null */;
5496 short int var45 /* : Bool */;
5497 val* var46 /* : null */;
5498 short int var47 /* : Bool */;
5499 val* var48 /* : MType */;
5500 val* var49 /* : MType */;
5501 val* var_verbatim_bound /* var verbatim_bound: MType */;
5502 val* var50 /* : MType */;
5503 val* var_res51 /* var res: MType */;
5504 var_mtype = p0;
5505 var_anchor = p1;
5506 var_mmodule = p2;
5507 var_cleanup_virtual = p3;
5508 var1 = ((short int (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MType__can_resolve_for]))(self, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <self:MParameterType>*/;
5509 if (!var1) {
5510 fprintf(stderr, "Runtime error: %s", "Assert failed");
5511 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1216);
5512 show_backtrace(1);
5513 }
5514 /* <var_mtype:MType> isa MGenericType */
5515 cltype = type_model__MGenericType.color;
5516 idtype = type_model__MGenericType.id;
5517 if(cltype >= var_mtype->type->table_size) {
5518 var3 = 0;
5519 } else {
5520 var3 = var_mtype->type->type_table[cltype] == idtype;
5521 }
5522 var_ = var3;
5523 if (var3){
5524 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MType(MGenericType)>*/;
5525 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5526 var6 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___61d_61d]))(var4, var5) /* == on <var4:MClass>*/;
5527 var2 = var6;
5528 } else {
5529 var2 = var_;
5530 }
5531 if (var2){
5532 var7 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MType(MGenericType)>*/;
5533 var8 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5534 var9 = ((val* (*)(val*, long))(var7->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var7, var8) /* [] on <var7:Array[MType]>*/;
5535 var = var9;
5536 goto RET_LABEL;
5537 } else {
5538 }
5539 var10 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5540 if (var10){
5541 var11 = NULL;
5542 if (var_anchor == NULL) {
5543 var12 = 0; /* is null */
5544 } else {
5545 var12 = 1; /* arg is null and recv is not */
5546 }
5547 if (!var12) {
5548 fprintf(stderr, "Runtime error: %s", "Assert failed");
5549 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1229);
5550 show_backtrace(1);
5551 }
5552 var13 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType(MClassType)>*/;
5553 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__mclass_type]))(var13) /* mclass_type on <var13:MClass>*/;
5554 var15 = 1;
5555 var16 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var14, var_anchor, var_mmodule, var15) /* resolve_for on <var_mtype:MType>*/;
5556 var_resolved_receiver = var16;
5557 } else {
5558 var_resolved_receiver = var_mtype;
5559 }
5560 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
5561 cltype18 = type_model__MNullableType.color;
5562 idtype19 = type_model__MNullableType.id;
5563 if(cltype18 >= var_resolved_receiver->type->table_size) {
5564 var17 = 0;
5565 } else {
5566 var17 = var_resolved_receiver->type->type_table[cltype18] == idtype19;
5567 }
5568 if (var17){
5569 var20 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_receiver) /* mtype on <var_resolved_receiver:nullable Object(MNullableType)>*/;
5570 var_resolved_receiver = var20;
5571 } else {
5572 }
5573 /* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
5574 cltype22 = type_model__MParameterType.color;
5575 idtype23 = type_model__MParameterType.id;
5576 if(cltype22 >= var_resolved_receiver->type->table_size) {
5577 var21 = 0;
5578 } else {
5579 var21 = var_resolved_receiver->type->type_table[cltype22] == idtype23;
5580 }
5581 if (var21){
5582 var24 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MParameterType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MParameterType)>*/;
5583 if (var_anchor == NULL) {
5584 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5585 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
5586 show_backtrace(1);
5587 } else {
5588 var25 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__mclass]))(var_anchor) /* mclass on <var_anchor:nullable MClassType>*/;
5589 }
5590 var26 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_kernel__Object___61d_61d]))(var24, var25) /* == on <var24:MClass>*/;
5591 if (!var26) {
5592 fprintf(stderr, "Runtime error: %s", "Assert failed");
5593 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1236);
5594 show_backtrace(1);
5595 }
5596 if (var_anchor == NULL) {
5597 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5598 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1237);
5599 show_backtrace(1);
5600 } else {
5601 var27 = ((val* (*)(val*))(var_anchor->class->vft[COLOR_model__MClassType__arguments]))(var_anchor) /* arguments on <var_anchor:nullable MClassType>*/;
5602 }
5603 var28 = ((long (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MParameterType__rank]))(var_resolved_receiver) /* rank on <var_resolved_receiver:nullable Object(MParameterType)>*/;
5604 var29 = ((val* (*)(val*, long))(var27->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var27, var28) /* [] on <var27:Array[MType]>*/;
5605 var_resolved_receiver = var29;
5606 /* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
5607 cltype31 = type_model__MNullableType.color;
5608 idtype32 = type_model__MNullableType.id;
5609 if(cltype31 >= var_resolved_receiver->type->table_size) {
5610 var30 = 0;
5611 } else {
5612 var30 = var_resolved_receiver->type->type_table[cltype31] == idtype32;
5613 }
5614 if (var30){
5615 var33 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MNullableType__mtype]))(var_resolved_receiver) /* mtype on <var_resolved_receiver:nullable Object(MNullableType)>*/;
5616 var_resolved_receiver = var33;
5617 } else {
5618 }
5619 } else {
5620 }
5621 /* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
5622 cltype35 = type_model__MClassType.color;
5623 idtype36 = type_model__MClassType.id;
5624 if(cltype35 >= var_resolved_receiver->type->table_size) {
5625 var34 = 0;
5626 } else {
5627 var34 = var_resolved_receiver->type->type_table[cltype35] == idtype36;
5628 }
5629 if (!var34) {
5630 fprintf(stderr, "Runtime error: %s", "Assert failed");
5631 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1240);
5632 show_backtrace(1);
5633 }
5634 var37 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MClassType__mclass]))(var_resolved_receiver) /* mclass on <var_resolved_receiver:nullable Object(MClassType)>*/;
5635 var38 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5636 var39 = ((short int (*)(val*, val*))(var37->class->vft[COLOR_kernel__Object___61d_61d]))(var37, var38) /* == on <var37:MClass>*/;
5637 if (var39){
5638 var40 = ((val* (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MClassType__arguments]))(var_resolved_receiver) /* arguments on <var_resolved_receiver:nullable Object(MClassType)>*/;
5639 var41 = ((long (*)(val*))(self->class->vft[COLOR_model__MParameterType__rank]))(self) /* rank on <self:MParameterType>*/;
5640 var42 = ((val* (*)(val*, long))(var40->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var40, var41) /* [] on <var40:Array[MType]>*/;
5641 var_res = var42;
5642 var = var_res;
5643 goto RET_LABEL;
5644 } else {
5645 }
5646 var43 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:nullable Object(MClassType)>*/;
5647 if (var43){
5648 var44 = NULL;
5649 if (var_anchor == NULL) {
5650 var45 = 0; /* is null */
5651 } else {
5652 var45 = 1; /* arg is null and recv is not */
5653 }
5654 if (!var45) {
5655 fprintf(stderr, "Runtime error: %s", "Assert failed");
5656 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1251);
5657 show_backtrace(1);
5658 }
5659 var46 = NULL;
5660 var47 = 0;
5661 var48 = ((val* (*)(val*, val*, val*, val*, short int))(var_resolved_receiver->class->vft[COLOR_model__MType__resolve_for]))(var_resolved_receiver, var_anchor, var46, var_mmodule, var47) /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/;
5662 var_resolved_receiver = var48;
5663 } else {
5664 }
5665 var49 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MParameterType__lookup_bound]))(self, var_mmodule, var_resolved_receiver) /* lookup_bound on <self:MParameterType>*/;
5666 var_verbatim_bound = var49;
5667 var50 = ((val* (*)(val*, val*, val*, val*, short int))(var_verbatim_bound->class->vft[COLOR_model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_verbatim_bound:MType>*/;
5668 var_res51 = var50;
5669 var = var_res51;
5670 goto RET_LABEL;
5671 RET_LABEL:;
5672 return var;
5673 }
5674 /* method model#MParameterType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5675 val* VIRTUAL_model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5676 val* var /* : MType */;
5677 val* var1 /* : MType */;
5678 var1 = model__MParameterType__resolve_for(self, p0, p1, p2, p3);
5679 var = var1;
5680 RET_LABEL:;
5681 return var;
5682 }
5683 /* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
5684 short int model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5685 short int var /* : Bool */;
5686 val* var_mtype /* var mtype: MType */;
5687 val* var_anchor /* var anchor: nullable MClassType */;
5688 val* var_mmodule /* var mmodule: MModule */;
5689 short int var1 /* : Bool */;
5690 val* var2 /* : null */;
5691 short int var3 /* : Bool */;
5692 val* var4 /* : MType */;
5693 val* var5 /* : Set[MClassDef] */;
5694 val* var6 /* : MClass */;
5695 val* var7 /* : MClassDef */;
5696 short int var8 /* : Bool */;
5697 var_mtype = p0;
5698 var_anchor = p1;
5699 var_mmodule = p2;
5700 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
5701 if (var1){
5702 var2 = NULL;
5703 if (var_anchor == NULL) {
5704 var3 = 0; /* is null */
5705 } else {
5706 var3 = 1; /* arg is null and recv is not */
5707 }
5708 if (!var3) {
5709 fprintf(stderr, "Runtime error: %s", "Assert failed");
5710 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1267);
5711 show_backtrace(1);
5712 }
5713 var4 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
5714 var_mtype = var4;
5715 } else {
5716 }
5717 var5 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var_mmodule) /* collect_mclassdefs on <var_mtype:MType>*/;
5718 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameterType__mclass]))(self) /* mclass on <self:MParameterType>*/;
5719 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MClass__intro]))(var6) /* intro on <var6:MClass>*/;
5720 var8 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__Collection__has]))(var5, var7) /* has on <var5:Set[MClassDef]>*/;
5721 var = var8;
5722 goto RET_LABEL;
5723 RET_LABEL:;
5724 return var;
5725 }
5726 /* method model#MParameterType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5727 short int VIRTUAL_model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5728 short int var /* : Bool */;
5729 short int var1 /* : Bool */;
5730 var1 = model__MParameterType__can_resolve_for(self, p0, p1, p2);
5731 var = var1;
5732 RET_LABEL:;
5733 return var;
5734 }
5735 /* method model#MParameterType#init for (self: MParameterType, MClass, Int) */
5736 void model__MParameterType__init(val* self, val* p0, long p1) {
5737 val* var_mclass /* var mclass: MClass */;
5738 long var_rank /* var rank: Int */;
5739 var_mclass = p0;
5740 var_rank = p1;
5741 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MParameterType>*/;
5742 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MParameterType__mclass_61d]))(self, var_mclass) /* mclass= on <self:MParameterType>*/;
5743 ((void (*)(val*, long))(self->class->vft[COLOR_model__MParameterType__rank_61d]))(self, var_rank) /* rank= on <self:MParameterType>*/;
5744 RET_LABEL:;
5745 }
5746 /* method model#MParameterType#init for (self: Object, MClass, Int) */
5747 void VIRTUAL_model__MParameterType__init(val* self, val* p0, long p1) {
5748 model__MParameterType__init(self, p0, p1);
5749 RET_LABEL:;
5750 }
5751 /* method model#MNullableType#mtype for (self: MNullableType): MType */
5752 val* model__MNullableType__mtype(val* self) {
5753 val* var /* : MType */;
5754 val* var1 /* : MType */;
5755 var1 = self->attrs[COLOR_model__MNullableType___64dmtype].val; /* @mtype on <self:MNullableType> */
5756 if (var1 == NULL) {
5757 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
5758 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1284);
5759 show_backtrace(1);
5760 }
5761 var = var1;
5762 RET_LABEL:;
5763 return var;
5764 }
5765 /* method model#MNullableType#mtype for (self: Object): MType */
5766 val* VIRTUAL_model__MNullableType__mtype(val* self) {
5767 val* var /* : MType */;
5768 val* var1 /* : MType */;
5769 var1 = model__MNullableType__mtype(self);
5770 var = var1;
5771 RET_LABEL:;
5772 return var;
5773 }
5774 /* method model#MNullableType#mtype= for (self: MNullableType, MType) */
5775 void model__MNullableType__mtype_61d(val* self, val* p0) {
5776 self->attrs[COLOR_model__MNullableType___64dmtype].val = p0; /* @mtype on <self:MNullableType> */
5777 RET_LABEL:;
5778 }
5779 /* method model#MNullableType#mtype= for (self: Object, MType) */
5780 void VIRTUAL_model__MNullableType__mtype_61d(val* self, val* p0) {
5781 model__MNullableType__mtype_61d(self, p0);
5782 RET_LABEL:;
5783 }
5784 /* method model#MNullableType#model for (self: MNullableType): Model */
5785 val* model__MNullableType__model(val* self) {
5786 val* var /* : Model */;
5787 val* var1 /* : MType */;
5788 val* var2 /* : Model */;
5789 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5790 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MType__model]))(var1) /* model on <var1:MType>*/;
5791 var = var2;
5792 goto RET_LABEL;
5793 RET_LABEL:;
5794 return var;
5795 }
5796 /* method model#MNullableType#model for (self: Object): Model */
5797 val* VIRTUAL_model__MNullableType__model(val* self) {
5798 val* var /* : Model */;
5799 val* var1 /* : Model */;
5800 var1 = model__MNullableType__model(self);
5801 var = var1;
5802 RET_LABEL:;
5803 return var;
5804 }
5805 /* method model#MNullableType#init for (self: MNullableType, MType) */
5806 void model__MNullableType__init(val* self, val* p0) {
5807 val* var_mtype /* var mtype: MType */;
5808 static val* varonce;
5809 val* var /* : String */;
5810 char* var1 /* : NativeString */;
5811 long var2 /* : Int */;
5812 val* var3 /* : String */;
5813 val* var4 /* : Array[Object] */;
5814 long var5 /* : Int */;
5815 val* var6 /* : NativeArray[Object] */;
5816 val* var7 /* : String */;
5817 var_mtype = p0;
5818 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MNullableType>*/;
5819 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullableType__mtype_61d]))(self, var_mtype) /* mtype= on <self:MNullableType>*/;
5820 if (varonce) {
5821 var = varonce;
5822 } else {
5823 var1 = "nullable ";
5824 var2 = 9;
5825 var3 = string__NativeString__to_s_with_length(var1, var2);
5826 var = var3;
5827 varonce = var;
5828 }
5829 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
5830 { /* var4 = array_instance Array[Object] */
5831 var5 = 2;
5832 var6 = NEW_array__NativeArray(var5, &type_array__NativeArraykernel__Object);
5833 ((struct instance_array__NativeArray*)var6)->values[0] = (val*) var;
5834 ((struct instance_array__NativeArray*)var6)->values[1] = (val*) var_mtype;
5835 ((void (*)(val*, val*, long))(var4->class->vft[COLOR_array__Array__with_native]))(var4, var6, var5) /* with_native on <var4:Array[Object]>*/;
5836 }
5837 var7 = ((val* (*)(val*))(var4->class->vft[COLOR_string__Object__to_s]))(var4) /* to_s on <var4:Array[Object]>*/;
5838 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullableType__to_s_61d]))(self, var7) /* to_s= on <self:MNullableType>*/;
5839 RET_LABEL:;
5840 }
5841 /* method model#MNullableType#init for (self: Object, MType) */
5842 void VIRTUAL_model__MNullableType__init(val* self, val* p0) {
5843 model__MNullableType__init(self, p0);
5844 RET_LABEL:;
5845 }
5846 /* method model#MNullableType#to_s for (self: MNullableType): String */
5847 val* model__MNullableType__to_s(val* self) {
5848 val* var /* : String */;
5849 val* var1 /* : String */;
5850 var1 = self->attrs[COLOR_model__MNullableType___64dto_s].val; /* @to_s on <self:MNullableType> */
5851 if (var1 == NULL) {
5852 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
5853 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1295);
5854 show_backtrace(1);
5855 }
5856 var = var1;
5857 RET_LABEL:;
5858 return var;
5859 }
5860 /* method model#MNullableType#to_s for (self: Object): String */
5861 val* VIRTUAL_model__MNullableType__to_s(val* self) {
5862 val* var /* : String */;
5863 val* var1 /* : String */;
5864 var1 = model__MNullableType__to_s(self);
5865 var = var1;
5866 RET_LABEL:;
5867 return var;
5868 }
5869 /* method model#MNullableType#to_s= for (self: MNullableType, String) */
5870 void model__MNullableType__to_s_61d(val* self, val* p0) {
5871 self->attrs[COLOR_model__MNullableType___64dto_s].val = p0; /* @to_s on <self:MNullableType> */
5872 RET_LABEL:;
5873 }
5874 /* method model#MNullableType#to_s= for (self: Object, String) */
5875 void VIRTUAL_model__MNullableType__to_s_61d(val* self, val* p0) {
5876 model__MNullableType__to_s_61d(self, p0);
5877 RET_LABEL:;
5878 }
5879 /* method model#MNullableType#need_anchor for (self: MNullableType): Bool */
5880 short int model__MNullableType__need_anchor(val* self) {
5881 short int var /* : Bool */;
5882 val* var1 /* : MType */;
5883 short int var2 /* : Bool */;
5884 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5885 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
5886 var = var2;
5887 goto RET_LABEL;
5888 RET_LABEL:;
5889 return var;
5890 }
5891 /* method model#MNullableType#need_anchor for (self: Object): Bool */
5892 short int VIRTUAL_model__MNullableType__need_anchor(val* self) {
5893 short int var /* : Bool */;
5894 short int var1 /* : Bool */;
5895 var1 = model__MNullableType__need_anchor(self);
5896 var = var1;
5897 RET_LABEL:;
5898 return var;
5899 }
5900 /* method model#MNullableType#as_nullable for (self: MNullableType): MType */
5901 val* model__MNullableType__as_nullable(val* self) {
5902 val* var /* : MType */;
5903 var = self;
5904 goto RET_LABEL;
5905 RET_LABEL:;
5906 return var;
5907 }
5908 /* method model#MNullableType#as_nullable for (self: Object): MType */
5909 val* VIRTUAL_model__MNullableType__as_nullable(val* self) {
5910 val* var /* : MType */;
5911 val* var1 /* : MType */;
5912 var1 = model__MNullableType__as_nullable(self);
5913 var = var1;
5914 RET_LABEL:;
5915 return var;
5916 }
5917 /* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
5918 val* model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5919 val* var /* : MType */;
5920 val* var_mtype /* var mtype: MType */;
5921 val* var_anchor /* var anchor: nullable MClassType */;
5922 val* var_mmodule /* var mmodule: MModule */;
5923 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
5924 val* var1 /* : MType */;
5925 val* var2 /* : MType */;
5926 val* var_res /* var res: MType */;
5927 val* var3 /* : MType */;
5928 var_mtype = p0;
5929 var_anchor = p1;
5930 var_mmodule = p2;
5931 var_cleanup_virtual = p3;
5932 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5933 var2 = ((val* (*)(val*, val*, val*, val*, short int))(var1->class->vft[COLOR_model__MType__resolve_for]))(var1, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var1:MType>*/;
5934 var_res = var2;
5935 var3 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
5936 var = var3;
5937 goto RET_LABEL;
5938 RET_LABEL:;
5939 return var;
5940 }
5941 /* method model#MNullableType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
5942 val* VIRTUAL_model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
5943 val* var /* : MType */;
5944 val* var1 /* : MType */;
5945 var1 = model__MNullableType__resolve_for(self, p0, p1, p2, p3);
5946 var = var1;
5947 RET_LABEL:;
5948 return var;
5949 }
5950 /* method model#MNullableType#can_resolve_for for (self: MNullableType, MType, nullable MClassType, MModule): Bool */
5951 short int model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5952 short int var /* : Bool */;
5953 val* var_mtype /* var mtype: MType */;
5954 val* var_anchor /* var anchor: nullable MClassType */;
5955 val* var_mmodule /* var mmodule: MModule */;
5956 val* var1 /* : MType */;
5957 short int var2 /* : Bool */;
5958 var_mtype = p0;
5959 var_anchor = p1;
5960 var_mmodule = p2;
5961 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5962 var2 = ((short int (*)(val*, val*, val*, val*))(var1->class->vft[COLOR_model__MType__can_resolve_for]))(var1, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <var1:MType>*/;
5963 var = var2;
5964 goto RET_LABEL;
5965 RET_LABEL:;
5966 return var;
5967 }
5968 /* method model#MNullableType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
5969 short int VIRTUAL_model__MNullableType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
5970 short int var /* : Bool */;
5971 short int var1 /* : Bool */;
5972 var1 = model__MNullableType__can_resolve_for(self, p0, p1, p2);
5973 var = var1;
5974 RET_LABEL:;
5975 return var;
5976 }
5977 /* method model#MNullableType#depth for (self: MNullableType): Int */
5978 long model__MNullableType__depth(val* self) {
5979 long var /* : Int */;
5980 val* var1 /* : MType */;
5981 long var2 /* : Int */;
5982 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
5983 var2 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__depth]))(var1) /* depth on <var1:MType>*/;
5984 var = var2;
5985 goto RET_LABEL;
5986 RET_LABEL:;
5987 return var;
5988 }
5989 /* method model#MNullableType#depth for (self: Object): Int */
5990 long VIRTUAL_model__MNullableType__depth(val* self) {
5991 long var /* : Int */;
5992 long var1 /* : Int */;
5993 var1 = model__MNullableType__depth(self);
5994 var = var1;
5995 RET_LABEL:;
5996 return var;
5997 }
5998 /* method model#MNullableType#length for (self: MNullableType): Int */
5999 long model__MNullableType__length(val* self) {
6000 long var /* : Int */;
6001 val* var1 /* : MType */;
6002 long var2 /* : Int */;
6003 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6004 var2 = ((long (*)(val*))(var1->class->vft[COLOR_model__MType__length]))(var1) /* length on <var1:MType>*/;
6005 var = var2;
6006 goto RET_LABEL;
6007 RET_LABEL:;
6008 return var;
6009 }
6010 /* method model#MNullableType#length for (self: Object): Int */
6011 long VIRTUAL_model__MNullableType__length(val* self) {
6012 long var /* : Int */;
6013 long var1 /* : Int */;
6014 var1 = model__MNullableType__length(self);
6015 var = var1;
6016 RET_LABEL:;
6017 return var;
6018 }
6019 /* method model#MNullableType#collect_mclassdefs for (self: MNullableType, MModule): Set[MClassDef] */
6020 val* model__MNullableType__collect_mclassdefs(val* self, val* p0) {
6021 val* var /* : Set[MClassDef] */;
6022 val* var_mmodule /* var mmodule: MModule */;
6023 short int var1 /* : Bool */;
6024 short int var2 /* : Bool */;
6025 val* var3 /* : MType */;
6026 val* var4 /* : Set[MClassDef] */;
6027 var_mmodule = p0;
6028 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6029 var2 = !var1;
6030 if (!var2) {
6031 fprintf(stderr, "Runtime error: %s", "Assert failed");
6032 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1316);
6033 show_backtrace(1);
6034 }
6035 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6036 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
6037 var = var4;
6038 goto RET_LABEL;
6039 RET_LABEL:;
6040 return var;
6041 }
6042 /* method model#MNullableType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
6043 val* VIRTUAL_model__MNullableType__collect_mclassdefs(val* self, val* p0) {
6044 val* var /* : Set[MClassDef] */;
6045 val* var1 /* : Set[MClassDef] */;
6046 var1 = model__MNullableType__collect_mclassdefs(self, p0);
6047 var = var1;
6048 RET_LABEL:;
6049 return var;
6050 }
6051 /* method model#MNullableType#collect_mclasses for (self: MNullableType, MModule): Set[MClass] */
6052 val* model__MNullableType__collect_mclasses(val* self, val* p0) {
6053 val* var /* : Set[MClass] */;
6054 val* var_mmodule /* var mmodule: MModule */;
6055 short int var1 /* : Bool */;
6056 short int var2 /* : Bool */;
6057 val* var3 /* : MType */;
6058 val* var4 /* : Set[MClass] */;
6059 var_mmodule = p0;
6060 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6061 var2 = !var1;
6062 if (!var2) {
6063 fprintf(stderr, "Runtime error: %s", "Assert failed");
6064 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1322);
6065 show_backtrace(1);
6066 }
6067 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6068 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
6069 var = var4;
6070 goto RET_LABEL;
6071 RET_LABEL:;
6072 return var;
6073 }
6074 /* method model#MNullableType#collect_mclasses for (self: Object, MModule): Set[MClass] */
6075 val* VIRTUAL_model__MNullableType__collect_mclasses(val* self, val* p0) {
6076 val* var /* : Set[MClass] */;
6077 val* var1 /* : Set[MClass] */;
6078 var1 = model__MNullableType__collect_mclasses(self, p0);
6079 var = var1;
6080 RET_LABEL:;
6081 return var;
6082 }
6083 /* method model#MNullableType#collect_mtypes for (self: MNullableType, MModule): Set[MClassType] */
6084 val* model__MNullableType__collect_mtypes(val* self, val* p0) {
6085 val* var /* : Set[MClassType] */;
6086 val* var_mmodule /* var mmodule: MModule */;
6087 short int var1 /* : Bool */;
6088 short int var2 /* : Bool */;
6089 val* var3 /* : MType */;
6090 val* var4 /* : Set[MClassType] */;
6091 var_mmodule = p0;
6092 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MType__need_anchor]))(self) /* need_anchor on <self:MNullableType>*/;
6093 var2 = !var1;
6094 if (!var2) {
6095 fprintf(stderr, "Runtime error: %s", "Assert failed");
6096 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1328);
6097 show_backtrace(1);
6098 }
6099 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MNullableType__mtype]))(self) /* mtype on <self:MNullableType>*/;
6100 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
6101 var = var4;
6102 goto RET_LABEL;
6103 RET_LABEL:;
6104 return var;
6105 }
6106 /* method model#MNullableType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
6107 val* VIRTUAL_model__MNullableType__collect_mtypes(val* self, val* p0) {
6108 val* var /* : Set[MClassType] */;
6109 val* var1 /* : Set[MClassType] */;
6110 var1 = model__MNullableType__collect_mtypes(self, p0);
6111 var = var1;
6112 RET_LABEL:;
6113 return var;
6114 }
6115 /* method model#MNullType#model for (self: MNullType): Model */
6116 val* model__MNullType__model(val* self) {
6117 val* var /* : Model */;
6118 val* var1 /* : Model */;
6119 var1 = self->attrs[COLOR_model__MNullType___64dmodel].val; /* @model on <self:MNullType> */
6120 if (var1 == NULL) {
6121 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @model");
6122 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1338);
6123 show_backtrace(1);
6124 }
6125 var = var1;
6126 RET_LABEL:;
6127 return var;
6128 }
6129 /* method model#MNullType#model for (self: Object): Model */
6130 val* VIRTUAL_model__MNullType__model(val* self) {
6131 val* var /* : Model */;
6132 val* var1 /* : Model */;
6133 var1 = model__MNullType__model(self);
6134 var = var1;
6135 RET_LABEL:;
6136 return var;
6137 }
6138 /* method model#MNullType#model= for (self: MNullType, Model) */
6139 void model__MNullType__model_61d(val* self, val* p0) {
6140 self->attrs[COLOR_model__MNullType___64dmodel].val = p0; /* @model on <self:MNullType> */
6141 RET_LABEL:;
6142 }
6143 /* method model#MNullType#model= for (self: Object, Model) */
6144 void VIRTUAL_model__MNullType__model_61d(val* self, val* p0) {
6145 model__MNullType__model_61d(self, p0);
6146 RET_LABEL:;
6147 }
6148 /* method model#MNullType#init for (self: MNullType, Model) */
6149 void model__MNullType__init(val* self, val* p0) {
6150 val* var_model /* var model: Model */;
6151 var_model = p0;
6152 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MNullType>*/;
6153 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MNullType__model_61d]))(self, var_model) /* model= on <self:MNullType>*/;
6154 RET_LABEL:;
6155 }
6156 /* method model#MNullType#init for (self: Object, Model) */
6157 void VIRTUAL_model__MNullType__init(val* self, val* p0) {
6158 model__MNullType__init(self, p0);
6159 RET_LABEL:;
6160 }
6161 /* method model#MNullType#to_s for (self: MNullType): String */
6162 val* model__MNullType__to_s(val* self) {
6163 val* var /* : String */;
6164 static val* varonce;
6165 val* var1 /* : String */;
6166 char* var2 /* : NativeString */;
6167 long var3 /* : Int */;
6168 val* var4 /* : String */;
6169 if (varonce) {
6170 var1 = varonce;
6171 } else {
6172 var2 = "null";
6173 var3 = 4;
6174 var4 = string__NativeString__to_s_with_length(var2, var3);
6175 var1 = var4;
6176 varonce = var1;
6177 }
6178 var = var1;
6179 goto RET_LABEL;
6180 RET_LABEL:;
6181 return var;
6182 }
6183 /* method model#MNullType#to_s for (self: Object): String */
6184 val* VIRTUAL_model__MNullType__to_s(val* self) {
6185 val* var /* : String */;
6186 val* var1 /* : String */;
6187 var1 = model__MNullType__to_s(self);
6188 var = var1;
6189 RET_LABEL:;
6190 return var;
6191 }
6192 /* method model#MNullType#as_nullable for (self: MNullType): MType */
6193 val* model__MNullType__as_nullable(val* self) {
6194 val* var /* : MType */;
6195 var = self;
6196 goto RET_LABEL;
6197 RET_LABEL:;
6198 return var;
6199 }
6200 /* method model#MNullType#as_nullable for (self: Object): MType */
6201 val* VIRTUAL_model__MNullType__as_nullable(val* self) {
6202 val* var /* : MType */;
6203 val* var1 /* : MType */;
6204 var1 = model__MNullType__as_nullable(self);
6205 var = var1;
6206 RET_LABEL:;
6207 return var;
6208 }
6209 /* method model#MNullType#need_anchor for (self: MNullType): Bool */
6210 short int model__MNullType__need_anchor(val* self) {
6211 short int var /* : Bool */;
6212 short int var1 /* : Bool */;
6213 var1 = 0;
6214 var = var1;
6215 goto RET_LABEL;
6216 RET_LABEL:;
6217 return var;
6218 }
6219 /* method model#MNullType#need_anchor for (self: Object): Bool */
6220 short int VIRTUAL_model__MNullType__need_anchor(val* self) {
6221 short int var /* : Bool */;
6222 short int var1 /* : Bool */;
6223 var1 = model__MNullType__need_anchor(self);
6224 var = var1;
6225 RET_LABEL:;
6226 return var;
6227 }
6228 /* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
6229 val* model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6230 val* var /* : MType */;
6231 val* var_mtype /* var mtype: MType */;
6232 val* var_anchor /* var anchor: nullable MClassType */;
6233 val* var_mmodule /* var mmodule: MModule */;
6234 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
6235 var_mtype = p0;
6236 var_anchor = p1;
6237 var_mmodule = p2;
6238 var_cleanup_virtual = p3;
6239 var = self;
6240 goto RET_LABEL;
6241 RET_LABEL:;
6242 return var;
6243 }
6244 /* method model#MNullType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
6245 val* VIRTUAL_model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6246 val* var /* : MType */;
6247 val* var1 /* : MType */;
6248 var1 = model__MNullType__resolve_for(self, p0, p1, p2, p3);
6249 var = var1;
6250 RET_LABEL:;
6251 return var;
6252 }
6253 /* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
6254 short int model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
6255 short int var /* : Bool */;
6256 val* var_mtype /* var mtype: MType */;
6257 val* var_anchor /* var anchor: nullable MClassType */;
6258 val* var_mmodule /* var mmodule: MModule */;
6259 short int var1 /* : Bool */;
6260 var_mtype = p0;
6261 var_anchor = p1;
6262 var_mmodule = p2;
6263 var1 = 1;
6264 var = var1;
6265 goto RET_LABEL;
6266 RET_LABEL:;
6267 return var;
6268 }
6269 /* method model#MNullType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
6270 short int VIRTUAL_model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
6271 short int var /* : Bool */;
6272 short int var1 /* : Bool */;
6273 var1 = model__MNullType__can_resolve_for(self, p0, p1, p2);
6274 var = var1;
6275 RET_LABEL:;
6276 return var;
6277 }
6278 /* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
6279 val* model__MNullType__collect_mclassdefs(val* self, val* p0) {
6280 val* var /* : Set[MClassDef] */;
6281 val* var_mmodule /* var mmodule: MModule */;
6282 val* var1 /* : HashSet[MClassDef] */;
6283 var_mmodule = p0;
6284 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
6285 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassDef]>*/;
6286 var = var1;
6287 goto RET_LABEL;
6288 RET_LABEL:;
6289 return var;
6290 }
6291 /* method model#MNullType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
6292 val* VIRTUAL_model__MNullType__collect_mclassdefs(val* self, val* p0) {
6293 val* var /* : Set[MClassDef] */;
6294 val* var1 /* : Set[MClassDef] */;
6295 var1 = model__MNullType__collect_mclassdefs(self, p0);
6296 var = var1;
6297 RET_LABEL:;
6298 return var;
6299 }
6300 /* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
6301 val* model__MNullType__collect_mclasses(val* self, val* p0) {
6302 val* var /* : Set[MClass] */;
6303 val* var_mmodule /* var mmodule: MModule */;
6304 val* var1 /* : HashSet[MClass] */;
6305 var_mmodule = p0;
6306 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
6307 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
6308 var = var1;
6309 goto RET_LABEL;
6310 RET_LABEL:;
6311 return var;
6312 }
6313 /* method model#MNullType#collect_mclasses for (self: Object, MModule): Set[MClass] */
6314 val* VIRTUAL_model__MNullType__collect_mclasses(val* self, val* p0) {
6315 val* var /* : Set[MClass] */;
6316 val* var1 /* : Set[MClass] */;
6317 var1 = model__MNullType__collect_mclasses(self, p0);
6318 var = var1;
6319 RET_LABEL:;
6320 return var;
6321 }
6322 /* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
6323 val* model__MNullType__collect_mtypes(val* self, val* p0) {
6324 val* var /* : Set[MClassType] */;
6325 val* var_mmodule /* var mmodule: MModule */;
6326 val* var1 /* : HashSet[MClassType] */;
6327 var_mmodule = p0;
6328 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
6329 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassType]>*/;
6330 var = var1;
6331 goto RET_LABEL;
6332 RET_LABEL:;
6333 return var;
6334 }
6335 /* method model#MNullType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
6336 val* VIRTUAL_model__MNullType__collect_mtypes(val* self, val* p0) {
6337 val* var /* : Set[MClassType] */;
6338 val* var1 /* : Set[MClassType] */;
6339 var1 = model__MNullType__collect_mtypes(self, p0);
6340 var = var1;
6341 RET_LABEL:;
6342 return var;
6343 }
6344 /* method model#MSignature#mparameters for (self: MSignature): Array[MParameter] */
6345 val* model__MSignature__mparameters(val* self) {
6346 val* var /* : Array[MParameter] */;
6347 val* var1 /* : Array[MParameter] */;
6348 var1 = self->attrs[COLOR_model__MSignature___64dmparameters].val; /* @mparameters on <self:MSignature> */
6349 if (var1 == NULL) {
6350 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mparameters");
6351 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1360);
6352 show_backtrace(1);
6353 }
6354 var = var1;
6355 RET_LABEL:;
6356 return var;
6357 }
6358 /* method model#MSignature#mparameters for (self: Object): Array[MParameter] */
6359 val* VIRTUAL_model__MSignature__mparameters(val* self) {
6360 val* var /* : Array[MParameter] */;
6361 val* var1 /* : Array[MParameter] */;
6362 var1 = model__MSignature__mparameters(self);
6363 var = var1;
6364 RET_LABEL:;
6365 return var;
6366 }
6367 /* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
6368 void model__MSignature__mparameters_61d(val* self, val* p0) {
6369 self->attrs[COLOR_model__MSignature___64dmparameters].val = p0; /* @mparameters on <self:MSignature> */
6370 RET_LABEL:;
6371 }
6372 /* method model#MSignature#mparameters= for (self: Object, Array[MParameter]) */
6373 void VIRTUAL_model__MSignature__mparameters_61d(val* self, val* p0) {
6374 model__MSignature__mparameters_61d(self, p0);
6375 RET_LABEL:;
6376 }
6377 /* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
6378 val* model__MSignature__return_mtype(val* self) {
6379 val* var /* : nullable MType */;
6380 val* var1 /* : nullable MType */;
6381 var1 = self->attrs[COLOR_model__MSignature___64dreturn_mtype].val; /* @return_mtype on <self:MSignature> */
6382 var = var1;
6383 RET_LABEL:;
6384 return var;
6385 }
6386 /* method model#MSignature#return_mtype for (self: Object): nullable MType */
6387 val* VIRTUAL_model__MSignature__return_mtype(val* self) {
6388 val* var /* : nullable MType */;
6389 val* var1 /* : nullable MType */;
6390 var1 = model__MSignature__return_mtype(self);
6391 var = var1;
6392 RET_LABEL:;
6393 return var;
6394 }
6395 /* method model#MSignature#return_mtype= for (self: MSignature, nullable MType) */
6396 void model__MSignature__return_mtype_61d(val* self, val* p0) {
6397 self->attrs[COLOR_model__MSignature___64dreturn_mtype].val = p0; /* @return_mtype on <self:MSignature> */
6398 RET_LABEL:;
6399 }
6400 /* method model#MSignature#return_mtype= for (self: Object, nullable MType) */
6401 void VIRTUAL_model__MSignature__return_mtype_61d(val* self, val* p0) {
6402 model__MSignature__return_mtype_61d(self, p0);
6403 RET_LABEL:;
6404 }
6405 /* method model#MSignature#depth for (self: MSignature): Int */
6406 long model__MSignature__depth(val* self) {
6407 long var /* : Int */;
6408 long var1 /* : Int */;
6409 long var_dmax /* var dmax: Int */;
6410 val* var2 /* : nullable MType */;
6411 val* var_t /* var t: nullable MType */;
6412 val* var3 /* : null */;
6413 short int var4 /* : Bool */;
6414 long var5 /* : Int */;
6415 val* var6 /* : Array[MParameter] */;
6416 val* var7 /* : Iterator[nullable Object] */;
6417 short int var8 /* : Bool */;
6418 val* var9 /* : nullable Object */;
6419 val* var_p /* var p: MParameter */;
6420 val* var10 /* : MType */;
6421 long var11 /* : Int */;
6422 long var_d /* var d: Int */;
6423 short int var12 /* : Bool */;
6424 short int var14 /* : Bool */;
6425 int cltype;
6426 int idtype;
6427 const char* var_class_name;
6428 short int var15 /* : Bool */;
6429 long var16 /* : Int */;
6430 long var17 /* : Int */;
6431 long var19 /* : Int */;
6432 var1 = 0;
6433 var_dmax = var1;
6434 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6435 var_t = var2;
6436 var3 = NULL;
6437 if (var_t == NULL) {
6438 var4 = 0; /* is null */
6439 } else {
6440 var4 = 1; /* arg is null and recv is not */
6441 }
6442 if (var4){
6443 var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__depth]))(var_t) /* depth on <var_t:nullable MType(MType)>*/;
6444 var_dmax = var5;
6445 } else {
6446 }
6447 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6448 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MParameter]>*/;
6449 for(;;) {
6450 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
6451 if(!var8) break;
6452 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
6453 var_p = var9;
6454 var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
6455 var11 = ((long (*)(val*))(var10->class->vft[COLOR_model__MType__depth]))(var10) /* depth on <var10:MType>*/;
6456 var_d = var11;
6457 { /* Inline kernel#Int#> (var_d,var_dmax) */
6458 /* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
6459 /* <var_dmax:Int> isa OTHER */
6460 var14 = 1; /* easy <var_dmax:Int> isa OTHER*/
6461 if (!var14) {
6462 var_class_name = type_kernel__Int.name;
6463 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6464 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6465 show_backtrace(1);
6466 }
6467 var15 = var_d > var_dmax;
6468 var12 = var15;
6469 goto RET_LABEL13;
6470 RET_LABEL13:(void)0;
6471 }
6472 if (var12){
6473 var_dmax = var_d;
6474 } else {
6475 }
6476 CONTINUE_label: (void)0;
6477 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
6478 }
6479 BREAK_label: (void)0;
6480 var16 = 1;
6481 { /* Inline kernel#Int#+ (var_dmax,var16) */
6482 var19 = var_dmax + var16;
6483 var17 = var19;
6484 goto RET_LABEL18;
6485 RET_LABEL18:(void)0;
6486 }
6487 var = var17;
6488 goto RET_LABEL;
6489 RET_LABEL:;
6490 return var;
6491 }
6492 /* method model#MSignature#depth for (self: Object): Int */
6493 long VIRTUAL_model__MSignature__depth(val* self) {
6494 long var /* : Int */;
6495 long var1 /* : Int */;
6496 var1 = model__MSignature__depth(self);
6497 var = var1;
6498 RET_LABEL:;
6499 return var;
6500 }
6501 /* method model#MSignature#length for (self: MSignature): Int */
6502 long model__MSignature__length(val* self) {
6503 long var /* : Int */;
6504 long var1 /* : Int */;
6505 long var_res /* var res: Int */;
6506 val* var2 /* : nullable MType */;
6507 val* var_t /* var t: nullable MType */;
6508 val* var3 /* : null */;
6509 short int var4 /* : Bool */;
6510 long var5 /* : Int */;
6511 long var6 /* : Int */;
6512 long var8 /* : Int */;
6513 val* var9 /* : Array[MParameter] */;
6514 val* var10 /* : Iterator[nullable Object] */;
6515 short int var11 /* : Bool */;
6516 val* var12 /* : nullable Object */;
6517 val* var_p /* var p: MParameter */;
6518 val* var13 /* : MType */;
6519 long var14 /* : Int */;
6520 long var15 /* : Int */;
6521 long var17 /* : Int */;
6522 var1 = 1;
6523 var_res = var1;
6524 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6525 var_t = var2;
6526 var3 = NULL;
6527 if (var_t == NULL) {
6528 var4 = 0; /* is null */
6529 } else {
6530 var4 = 1; /* arg is null and recv is not */
6531 }
6532 if (var4){
6533 var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
6534 { /* Inline kernel#Int#+ (var_res,var5) */
6535 var8 = var_res + var5;
6536 var6 = var8;
6537 goto RET_LABEL7;
6538 RET_LABEL7:(void)0;
6539 }
6540 var_res = var6;
6541 } else {
6542 }
6543 var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6544 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Array[MParameter]>*/;
6545 for(;;) {
6546 var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
6547 if(!var11) break;
6548 var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
6549 var_p = var12;
6550 var13 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
6551 var14 = ((long (*)(val*))(var13->class->vft[COLOR_model__MType__length]))(var13) /* length on <var13:MType>*/;
6552 { /* Inline kernel#Int#+ (var_res,var14) */
6553 var17 = var_res + var14;
6554 var15 = var17;
6555 goto RET_LABEL16;
6556 RET_LABEL16:(void)0;
6557 }
6558 var_res = var15;
6559 CONTINUE_label: (void)0;
6560 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
6561 }
6562 BREAK_label: (void)0;
6563 var = var_res;
6564 goto RET_LABEL;
6565 RET_LABEL:;
6566 return var;
6567 }
6568 /* method model#MSignature#length for (self: Object): Int */
6569 long VIRTUAL_model__MSignature__length(val* self) {
6570 long var /* : Int */;
6571 long var1 /* : Int */;
6572 var1 = model__MSignature__length(self);
6573 var = var1;
6574 RET_LABEL:;
6575 return var;
6576 }
6577 /* method model#MSignature#init for (self: MSignature, Array[MParameter], nullable MType) */
6578 void model__MSignature__init(val* self, val* p0, val* p1) {
6579 val* var_mparameters /* var mparameters: Array[MParameter] */;
6580 val* var_return_mtype /* var return_mtype: nullable MType */;
6581 long var /* : Int */;
6582 long var1 /* : Int */;
6583 long var3 /* : Int */;
6584 long var_vararg_rank /* var vararg_rank: Int */;
6585 val* var4 /* : Range[Int] */;
6586 long var5 /* : Int */;
6587 long var6 /* : Int */;
6588 val* var7 /* : Discrete */;
6589 val* var8 /* : Discrete */;
6590 val* var9 /* : Iterator[nullable Object] */;
6591 short int var10 /* : Bool */;
6592 val* var11 /* : nullable Object */;
6593 long var_i /* var i: Int */;
6594 long var12 /* : Int */;
6595 val* var13 /* : nullable Object */;
6596 val* var_parameter /* var parameter: MParameter */;
6597 short int var14 /* : Bool */;
6598 long var15 /* : Int */;
6599 long var16 /* : Int */;
6600 long var18 /* : Int */;
6601 short int var19 /* : Bool */;
6602 short int var21 /* : Bool */;
6603 var_mparameters = p0;
6604 var_return_mtype = p1;
6605 ((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MSignature>*/;
6606 var = 1;
6607 { /* Inline kernel#Int#unary - (var) */
6608 var3 = -var;
6609 var1 = var3;
6610 goto RET_LABEL2;
6611 RET_LABEL2:(void)0;
6612 }
6613 var_vararg_rank = var1;
6614 var4 = NEW_range__Range(&type_range__Rangekernel__Int);
6615 var5 = 0;
6616 var6 = ((long (*)(val*))(var_mparameters->class->vft[COLOR_abstract_collection__Collection__length]))(var_mparameters) /* length on <var_mparameters:Array[MParameter]>*/;
6617 var7 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
6618 var8 = BOX_kernel__Int(var6); /* autobox from Int to Discrete */
6619 ((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__without_last]))(var4, var7, var8) /* without_last on <var4:Range[Int]>*/;
6620 var9 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
6621 for(;;) {
6622 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
6623 if(!var10) break;
6624 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
6625 var12 = ((struct instance_kernel__Int*)var11)->value; /* autounbox from nullable Object to Int */;
6626 var_i = var12;
6627 var13 = ((val* (*)(val*, long))(var_mparameters->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_mparameters, var_i) /* [] on <var_mparameters:Array[MParameter]>*/;
6628 var_parameter = var13;
6629 var14 = ((short int (*)(val*))(var_parameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_parameter) /* is_vararg on <var_parameter:MParameter>*/;
6630 if (var14){
6631 var15 = 1;
6632 { /* Inline kernel#Int#unary - (var15) */
6633 var18 = -var15;
6634 var16 = var18;
6635 goto RET_LABEL17;
6636 RET_LABEL17:(void)0;
6637 }
6638 { /* Inline kernel#Int#== (var_vararg_rank,var16) */
6639 var21 = var_vararg_rank == var16;
6640 var19 = var21;
6641 goto RET_LABEL20;
6642 RET_LABEL20:(void)0;
6643 }
6644 if (!var19) {
6645 fprintf(stderr, "Runtime error: %s", "Assert failed");
6646 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1396);
6647 show_backtrace(1);
6648 }
6649 var_vararg_rank = var_i;
6650 } else {
6651 }
6652 CONTINUE_label: (void)0;
6653 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
6654 }
6655 BREAK_label: (void)0;
6656 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MSignature__mparameters_61d]))(self, var_mparameters) /* mparameters= on <self:MSignature>*/;
6657 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MSignature__return_mtype_61d]))(self, var_return_mtype) /* return_mtype= on <self:MSignature>*/;
6658 ((void (*)(val*, long))(self->class->vft[COLOR_model__MSignature__vararg_rank_61d]))(self, var_vararg_rank) /* vararg_rank= on <self:MSignature>*/;
6659 RET_LABEL:;
6660 }
6661 /* method model#MSignature#init for (self: Object, Array[MParameter], nullable MType) */
6662 void VIRTUAL_model__MSignature__init(val* self, val* p0, val* p1) {
6663 model__MSignature__init(self, p0, p1);
6664 RET_LABEL:;
6665 }
6666 /* method model#MSignature#vararg_rank for (self: MSignature): Int */
6667 long model__MSignature__vararg_rank(val* self) {
6668 long var /* : Int */;
6669 long var1 /* : Int */;
6670 var1 = self->attrs[COLOR_model__MSignature___64dvararg_rank].l; /* @vararg_rank on <self:MSignature> */
6671 var = var1;
6672 RET_LABEL:;
6673 return var;
6674 }
6675 /* method model#MSignature#vararg_rank for (self: Object): Int */
6676 long VIRTUAL_model__MSignature__vararg_rank(val* self) {
6677 long var /* : Int */;
6678 long var1 /* : Int */;
6679 var1 = model__MSignature__vararg_rank(self);
6680 var = var1;
6681 RET_LABEL:;
6682 return var;
6683 }
6684 /* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
6685 void model__MSignature__vararg_rank_61d(val* self, long p0) {
6686 self->attrs[COLOR_model__MSignature___64dvararg_rank].l = p0; /* @vararg_rank on <self:MSignature> */
6687 RET_LABEL:;
6688 }
6689 /* method model#MSignature#vararg_rank= for (self: Object, Int) */
6690 void VIRTUAL_model__MSignature__vararg_rank_61d(val* self, long p0) {
6691 model__MSignature__vararg_rank_61d(self, p0);
6692 RET_LABEL:;
6693 }
6694 /* method model#MSignature#arity for (self: MSignature): Int */
6695 long model__MSignature__arity(val* self) {
6696 long var /* : Int */;
6697 val* var1 /* : Array[MParameter] */;
6698 long var2 /* : Int */;
6699 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6700 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[MParameter]>*/;
6701 var = var2;
6702 goto RET_LABEL;
6703 RET_LABEL:;
6704 return var;
6705 }
6706 /* method model#MSignature#arity for (self: Object): Int */
6707 long VIRTUAL_model__MSignature__arity(val* self) {
6708 long var /* : Int */;
6709 long var1 /* : Int */;
6710 var1 = model__MSignature__arity(self);
6711 var = var1;
6712 RET_LABEL:;
6713 return var;
6714 }
6715 /* method model#MSignature#to_s for (self: MSignature): String */
6716 val* model__MSignature__to_s(val* self) {
6717 val* var /* : String */;
6718 val* var1 /* : Buffer */;
6719 val* var_b /* var b: Buffer */;
6720 val* var2 /* : Array[MParameter] */;
6721 short int var3 /* : Bool */;
6722 short int var4 /* : Bool */;
6723 static val* varonce;
6724 val* var5 /* : String */;
6725 char* var6 /* : NativeString */;
6726 long var7 /* : Int */;
6727 val* var8 /* : String */;
6728 val* var9 /* : Range[Int] */;
6729 long var10 /* : Int */;
6730 val* var11 /* : Array[MParameter] */;
6731 long var12 /* : Int */;
6732 val* var13 /* : Discrete */;
6733 val* var14 /* : Discrete */;
6734 val* var15 /* : Iterator[nullable Object] */;
6735 short int var16 /* : Bool */;
6736 val* var17 /* : nullable Object */;
6737 long var_i /* var i: Int */;
6738 long var18 /* : Int */;
6739 val* var19 /* : Array[MParameter] */;
6740 val* var20 /* : nullable Object */;
6741 val* var_mparameter /* var mparameter: MParameter */;
6742 long var21 /* : Int */;
6743 short int var22 /* : Bool */;
6744 short int var24 /* : Bool */;
6745 int cltype;
6746 int idtype;
6747 const char* var_class_name;
6748 short int var25 /* : Bool */;
6749 static val* varonce26;
6750 val* var27 /* : String */;
6751 char* var28 /* : NativeString */;
6752 long var29 /* : Int */;
6753 val* var30 /* : String */;
6754 val* var31 /* : String */;
6755 static val* varonce32;
6756 val* var33 /* : String */;
6757 char* var34 /* : NativeString */;
6758 long var35 /* : Int */;
6759 val* var36 /* : String */;
6760 val* var37 /* : MType */;
6761 val* var38 /* : String */;
6762 short int var39 /* : Bool */;
6763 static val* varonce40;
6764 val* var41 /* : String */;
6765 char* var42 /* : NativeString */;
6766 long var43 /* : Int */;
6767 val* var44 /* : String */;
6768 static val* varonce45;
6769 val* var46 /* : String */;
6770 char* var47 /* : NativeString */;
6771 long var48 /* : Int */;
6772 val* var49 /* : String */;
6773 val* var50 /* : nullable MType */;
6774 val* var_ret /* var ret: nullable MType */;
6775 val* var51 /* : null */;
6776 short int var52 /* : Bool */;
6777 static val* varonce53;
6778 val* var54 /* : String */;
6779 char* var55 /* : NativeString */;
6780 long var56 /* : Int */;
6781 val* var57 /* : String */;
6782 val* var58 /* : String */;
6783 val* var59 /* : String */;
6784 var1 = NEW_string__Buffer(&type_string__Buffer);
6785 ((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
6786 var_b = var1;
6787 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6788 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var2) /* is_empty on <var2:Array[MParameter]>*/;
6789 var4 = !var3;
6790 if (var4){
6791 if (varonce) {
6792 var5 = varonce;
6793 } else {
6794 var6 = "(";
6795 var7 = 1;
6796 var8 = string__NativeString__to_s_with_length(var6, var7);
6797 var5 = var8;
6798 varonce = var5;
6799 }
6800 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var5) /* append on <var_b:Buffer>*/;
6801 var9 = NEW_range__Range(&type_range__Rangekernel__Int);
6802 var10 = 0;
6803 var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6804 var12 = ((long (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__length]))(var11) /* length on <var11:Array[MParameter]>*/;
6805 var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
6806 var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
6807 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
6808 var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
6809 for(;;) {
6810 var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
6811 if(!var16) break;
6812 var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
6813 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
6814 var_i = var18;
6815 var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6816 var20 = ((val* (*)(val*, long))(var19->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var19, var_i) /* [] on <var19:Array[MParameter]>*/;
6817 var_mparameter = var20;
6818 var21 = 0;
6819 { /* Inline kernel#Int#> (var_i,var21) */
6820 /* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
6821 /* <var21:Int> isa OTHER */
6822 var24 = 1; /* easy <var21:Int> isa OTHER*/
6823 if (!var24) {
6824 var_class_name = type_kernel__Int.name;
6825 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6826 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
6827 show_backtrace(1);
6828 }
6829 var25 = var_i > var21;
6830 var22 = var25;
6831 goto RET_LABEL23;
6832 RET_LABEL23:(void)0;
6833 }
6834 if (var22){
6835 if (varonce26) {
6836 var27 = varonce26;
6837 } else {
6838 var28 = ", ";
6839 var29 = 2;
6840 var30 = string__NativeString__to_s_with_length(var28, var29);
6841 var27 = var30;
6842 varonce26 = var27;
6843 }
6844 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var27) /* append on <var_b:Buffer>*/;
6845 } else {
6846 }
6847 var31 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__name]))(var_mparameter) /* name on <var_mparameter:MParameter>*/;
6848 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var31) /* append on <var_b:Buffer>*/;
6849 if (varonce32) {
6850 var33 = varonce32;
6851 } else {
6852 var34 = ": ";
6853 var35 = 2;
6854 var36 = string__NativeString__to_s_with_length(var34, var35);
6855 var33 = var36;
6856 varonce32 = var33;
6857 }
6858 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var33) /* append on <var_b:Buffer>*/;
6859 var37 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__mtype]))(var_mparameter) /* mtype on <var_mparameter:MParameter>*/;
6860 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:MType>*/;
6861 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var38) /* append on <var_b:Buffer>*/;
6862 var39 = ((short int (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_mparameter) /* is_vararg on <var_mparameter:MParameter>*/;
6863 if (var39){
6864 if (varonce40) {
6865 var41 = varonce40;
6866 } else {
6867 var42 = "...";
6868 var43 = 3;
6869 var44 = string__NativeString__to_s_with_length(var42, var43);
6870 var41 = var44;
6871 varonce40 = var41;
6872 }
6873 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var41) /* append on <var_b:Buffer>*/;
6874 } else {
6875 }
6876 CONTINUE_label: (void)0;
6877 ((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
6878 }
6879 BREAK_label: (void)0;
6880 if (varonce45) {
6881 var46 = varonce45;
6882 } else {
6883 var47 = ")";
6884 var48 = 1;
6885 var49 = string__NativeString__to_s_with_length(var47, var48);
6886 var46 = var49;
6887 varonce45 = var46;
6888 }
6889 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var46) /* append on <var_b:Buffer>*/;
6890 } else {
6891 }
6892 var50 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6893 var_ret = var50;
6894 var51 = NULL;
6895 if (var_ret == NULL) {
6896 var52 = 0; /* is null */
6897 } else {
6898 var52 = 1; /* arg is null and recv is not */
6899 }
6900 if (var52){
6901 if (varonce53) {
6902 var54 = varonce53;
6903 } else {
6904 var55 = ": ";
6905 var56 = 2;
6906 var57 = string__NativeString__to_s_with_length(var55, var56);
6907 var54 = var57;
6908 varonce53 = var54;
6909 }
6910 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var54) /* append on <var_b:Buffer>*/;
6911 var58 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
6912 ((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var58) /* append on <var_b:Buffer>*/;
6913 } else {
6914 }
6915 var59 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
6916 var = var59;
6917 goto RET_LABEL;
6918 RET_LABEL:;
6919 return var;
6920 }
6921 /* method model#MSignature#to_s for (self: Object): String */
6922 val* VIRTUAL_model__MSignature__to_s(val* self) {
6923 val* var /* : String */;
6924 val* var1 /* : String */;
6925 var1 = model__MSignature__to_s(self);
6926 var = var1;
6927 RET_LABEL:;
6928 return var;
6929 }
6930 /* method model#MSignature#resolve_for for (self: MSignature, MType, nullable MClassType, MModule, Bool): MSignature */
6931 val* model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6932 val* var /* : MSignature */;
6933 val* var_mtype /* var mtype: MType */;
6934 val* var_anchor /* var anchor: nullable MClassType */;
6935 val* var_mmodule /* var mmodule: MModule */;
6936 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
6937 val* var1 /* : Array[MParameter] */;
6938 val* var_params /* var params: Array[MParameter] */;
6939 val* var2 /* : Array[MParameter] */;
6940 val* var3 /* : Iterator[nullable Object] */;
6941 short int var4 /* : Bool */;
6942 val* var5 /* : nullable Object */;
6943 val* var_p /* var p: MParameter */;
6944 val* var6 /* : MParameter */;
6945 val* var7 /* : nullable MType */;
6946 val* var_ret /* var ret: nullable MType */;
6947 val* var8 /* : null */;
6948 short int var9 /* : Bool */;
6949 val* var10 /* : MType */;
6950 val* var11 /* : MSignature */;
6951 val* var_res /* var res: MSignature */;
6952 var_mtype = p0;
6953 var_anchor = p1;
6954 var_mmodule = p2;
6955 var_cleanup_virtual = p3;
6956 var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
6957 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[MParameter]>*/;
6958 var_params = var1;
6959 var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
6960 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MParameter]>*/;
6961 for(;;) {
6962 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
6963 if(!var4) break;
6964 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
6965 var_p = var5;
6966 var6 = ((val* (*)(val*, val*, val*, val*, short int))(var_p->class->vft[COLOR_model__MParameter__resolve_for]))(var_p, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_p:MParameter>*/;
6967 ((void (*)(val*, val*))(var_params->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_params, var6) /* add on <var_params:Array[MParameter]>*/;
6968 CONTINUE_label: (void)0;
6969 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
6970 }
6971 BREAK_label: (void)0;
6972 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
6973 var_ret = var7;
6974 var8 = NULL;
6975 if (var_ret == NULL) {
6976 var9 = 0; /* is null */
6977 } else {
6978 var9 = 1; /* arg is null and recv is not */
6979 }
6980 if (var9){
6981 var10 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_ret:nullable MType(MType)>*/;
6982 var_ret = var10;
6983 } else {
6984 }
6985 var11 = NEW_model__MSignature(&type_model__MSignature);
6986 ((void (*)(val*, val*, val*))(var11->class->vft[COLOR_model__MSignature__init]))(var11, var_params, var_ret) /* init on <var11:MSignature>*/;
6987 var_res = var11;
6988 var = var_res;
6989 goto RET_LABEL;
6990 RET_LABEL:;
6991 return var;
6992 }
6993 /* method model#MSignature#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
6994 val* VIRTUAL_model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
6995 val* var /* : MType */;
6996 val* var1 /* : MSignature */;
6997 var1 = model__MSignature__resolve_for(self, p0, p1, p2, p3);
6998 var = var1;
6999 RET_LABEL:;
7000 return var;
7001 }
7002 /* method model#MParameter#name for (self: MParameter): String */
7003 val* model__MParameter__name(val* self) {
7004 val* var /* : String */;
7005 val* var1 /* : String */;
7006 var1 = self->attrs[COLOR_model__MParameter___64dname].val; /* @name on <self:MParameter> */
7007 if (var1 == NULL) {
7008 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
7009 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1455);
7010 show_backtrace(1);
7011 }
7012 var = var1;
7013 RET_LABEL:;
7014 return var;
7015 }
7016 /* method model#MParameter#name for (self: Object): String */
7017 val* VIRTUAL_model__MParameter__name(val* self) {
7018 val* var /* : String */;
7019 val* var1 /* : String */;
7020 var1 = model__MParameter__name(self);
7021 var = var1;
7022 RET_LABEL:;
7023 return var;
7024 }
7025 /* method model#MParameter#name= for (self: MParameter, String) */
7026 void model__MParameter__name_61d(val* self, val* p0) {
7027 self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
7028 RET_LABEL:;
7029 }
7030 /* method model#MParameter#name= for (self: Object, String) */
7031 void VIRTUAL_model__MParameter__name_61d(val* self, val* p0) {
7032 model__MParameter__name_61d(self, p0);
7033 RET_LABEL:;
7034 }
7035 /* method model#MParameter#mtype for (self: MParameter): MType */
7036 val* model__MParameter__mtype(val* self) {
7037 val* var /* : MType */;
7038 val* var1 /* : MType */;
7039 var1 = self->attrs[COLOR_model__MParameter___64dmtype].val; /* @mtype on <self:MParameter> */
7040 if (var1 == NULL) {
7041 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
7042 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1458);
7043 show_backtrace(1);
7044 }
7045 var = var1;
7046 RET_LABEL:;
7047 return var;
7048 }
7049 /* method model#MParameter#mtype for (self: Object): MType */
7050 val* VIRTUAL_model__MParameter__mtype(val* self) {
7051 val* var /* : MType */;
7052 val* var1 /* : MType */;
7053 var1 = model__MParameter__mtype(self);
7054 var = var1;
7055 RET_LABEL:;
7056 return var;
7057 }
7058 /* method model#MParameter#mtype= for (self: MParameter, MType) */
7059 void model__MParameter__mtype_61d(val* self, val* p0) {
7060 self->attrs[COLOR_model__MParameter___64dmtype].val = p0; /* @mtype on <self:MParameter> */
7061 RET_LABEL:;
7062 }
7063 /* method model#MParameter#mtype= for (self: Object, MType) */
7064 void VIRTUAL_model__MParameter__mtype_61d(val* self, val* p0) {
7065 model__MParameter__mtype_61d(self, p0);
7066 RET_LABEL:;
7067 }
7068 /* method model#MParameter#is_vararg for (self: MParameter): Bool */
7069 short int model__MParameter__is_vararg(val* self) {
7070 short int var /* : Bool */;
7071 short int var1 /* : Bool */;
7072 var1 = self->attrs[COLOR_model__MParameter___64dis_vararg].s; /* @is_vararg on <self:MParameter> */
7073 var = var1;
7074 RET_LABEL:;
7075 return var;
7076 }
7077 /* method model#MParameter#is_vararg for (self: Object): Bool */
7078 short int VIRTUAL_model__MParameter__is_vararg(val* self) {
7079 short int var /* : Bool */;
7080 short int var1 /* : Bool */;
7081 var1 = model__MParameter__is_vararg(self);
7082 var = var1;
7083 RET_LABEL:;
7084 return var;
7085 }
7086 /* method model#MParameter#is_vararg= for (self: MParameter, Bool) */
7087 void model__MParameter__is_vararg_61d(val* self, short int p0) {
7088 self->attrs[COLOR_model__MParameter___64dis_vararg].s = p0; /* @is_vararg on <self:MParameter> */
7089 RET_LABEL:;
7090 }
7091 /* method model#MParameter#is_vararg= for (self: Object, Bool) */
7092 void VIRTUAL_model__MParameter__is_vararg_61d(val* self, short int p0) {
7093 model__MParameter__is_vararg_61d(self, p0);
7094 RET_LABEL:;
7095 }
7096 /* method model#MParameter#resolve_for for (self: MParameter, MType, nullable MClassType, MModule, Bool): MParameter */
7097 val* model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
7098 val* var /* : MParameter */;
7099 val* var_mtype /* var mtype: MType */;
7100 val* var_anchor /* var anchor: nullable MClassType */;
7101 val* var_mmodule /* var mmodule: MModule */;
7102 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
7103 val* var1 /* : MType */;
7104 short int var2 /* : Bool */;
7105 short int var3 /* : Bool */;
7106 val* var4 /* : MType */;
7107 val* var5 /* : MType */;
7108 val* var_newtype /* var newtype: MType */;
7109 val* var6 /* : MParameter */;
7110 val* var7 /* : String */;
7111 short int var8 /* : Bool */;
7112 val* var_res /* var res: MParameter */;
7113 var_mtype = p0;
7114 var_anchor = p1;
7115 var_mmodule = p2;
7116 var_cleanup_virtual = p3;
7117 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
7118 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
7119 var3 = !var2;
7120 if (var3){
7121 var = self;
7122 goto RET_LABEL;
7123 } else {
7124 }
7125 var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
7126 var5 = ((val* (*)(val*, val*, val*, val*, short int))(var4->class->vft[COLOR_model__MType__resolve_for]))(var4, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var4:MType>*/;
7127 var_newtype = var5;
7128 var6 = NEW_model__MParameter(&type_model__MParameter);
7129 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__name]))(self) /* name on <self:MParameter>*/;
7130 var8 = ((short int (*)(val*))(self->class->vft[COLOR_model__MParameter__is_vararg]))(self) /* is_vararg on <self:MParameter>*/;
7131 ((void (*)(val*, val*, val*, short int))(var6->class->vft[COLOR_model__MParameter__init]))(var6, var7, var_newtype, var8) /* init on <var6:MParameter>*/;
7132 var_res = var6;
7133 var = var_res;
7134 goto RET_LABEL;
7135 RET_LABEL:;
7136 return var;
7137 }
7138 /* method model#MParameter#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MParameter */
7139 val* VIRTUAL_model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
7140 val* var /* : MParameter */;
7141 val* var1 /* : MParameter */;
7142 var1 = model__MParameter__resolve_for(self, p0, p1, p2, p3);
7143 var = var1;
7144 RET_LABEL:;
7145 return var;
7146 }
7147 /* method model#MParameter#init for (self: MParameter, String, MType, Bool) */
7148 void model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
7149 self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
7150 self->attrs[COLOR_model__MParameter___64dmtype].val = p1; /* @mtype on <self:MParameter> */
7151 self->attrs[COLOR_model__MParameter___64dis_vararg].s = p2; /* @is_vararg on <self:MParameter> */
7152 RET_LABEL:;
7153 }
7154 /* method model#MParameter#init for (self: Object, String, MType, Bool) */
7155 void VIRTUAL_model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
7156 model__MParameter__init(self, p0, p1, p2);
7157 RET_LABEL:;
7158 }
7159 /* method model#MProperty#intro_mclassdef for (self: MProperty): MClassDef */
7160 val* model__MProperty__intro_mclassdef(val* self) {
7161 val* var /* : MClassDef */;
7162 val* var1 /* : MClassDef */;
7163 var1 = self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val; /* @intro_mclassdef on <self:MProperty> */
7164 if (var1 == NULL) {
7165 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclassdef");
7166 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1489);
7167 show_backtrace(1);
7168 }
7169 var = var1;
7170 RET_LABEL:;
7171 return var;
7172 }
7173 /* method model#MProperty#intro_mclassdef for (self: Object): MClassDef */
7174 val* VIRTUAL_model__MProperty__intro_mclassdef(val* self) {
7175 val* var /* : MClassDef */;
7176 val* var1 /* : MClassDef */;
7177 var1 = model__MProperty__intro_mclassdef(self);
7178 var = var1;
7179 RET_LABEL:;
7180 return var;
7181 }
7182 /* method model#MProperty#intro_mclassdef= for (self: MProperty, MClassDef) */
7183 void model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
7184 self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val = p0; /* @intro_mclassdef on <self:MProperty> */
7185 RET_LABEL:;
7186 }
7187 /* method model#MProperty#intro_mclassdef= for (self: Object, MClassDef) */
7188 void VIRTUAL_model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
7189 model__MProperty__intro_mclassdef_61d(self, p0);
7190 RET_LABEL:;
7191 }
7192 /* method model#MProperty#name for (self: MProperty): String */
7193 val* model__MProperty__name(val* self) {
7194 val* var /* : String */;
7195 val* var1 /* : String */;
7196 var1 = self->attrs[COLOR_model__MProperty___64dname].val; /* @name on <self:MProperty> */
7197 if (var1 == NULL) {
7198 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
7199 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1494);
7200 show_backtrace(1);
7201 }
7202 var = var1;
7203 RET_LABEL:;
7204 return var;
7205 }
7206 /* method model#MProperty#name for (self: Object): String */
7207 val* VIRTUAL_model__MProperty__name(val* self) {
7208 val* var /* : String */;
7209 val* var1 /* : String */;
7210 var1 = model__MProperty__name(self);
7211 var = var1;
7212 RET_LABEL:;
7213 return var;
7214 }
7215 /* method model#MProperty#name= for (self: MProperty, String) */
7216 void model__MProperty__name_61d(val* self, val* p0) {
7217 self->attrs[COLOR_model__MProperty___64dname].val = p0; /* @name on <self:MProperty> */
7218 RET_LABEL:;
7219 }
7220 /* method model#MProperty#name= for (self: Object, String) */
7221 void VIRTUAL_model__MProperty__name_61d(val* self, val* p0) {
7222 model__MProperty__name_61d(self, p0);
7223 RET_LABEL:;
7224 }
7225 /* method model#MProperty#full_name for (self: MProperty): String */
7226 val* model__MProperty__full_name(val* self) {
7227 val* var /* : String */;
7228 val* var1 /* : Array[Object] */;
7229 long var2 /* : Int */;
7230 val* var_ /* var : Array[Object] */;
7231 static val* varonce;
7232 val* var3 /* : String */;
7233 char* var4 /* : NativeString */;
7234 long var5 /* : Int */;
7235 val* var6 /* : String */;
7236 val* var7 /* : MClassDef */;
7237 val* var8 /* : MModule */;
7238 val* var9 /* : String */;
7239 static val* varonce10;
7240 val* var11 /* : String */;
7241 char* var12 /* : NativeString */;
7242 long var13 /* : Int */;
7243 val* var14 /* : String */;
7244 val* var15 /* : MClassDef */;
7245 val* var16 /* : MClass */;
7246 val* var17 /* : String */;
7247 static val* varonce18;
7248 val* var19 /* : String */;
7249 char* var20 /* : NativeString */;
7250 long var21 /* : Int */;
7251 val* var22 /* : String */;
7252 val* var23 /* : String */;
7253 static val* varonce24;
7254 val* var25 /* : String */;
7255 char* var26 /* : NativeString */;
7256 long var27 /* : Int */;
7257 val* var28 /* : String */;
7258 val* var29 /* : String */;
7259 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
7260 var2 = 7;
7261 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
7262 var_ = var1;
7263 if (varonce) {
7264 var3 = varonce;
7265 } else {
7266 var4 = "";
7267 var5 = 0;
7268 var6 = string__NativeString__to_s_with_length(var4, var5);
7269 var3 = var6;
7270 varonce = var3;
7271 }
7272 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
7273 var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
7274 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__mmodule]))(var7) /* mmodule on <var7:MClassDef>*/;
7275 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_mmodule__MModule__full_name]))(var8) /* full_name on <var8:MModule>*/;
7276 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
7277 if (varonce10) {
7278 var11 = varonce10;
7279 } else {
7280 var12 = "::";
7281 var13 = 2;
7282 var14 = string__NativeString__to_s_with_length(var12, var13);
7283 var11 = var14;
7284 varonce10 = var11;
7285 }
7286 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
7287 var15 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
7288 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mclass]))(var15) /* mclass on <var15:MClassDef>*/;
7289 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClass__name]))(var16) /* name on <var16:MClass>*/;
7290 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
7291 if (varonce18) {
7292 var19 = varonce18;
7293 } else {
7294 var20 = "::";
7295 var21 = 2;
7296 var22 = string__NativeString__to_s_with_length(var20, var21);
7297 var19 = var22;
7298 varonce18 = var19;
7299 }
7300 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
7301 var23 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
7302 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
7303 if (varonce24) {
7304 var25 = varonce24;
7305 } else {
7306 var26 = "";
7307 var27 = 0;
7308 var28 = string__NativeString__to_s_with_length(var26, var27);
7309 var25 = var28;
7310 varonce24 = var25;
7311 }
7312 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var25) /* add on <var_:Array[Object]>*/;
7313 var29 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
7314 var = var29;
7315 goto RET_LABEL;
7316 RET_LABEL:;
7317 return var;
7318 }
7319 /* method model#MProperty#full_name for (self: Object): String */
7320 val* VIRTUAL_model__MProperty__full_name(val* self) {
7321 val* var /* : String */;
7322 val* var1 /* : String */;
7323 var1 = model__MProperty__full_name(self);
7324 var = var1;
7325 RET_LABEL:;
7326 return var;
7327 }
7328 /* method model#MProperty#visibility for (self: MProperty): MVisibility */
7329 val* model__MProperty__visibility(val* self) {
7330 val* var /* : MVisibility */;
7331 val* var1 /* : MVisibility */;
7332 var1 = self->attrs[COLOR_model__MProperty___64dvisibility].val; /* @visibility on <self:MProperty> */
7333 if (var1 == NULL) {
7334 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
7335 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1504);
7336 show_backtrace(1);
7337 }
7338 var = var1;
7339 RET_LABEL:;
7340 return var;
7341 }
7342 /* method model#MProperty#visibility for (self: Object): MVisibility */
7343 val* VIRTUAL_model__MProperty__visibility(val* self) {
7344 val* var /* : MVisibility */;
7345 val* var1 /* : MVisibility */;
7346 var1 = model__MProperty__visibility(self);
7347 var = var1;
7348 RET_LABEL:;
7349 return var;
7350 }
7351 /* method model#MProperty#visibility= for (self: MProperty, MVisibility) */
7352 void model__MProperty__visibility_61d(val* self, val* p0) {
7353 self->attrs[COLOR_model__MProperty___64dvisibility].val = p0; /* @visibility on <self:MProperty> */
7354 RET_LABEL:;
7355 }
7356 /* method model#MProperty#visibility= for (self: Object, MVisibility) */
7357 void VIRTUAL_model__MProperty__visibility_61d(val* self, val* p0) {
7358 model__MProperty__visibility_61d(self, p0);
7359 RET_LABEL:;
7360 }
7361 /* method model#MProperty#init for (self: MProperty, MClassDef, String, MVisibility) */
7362 void model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
7363 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
7364 val* var_name /* var name: String */;
7365 val* var_visibility /* var visibility: MVisibility */;
7366 val* var /* : Array[MProperty] */;
7367 val* var1 /* : MModule */;
7368 val* var2 /* : Model */;
7369 val* var_model /* var model: Model */;
7370 val* var3 /* : MultiHashMap[String, MProperty] */;
7371 val* var4 /* : Array[MProperty] */;
7372 var_intro_mclassdef = p0;
7373 var_name = p1;
7374 var_visibility = p2;
7375 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef_61d]))(self, var_intro_mclassdef) /* intro_mclassdef= on <self:MProperty>*/;
7376 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__name_61d]))(self, var_name) /* name= on <self:MProperty>*/;
7377 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__visibility_61d]))(self, var_visibility) /* visibility= on <self:MProperty>*/;
7378 var = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__intro_mproperties]))(var_intro_mclassdef) /* intro_mproperties on <var_intro_mclassdef:MClassDef>*/;
7379 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MProperty]>*/;
7380 var1 = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intro_mclassdef) /* mmodule on <var_intro_mclassdef:MClassDef>*/;
7381 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_mmodule__MModule__model]))(var1) /* model on <var1:MModule>*/;
7382 var_model = var2;
7383 var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties_by_name]))(var_model) /* mproperties_by_name on <var_model:Model>*/;
7384 ((void (*)(val*, val*, val*))(var3->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var3, var_name, self) /* add_one on <var3:MultiHashMap[String, MProperty]>*/;
7385 var4 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties]))(var_model) /* mproperties on <var_model:Model>*/;
7386 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, self) /* add on <var4:Array[MProperty]>*/;
7387 RET_LABEL:;
7388 }
7389 /* method model#MProperty#init for (self: Object, MClassDef, String, MVisibility) */
7390 void VIRTUAL_model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
7391 model__MProperty__init(self, p0, p1, p2);
7392 RET_LABEL:;
7393 }
7394 /* method model#MProperty#mpropdefs for (self: MProperty): Array[MPropDef] */
7395 val* model__MProperty__mpropdefs(val* self) {
7396 val* var /* : Array[MPropDef] */;
7397 val* var1 /* : Array[MPropDef] */;
7398 var1 = self->attrs[COLOR_model__MProperty___64dmpropdefs].val; /* @mpropdefs on <self:MProperty> */
7399 if (var1 == NULL) {
7400 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
7401 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
7402 show_backtrace(1);
7403 }
7404 var = var1;
7405 RET_LABEL:;
7406 return var;
7407 }
7408 /* method model#MProperty#mpropdefs for (self: Object): Array[MPropDef] */
7409 val* VIRTUAL_model__MProperty__mpropdefs(val* self) {
7410 val* var /* : Array[MPropDef] */;
7411 val* var1 /* : Array[MPropDef] */;
7412 var1 = model__MProperty__mpropdefs(self);
7413 var = var1;
7414 RET_LABEL:;
7415 return var;
7416 }
7417 /* method model#MProperty#mpropdefs= for (self: MProperty, Array[MPropDef]) */
7418 void model__MProperty__mpropdefs_61d(val* self, val* p0) {
7419 short int var /* : Bool */;
7420 int cltype;
7421 int idtype;
7422 const struct type* type_struct;
7423 const char* var_class_name;
7424 /* Covariant cast for argument 0 (mpropdefs) <p0:Array[MPropDef]> isa Array[MPROPDEF] */
7425 /* <p0:Array[MPropDef]> isa Array[MPROPDEF] */
7426 type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
7427 cltype = type_struct->color;
7428 idtype = type_struct->id;
7429 if(cltype >= p0->type->table_size) {
7430 var = 0;
7431 } else {
7432 var = p0->type->type_table[cltype] == idtype;
7433 }
7434 if (!var) {
7435 var_class_name = p0 == NULL ? "null" : p0->type->name;
7436 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
7437 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
7438 show_backtrace(1);
7439 }
7440 self->attrs[COLOR_model__MProperty___64dmpropdefs].val = p0; /* @mpropdefs on <self:MProperty> */
7441 RET_LABEL:;
7442 }
7443 /* method model#MProperty#mpropdefs= for (self: Object, Array[MPropDef]) */
7444 void VIRTUAL_model__MProperty__mpropdefs_61d(val* self, val* p0) {
7445 model__MProperty__mpropdefs_61d(self, p0);
7446 RET_LABEL:;
7447 }
7448 /* method model#MProperty#intro for (self: MProperty): MPropDef */
7449 val* model__MProperty__intro(val* self) {
7450 val* var /* : MPropDef */;
7451 val* var1 /* : Array[MPropDef] */;
7452 val* var2 /* : nullable Object */;
7453 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
7454 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__first]))(var1) /* first on <var1:Array[MPropDef]>*/;
7455 var = var2;
7456 goto RET_LABEL;
7457 RET_LABEL:;
7458 return var;
7459 }
7460 /* method model#MProperty#intro for (self: Object): MPropDef */
7461 val* VIRTUAL_model__MProperty__intro(val* self) {
7462 val* var /* : MPropDef */;
7463 val* var1 /* : MPropDef */;
7464 var1 = model__MProperty__intro(self);
7465 var = var1;
7466 RET_LABEL:;
7467 return var;
7468 }
7469 /* method model#MProperty#to_s for (self: MProperty): String */
7470 val* model__MProperty__to_s(val* self) {
7471 val* var /* : String */;
7472 val* var1 /* : String */;
7473 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
7474 var = var1;
7475 goto RET_LABEL;
7476 RET_LABEL:;
7477 return var;
7478 }
7479 /* method model#MProperty#to_s for (self: Object): String */
7480 val* VIRTUAL_model__MProperty__to_s(val* self) {
7481 val* var /* : String */;
7482 val* var1 /* : String */;
7483 var1 = model__MProperty__to_s(self);
7484 var = var1;
7485 RET_LABEL:;
7486 return var;
7487 }
7488 /* method model#MProperty#lookup_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
7489 val* model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
7490 val* var /* : Array[MPropDef] */;
7491 val* var_mmodule /* var mmodule: MModule */;
7492 val* var_mtype /* var mtype: MType */;
7493 short int var1 /* : Bool */;
7494 short int var2 /* : Bool */;
7495 short int var3 /* : Bool */;
7496 int cltype;
7497 int idtype;
7498 val* var4 /* : MType */;
7499 val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7500 val* var6 /* : nullable Object */;
7501 val* var_cache /* var cache: nullable Array[MPropDef] */;
7502 val* var7 /* : null */;
7503 short int var8 /* : Bool */;
7504 val* var9 /* : Array[MPropDef] */;
7505 val* var_candidates /* var candidates: Array[MPropDef] */;
7506 val* var10 /* : Array[MPropDef] */;
7507 val* var11 /* : Iterator[nullable Object] */;
7508 short int var12 /* : Bool */;
7509 val* var13 /* : nullable Object */;
7510 val* var_mpropdef /* var mpropdef: MPropDef */;
7511 val* var14 /* : POSetElement[MModule] */;
7512 val* var15 /* : MClassDef */;
7513 val* var16 /* : MModule */;
7514 short int var17 /* : Bool */;
7515 short int var18 /* : Bool */;
7516 val* var19 /* : null */;
7517 val* var20 /* : MClassDef */;
7518 val* var21 /* : MClassType */;
7519 short int var22 /* : Bool */;
7520 short int var23 /* : Bool */;
7521 long var24 /* : Int */;
7522 long var25 /* : Int */;
7523 short int var26 /* : Bool */;
7524 short int var28 /* : Bool */;
7525 int cltype29;
7526 int idtype30;
7527 const char* var_class_name;
7528 short int var31 /* : Bool */;
7529 val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7530 val* var33 /* : Array[MPropDef] */;
7531 val* var_res /* var res: Array[MPropDef] */;
7532 val* var34 /* : Iterator[nullable Object] */;
7533 short int var35 /* : Bool */;
7534 val* var36 /* : nullable Object */;
7535 val* var_pd1 /* var pd1: MPropDef */;
7536 val* var37 /* : MClassDef */;
7537 val* var_cd1 /* var cd1: MClassDef */;
7538 val* var38 /* : MClass */;
7539 val* var_c1 /* var c1: MClass */;
7540 short int var39 /* : Bool */;
7541 short int var_keep /* var keep: Bool */;
7542 val* var40 /* : Iterator[nullable Object] */;
7543 short int var41 /* : Bool */;
7544 val* var42 /* : nullable Object */;
7545 val* var_pd2 /* var pd2: MPropDef */;
7546 short int var43 /* : Bool */;
7547 val* var45 /* : MClassDef */;
7548 val* var_cd2 /* var cd2: MClassDef */;
7549 val* var46 /* : MClass */;
7550 val* var_c2 /* var c2: MClass */;
7551 val* var47 /* : MClassType */;
7552 val* var48 /* : MClassType */;
7553 short int var49 /* : Bool */;
7554 val* var50 /* : MModule */;
7555 val* var51 /* : POSetElement[MModule] */;
7556 val* var52 /* : MModule */;
7557 short int var53 /* : Bool */;
7558 short int var54 /* : Bool */;
7559 val* var55 /* : MClassType */;
7560 val* var56 /* : null */;
7561 val* var57 /* : MClassType */;
7562 short int var58 /* : Bool */;
7563 short int var59 /* : Bool */;
7564 short int var61 /* : Bool */;
7565 static val* varonce;
7566 val* var62 /* : String */;
7567 char* var63 /* : NativeString */;
7568 long var64 /* : Int */;
7569 val* var65 /* : String */;
7570 static val* varonce66;
7571 val* var67 /* : String */;
7572 char* var68 /* : NativeString */;
7573 long var69 /* : Int */;
7574 val* var70 /* : String */;
7575 val* var71 /* : String */;
7576 val* var72 /* : Array[Object] */;
7577 long var73 /* : Int */;
7578 val* var74 /* : NativeArray[Object] */;
7579 val* var75 /* : String */;
7580 val* var76 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7581 var_mmodule = p0;
7582 var_mtype = p1;
7583 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7584 var2 = !var1;
7585 if (!var2) {
7586 fprintf(stderr, "Runtime error: %s", "Assert failed");
7587 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1540);
7588 show_backtrace(1);
7589 }
7590 /* <var_mtype:MType> isa MNullableType */
7591 cltype = type_model__MNullableType.color;
7592 idtype = type_model__MNullableType.id;
7593 if(cltype >= var_mtype->type->table_size) {
7594 var3 = 0;
7595 } else {
7596 var3 = var_mtype->type->type_table[cltype] == idtype;
7597 }
7598 if (var3){
7599 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
7600 var_mtype = var4;
7601 } else {
7602 }
7603 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7604 var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7605 var_cache = var6;
7606 var7 = NULL;
7607 if (var_cache == NULL) {
7608 var8 = 0; /* is null */
7609 } else {
7610 var8 = 1; /* arg is null and recv is not */
7611 }
7612 if (var8){
7613 var = var_cache;
7614 goto RET_LABEL;
7615 } else {
7616 }
7617 var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
7618 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
7619 var_candidates = var9;
7620 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
7621 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
7622 for(;;) {
7623 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
7624 if(!var12) break;
7625 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
7626 var_mpropdef = var13;
7627 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
7628 var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7629 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
7630 var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
7631 var18 = !var17;
7632 if (var18){
7633 goto CONTINUE_label;
7634 } else {
7635 }
7636 var19 = NULL;
7637 var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7638 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
7639 var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
7640 var23 = !var22;
7641 if (var23){
7642 goto CONTINUE_label;
7643 } else {
7644 }
7645 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
7646 CONTINUE_label: (void)0;
7647 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
7648 }
7649 BREAK_label: (void)0;
7650 var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
7651 var25 = 1;
7652 { /* Inline kernel#Int#<= (var24,var25) */
7653 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
7654 /* <var25:Int> isa OTHER */
7655 var28 = 1; /* easy <var25:Int> isa OTHER*/
7656 if (!var28) {
7657 var_class_name = type_kernel__Int.name;
7658 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7659 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
7660 show_backtrace(1);
7661 }
7662 var31 = var24 <= var25;
7663 var26 = var31;
7664 goto RET_LABEL27;
7665 RET_LABEL27:(void)0;
7666 }
7667 if (var26){
7668 var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7669 ((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7670 var = var_candidates;
7671 goto RET_LABEL;
7672 } else {
7673 }
7674 var33 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
7675 ((void (*)(val*))(var33->class->vft[COLOR_array__Array__init]))(var33) /* init on <var33:Array[MPropDef]>*/;
7676 var_res = var33;
7677 var34 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
7678 for(;;) {
7679 var35 = ((short int (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var34) /* is_ok on <var34:Iterator[nullable Object]>*/;
7680 if(!var35) break;
7681 var36 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__item]))(var34) /* item on <var34:Iterator[nullable Object]>*/;
7682 var_pd1 = var36;
7683 var37 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
7684 var_cd1 = var37;
7685 var38 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
7686 var_c1 = var38;
7687 var39 = 1;
7688 var_keep = var39;
7689 var40 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
7690 for(;;) {
7691 var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
7692 if(!var41) break;
7693 var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
7694 var_pd2 = var42;
7695 var43 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
7696 if (var43){
7697 goto CONTINUE_label44;
7698 } else {
7699 }
7700 var45 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
7701 var_cd2 = var45;
7702 var46 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
7703 var_c2 = var46;
7704 var47 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
7705 var48 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
7706 var49 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_kernel__Object___61d_61d]))(var47, var48) /* == on <var47:MClassType>*/;
7707 if (var49){
7708 var50 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
7709 var51 = ((val* (*)(val*))(var50->class->vft[COLOR_mmodule__MModule__in_importation]))(var50) /* in_importation on <var50:MModule>*/;
7710 var52 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
7711 var53 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_poset__POSetElement___60d_61d]))(var51, var52) /* <= on <var51:POSetElement[MModule]>*/;
7712 if (var53){
7713 var54 = 0;
7714 var_keep = var54;
7715 goto BREAK_label44;
7716 } else {
7717 }
7718 } else {
7719 var55 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
7720 var56 = NULL;
7721 var57 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
7722 var58 = ((short int (*)(val*, val*, val*, val*))(var55->class->vft[COLOR_model__MType__is_subtype]))(var55, var_mmodule, var56, var57) /* is_subtype on <var55:MClassType>*/;
7723 if (var58){
7724 var59 = 0;
7725 var_keep = var59;
7726 goto BREAK_label44;
7727 } else {
7728 }
7729 }
7730 CONTINUE_label44: (void)0;
7731 ((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
7732 }
7733 BREAK_label44: (void)0;
7734 if (var_keep){
7735 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
7736 } else {
7737 }
7738 CONTINUE_label60: (void)0;
7739 ((void (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__next]))(var34) /* next on <var34:Iterator[nullable Object]>*/;
7740 }
7741 BREAK_label60: (void)0;
7742 var61 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
7743 if (var61){
7744 if (varonce) {
7745 var62 = varonce;
7746 } else {
7747 var63 = "All lost! ";
7748 var64 = 10;
7749 var65 = string__NativeString__to_s_with_length(var63, var64);
7750 var62 = var65;
7751 varonce = var62;
7752 }
7753 if (varonce66) {
7754 var67 = varonce66;
7755 } else {
7756 var68 = ", ";
7757 var69 = 2;
7758 var70 = string__NativeString__to_s_with_length(var68, var69);
7759 var67 = var70;
7760 varonce66 = var67;
7761 }
7762 var71 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var67) /* join on <var_candidates:Array[MPropDef]>*/;
7763 var72 = NEW_array__Array(&type_array__Arraykernel__Object);
7764 { /* var72 = array_instance Array[Object] */
7765 var73 = 2;
7766 var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
7767 ((struct instance_array__NativeArray*)var74)->values[0] = (val*) var62;
7768 ((struct instance_array__NativeArray*)var74)->values[1] = (val*) var71;
7769 ((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
7770 }
7771 var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
7772 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var75) /* print on <self:MProperty>*/;
7773 } else {
7774 }
7775 var76 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
7776 ((void (*)(val*, val*, val*, val*))(var76->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var76, var_mmodule, var_mtype, var_res) /* []= on <var76:HashMap2[MModule, MType, Array[MPropDef]]>*/;
7777 var = var_res;
7778 goto RET_LABEL;
7779 RET_LABEL:;
7780 return var;
7781 }
7782 /* method model#MProperty#lookup_definitions for (self: Object, MModule, MType): Array[MPropDef] */
7783 val* VIRTUAL_model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
7784 val* var /* : Array[MPropDef] */;
7785 val* var1 /* : Array[MPropDef] */;
7786 var1 = model__MProperty__lookup_definitions(self, p0, p1);
7787 var = var1;
7788 RET_LABEL:;
7789 return var;
7790 }
7791 /* method model#MProperty#lookup_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
7792 val* model__MProperty__lookup_definitions_cache(val* self) {
7793 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7794 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7795 var1 = self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val; /* @lookup_definitions_cache on <self:MProperty> */
7796 if (var1 == NULL) {
7797 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_definitions_cache");
7798 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
7799 show_backtrace(1);
7800 }
7801 var = var1;
7802 RET_LABEL:;
7803 return var;
7804 }
7805 /* method model#MProperty#lookup_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
7806 val* VIRTUAL_model__MProperty__lookup_definitions_cache(val* self) {
7807 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7808 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
7809 var1 = model__MProperty__lookup_definitions_cache(self);
7810 var = var1;
7811 RET_LABEL:;
7812 return var;
7813 }
7814 /* method model#MProperty#lookup_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
7815 void model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
7816 short int var /* : Bool */;
7817 int cltype;
7818 int idtype;
7819 const struct type* type_struct;
7820 const char* var_class_name;
7821 /* Covariant cast for argument 0 (lookup_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
7822 /* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
7823 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2mmodule__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
7824 cltype = type_struct->color;
7825 idtype = type_struct->id;
7826 if(cltype >= p0->type->table_size) {
7827 var = 0;
7828 } else {
7829 var = p0->type->type_table[cltype] == idtype;
7830 }
7831 if (!var) {
7832 var_class_name = p0 == NULL ? "null" : p0->type->name;
7833 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
7834 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
7835 show_backtrace(1);
7836 }
7837 self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val = p0; /* @lookup_definitions_cache on <self:MProperty> */
7838 RET_LABEL:;
7839 }
7840 /* method model#MProperty#lookup_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
7841 void VIRTUAL_model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
7842 model__MProperty__lookup_definitions_cache_61d(self, p0);
7843 RET_LABEL:;
7844 }
7845 /* method model#MProperty#lookup_super_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
7846 val* model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
7847 val* var /* : Array[MPropDef] */;
7848 val* var_mmodule /* var mmodule: MModule */;
7849 val* var_mtype /* var mtype: MType */;
7850 short int var1 /* : Bool */;
7851 short int var2 /* : Bool */;
7852 short int var3 /* : Bool */;
7853 int cltype;
7854 int idtype;
7855 val* var4 /* : MType */;
7856 val* var5 /* : Array[MPropDef] */;
7857 val* var_candidates /* var candidates: Array[MPropDef] */;
7858 val* var6 /* : Array[MPropDef] */;
7859 val* var7 /* : Iterator[nullable Object] */;
7860 short int var8 /* : Bool */;
7861 val* var9 /* : nullable Object */;
7862 val* var_mpropdef /* var mpropdef: MPropDef */;
7863 val* var10 /* : POSetElement[MModule] */;
7864 val* var11 /* : MClassDef */;
7865 val* var12 /* : MModule */;
7866 short int var13 /* : Bool */;
7867 short int var14 /* : Bool */;
7868 val* var15 /* : null */;
7869 val* var16 /* : MClassDef */;
7870 val* var17 /* : MClassType */;
7871 short int var18 /* : Bool */;
7872 short int var19 /* : Bool */;
7873 short int var20 /* : Bool */;
7874 val* var21 /* : MClassDef */;
7875 val* var22 /* : MClassType */;
7876 short int var23 /* : Bool */;
7877 short int var_ /* var : Bool */;
7878 val* var24 /* : MClassDef */;
7879 val* var25 /* : MModule */;
7880 short int var26 /* : Bool */;
7881 long var27 /* : Int */;
7882 long var28 /* : Int */;
7883 short int var29 /* : Bool */;
7884 short int var31 /* : Bool */;
7885 int cltype32;
7886 int idtype33;
7887 const char* var_class_name;
7888 short int var34 /* : Bool */;
7889 val* var35 /* : Array[MPropDef] */;
7890 val* var_res /* var res: Array[MPropDef] */;
7891 val* var36 /* : Iterator[nullable Object] */;
7892 short int var37 /* : Bool */;
7893 val* var38 /* : nullable Object */;
7894 val* var_pd1 /* var pd1: MPropDef */;
7895 val* var39 /* : MClassDef */;
7896 val* var_cd1 /* var cd1: MClassDef */;
7897 val* var40 /* : MClass */;
7898 val* var_c1 /* var c1: MClass */;
7899 short int var41 /* : Bool */;
7900 short int var_keep /* var keep: Bool */;
7901 val* var42 /* : Iterator[nullable Object] */;
7902 short int var43 /* : Bool */;
7903 val* var44 /* : nullable Object */;
7904 val* var_pd2 /* var pd2: MPropDef */;
7905 short int var45 /* : Bool */;
7906 val* var47 /* : MClassDef */;
7907 val* var_cd2 /* var cd2: MClassDef */;
7908 val* var48 /* : MClass */;
7909 val* var_c2 /* var c2: MClass */;
7910 val* var49 /* : MClassType */;
7911 val* var50 /* : MClassType */;
7912 short int var51 /* : Bool */;
7913 val* var52 /* : MModule */;
7914 val* var53 /* : POSetElement[MModule] */;
7915 val* var54 /* : MModule */;
7916 short int var55 /* : Bool */;
7917 short int var56 /* : Bool */;
7918 val* var57 /* : MClassType */;
7919 val* var58 /* : null */;
7920 val* var59 /* : MClassType */;
7921 short int var60 /* : Bool */;
7922 short int var61 /* : Bool */;
7923 short int var63 /* : Bool */;
7924 static val* varonce;
7925 val* var64 /* : String */;
7926 char* var65 /* : NativeString */;
7927 long var66 /* : Int */;
7928 val* var67 /* : String */;
7929 static val* varonce68;
7930 val* var69 /* : String */;
7931 char* var70 /* : NativeString */;
7932 long var71 /* : Int */;
7933 val* var72 /* : String */;
7934 val* var73 /* : String */;
7935 val* var74 /* : Array[Object] */;
7936 long var75 /* : Int */;
7937 val* var76 /* : NativeArray[Object] */;
7938 val* var77 /* : String */;
7939 var_mmodule = p0;
7940 var_mtype = p1;
7941 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
7942 var2 = !var1;
7943 if (!var2) {
7944 fprintf(stderr, "Runtime error: %s", "Assert failed");
7945 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1609);
7946 show_backtrace(1);
7947 }
7948 /* <var_mtype:MType> isa MNullableType */
7949 cltype = type_model__MNullableType.color;
7950 idtype = type_model__MNullableType.id;
7951 if(cltype >= var_mtype->type->table_size) {
7952 var3 = 0;
7953 } else {
7954 var3 = var_mtype->type->type_table[cltype] == idtype;
7955 }
7956 if (var3){
7957 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
7958 var_mtype = var4;
7959 } else {
7960 }
7961 var5 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
7962 ((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[MPropDef]>*/;
7963 var_candidates = var5;
7964 var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
7965 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MPropDef]>*/;
7966 for(;;) {
7967 var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
7968 if(!var8) break;
7969 var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
7970 var_mpropdef = var9;
7971 var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
7972 var11 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7973 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__mmodule]))(var11) /* mmodule on <var11:MClassDef>*/;
7974 var13 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var12) /* <= on <var10:POSetElement[MModule]>*/;
7975 var14 = !var13;
7976 if (var14){
7977 goto CONTINUE_label;
7978 } else {
7979 }
7980 var15 = NULL;
7981 var16 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7982 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
7983 var18 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var15, var17) /* is_subtype on <var_mtype:MType>*/;
7984 var19 = !var18;
7985 if (var19){
7986 goto CONTINUE_label;
7987 } else {
7988 }
7989 var21 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7990 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MClassDef__bound_mtype]))(var21) /* bound_mtype on <var21:MClassDef>*/;
7991 var23 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var22) /* == on <var_mtype:MType>*/;
7992 var_ = var23;
7993 if (var23){
7994 var24 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
7995 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__mmodule]))(var24) /* mmodule on <var24:MClassDef>*/;
7996 var26 = ((short int (*)(val*, val*))(var_mmodule->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule, var25) /* == on <var_mmodule:MModule>*/;
7997 var20 = var26;
7998 } else {
7999 var20 = var_;
8000 }
8001 if (var20){
8002 goto CONTINUE_label;
8003 } else {
8004 }
8005 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
8006 CONTINUE_label: (void)0;
8007 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
8008 }
8009 BREAK_label: (void)0;
8010 var27 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
8011 var28 = 1;
8012 { /* Inline kernel#Int#<= (var27,var28) */
8013 /* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
8014 /* <var28:Int> isa OTHER */
8015 var31 = 1; /* easy <var28:Int> isa OTHER*/
8016 if (!var31) {
8017 var_class_name = type_kernel__Int.name;
8018 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8019 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
8020 show_backtrace(1);
8021 }
8022 var34 = var27 <= var28;
8023 var29 = var34;
8024 goto RET_LABEL30;
8025 RET_LABEL30:(void)0;
8026 }
8027 if (var29){
8028 var = var_candidates;
8029 goto RET_LABEL;
8030 } else {
8031 }
8032 var35 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
8033 ((void (*)(val*))(var35->class->vft[COLOR_array__Array__init]))(var35) /* init on <var35:Array[MPropDef]>*/;
8034 var_res = var35;
8035 var36 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
8036 for(;;) {
8037 var37 = ((short int (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var36) /* is_ok on <var36:Iterator[nullable Object]>*/;
8038 if(!var37) break;
8039 var38 = ((val* (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__item]))(var36) /* item on <var36:Iterator[nullable Object]>*/;
8040 var_pd1 = var38;
8041 var39 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
8042 var_cd1 = var39;
8043 var40 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
8044 var_c1 = var40;
8045 var41 = 1;
8046 var_keep = var41;
8047 var42 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
8048 for(;;) {
8049 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
8050 if(!var43) break;
8051 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
8052 var_pd2 = var44;
8053 var45 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
8054 if (var45){
8055 goto CONTINUE_label46;
8056 } else {
8057 }
8058 var47 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
8059 var_cd2 = var47;
8060 var48 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
8061 var_c2 = var48;
8062 var49 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
8063 var50 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
8064 var51 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_kernel__Object___61d_61d]))(var49, var50) /* == on <var49:MClassType>*/;
8065 if (var51){
8066 var52 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
8067 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_mmodule__MModule__in_importation]))(var52) /* in_importation on <var52:MModule>*/;
8068 var54 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
8069 var55 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_poset__POSetElement___60d_61d]))(var53, var54) /* <= on <var53:POSetElement[MModule]>*/;
8070 if (var55){
8071 var56 = 0;
8072 var_keep = var56;
8073 goto BREAK_label46;
8074 } else {
8075 }
8076 } else {
8077 var57 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
8078 var58 = NULL;
8079 var59 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
8080 var60 = ((short int (*)(val*, val*, val*, val*))(var57->class->vft[COLOR_model__MType__is_subtype]))(var57, var_mmodule, var58, var59) /* is_subtype on <var57:MClassType>*/;
8081 if (var60){
8082 var61 = 0;
8083 var_keep = var61;
8084 goto BREAK_label46;
8085 } else {
8086 }
8087 }
8088 CONTINUE_label46: (void)0;
8089 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
8090 }
8091 BREAK_label46: (void)0;
8092 if (var_keep){
8093 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
8094 } else {
8095 }
8096 CONTINUE_label62: (void)0;
8097 ((void (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__next]))(var36) /* next on <var36:Iterator[nullable Object]>*/;
8098 }
8099 BREAK_label62: (void)0;
8100 var63 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
8101 if (var63){
8102 if (varonce) {
8103 var64 = varonce;
8104 } else {
8105 var65 = "All lost! ";
8106 var66 = 10;
8107 var67 = string__NativeString__to_s_with_length(var65, var66);
8108 var64 = var67;
8109 varonce = var64;
8110 }
8111 if (varonce68) {
8112 var69 = varonce68;
8113 } else {
8114 var70 = ", ";
8115 var71 = 2;
8116 var72 = string__NativeString__to_s_with_length(var70, var71);
8117 var69 = var72;
8118 varonce68 = var69;
8119 }
8120 var73 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var69) /* join on <var_candidates:Array[MPropDef]>*/;
8121 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
8122 { /* var74 = array_instance Array[Object] */
8123 var75 = 2;
8124 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
8125 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var64;
8126 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var73;
8127 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
8128 }
8129 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
8130 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var77) /* print on <self:MProperty>*/;
8131 } else {
8132 }
8133 var = var_res;
8134 goto RET_LABEL;
8135 RET_LABEL:;
8136 return var;
8137 }
8138 /* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
8139 val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
8140 val* var /* : Array[MPropDef] */;
8141 val* var1 /* : Array[MPropDef] */;
8142 var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
8143 var = var1;
8144 RET_LABEL:;
8145 return var;
8146 }
8147 /* method model#MProperty#lookup_first_definition for (self: MProperty, MModule, MType): MPropDef */
8148 val* model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
8149 val* var /* : MPropDef */;
8150 val* var_mmodule /* var mmodule: MModule */;
8151 val* var_mtype /* var mtype: MType */;
8152 short int var1 /* : Bool */;
8153 val* var2 /* : Array[MPropDef] */;
8154 val* var3 /* : nullable Object */;
8155 var_mmodule = p0;
8156 var_mtype = p1;
8157 var1 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, self) /* has_mproperty on <var_mtype:MType>*/;
8158 if (!var1) {
8159 fprintf(stderr, "Runtime error: %s", "Assert failed");
8160 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1671);
8161 show_backtrace(1);
8162 }
8163 var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(self, var_mmodule, var_mtype) /* lookup_all_definitions on <self:MProperty>*/;
8164 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[MPropDef]>*/;
8165 var = var3;
8166 goto RET_LABEL;
8167 RET_LABEL:;
8168 return var;
8169 }
8170 /* method model#MProperty#lookup_first_definition for (self: Object, MModule, MType): MPropDef */
8171 val* VIRTUAL_model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
8172 val* var /* : MPropDef */;
8173 val* var1 /* : MPropDef */;
8174 var1 = model__MProperty__lookup_first_definition(self, p0, p1);
8175 var = var1;
8176 RET_LABEL:;
8177 return var;
8178 }
8179 /* method model#MProperty#lookup_all_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
8180 val* model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
8181 val* var /* : Array[MPropDef] */;
8182 val* var_mmodule /* var mmodule: MModule */;
8183 val* var_mtype /* var mtype: MType */;
8184 short int var1 /* : Bool */;
8185 short int var2 /* : Bool */;
8186 short int var3 /* : Bool */;
8187 int cltype;
8188 int idtype;
8189 val* var4 /* : MType */;
8190 val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8191 val* var6 /* : nullable Object */;
8192 val* var_cache /* var cache: nullable Array[MPropDef] */;
8193 val* var7 /* : null */;
8194 short int var8 /* : Bool */;
8195 val* var9 /* : Array[MPropDef] */;
8196 val* var_candidates /* var candidates: Array[MPropDef] */;
8197 val* var10 /* : Array[MPropDef] */;
8198 val* var11 /* : Iterator[nullable Object] */;
8199 short int var12 /* : Bool */;
8200 val* var13 /* : nullable Object */;
8201 val* var_mpropdef /* var mpropdef: MPropDef */;
8202 val* var14 /* : POSetElement[MModule] */;
8203 val* var15 /* : MClassDef */;
8204 val* var16 /* : MModule */;
8205 short int var17 /* : Bool */;
8206 short int var18 /* : Bool */;
8207 val* var19 /* : null */;
8208 val* var20 /* : MClassDef */;
8209 val* var21 /* : MClassType */;
8210 short int var22 /* : Bool */;
8211 short int var23 /* : Bool */;
8212 long var24 /* : Int */;
8213 long var25 /* : Int */;
8214 short int var26 /* : Bool */;
8215 short int var28 /* : Bool */;
8216 int cltype29;
8217 int idtype30;
8218 const char* var_class_name;
8219 short int var31 /* : Bool */;
8220 val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8221 val* var33 /* : Array[nullable Object] */;
8222 val* var34 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8223 var_mmodule = p0;
8224 var_mtype = p1;
8225 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8226 var2 = !var1;
8227 if (!var2) {
8228 fprintf(stderr, "Runtime error: %s", "Assert failed");
8229 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1679);
8230 show_backtrace(1);
8231 }
8232 /* <var_mtype:MType> isa MNullableType */
8233 cltype = type_model__MNullableType.color;
8234 idtype = type_model__MNullableType.id;
8235 if(cltype >= var_mtype->type->table_size) {
8236 var3 = 0;
8237 } else {
8238 var3 = var_mtype->type->type_table[cltype] == idtype;
8239 }
8240 if (var3){
8241 var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
8242 var_mtype = var4;
8243 } else {
8244 }
8245 var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8246 var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8247 var_cache = var6;
8248 var7 = NULL;
8249 if (var_cache == NULL) {
8250 var8 = 0; /* is null */
8251 } else {
8252 var8 = 1; /* arg is null and recv is not */
8253 }
8254 if (var8){
8255 var = var_cache;
8256 goto RET_LABEL;
8257 } else {
8258 }
8259 var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
8260 ((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
8261 var_candidates = var9;
8262 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
8263 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
8264 for(;;) {
8265 var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
8266 if(!var12) break;
8267 var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
8268 var_mpropdef = var13;
8269 var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
8270 var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8271 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
8272 var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
8273 var18 = !var17;
8274 if (var18){
8275 goto CONTINUE_label;
8276 } else {
8277 }
8278 var19 = NULL;
8279 var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
8280 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
8281 var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
8282 var23 = !var22;
8283 if (var23){
8284 goto CONTINUE_label;
8285 } else {
8286 }
8287 ((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
8288 CONTINUE_label: (void)0;
8289 ((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
8290 }
8291 BREAK_label: (void)0;
8292 var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
8293 var25 = 1;
8294 { /* Inline kernel#Int#<= (var24,var25) */
8295 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
8296 /* <var25:Int> isa OTHER */
8297 var28 = 1; /* easy <var25:Int> isa OTHER*/
8298 if (!var28) {
8299 var_class_name = type_kernel__Int.name;
8300 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8301 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
8302 show_backtrace(1);
8303 }
8304 var31 = var24 <= var25;
8305 var26 = var31;
8306 goto RET_LABEL27;
8307 RET_LABEL27:(void)0;
8308 }
8309 if (var26){
8310 var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8311 ((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8312 var = var_candidates;
8313 goto RET_LABEL;
8314 } else {
8315 }
8316 ((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_model__MModule__linearize_mpropdefs]))(var_mmodule, var_candidates) /* linearize_mpropdefs on <var_mmodule:MModule>*/;
8317 var33 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_array__AbstractArrayRead__reversed]))(var_candidates) /* reversed on <var_candidates:Array[MPropDef]>*/;
8318 var_candidates = var33;
8319 var34 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
8320 ((void (*)(val*, val*, val*, val*))(var34->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var34, var_mmodule, var_mtype, var_candidates) /* []= on <var34:HashMap2[MModule, MType, Array[MPropDef]]>*/;
8321 var = var_candidates;
8322 goto RET_LABEL;
8323 RET_LABEL:;
8324 return var;
8325 }
8326 /* method model#MProperty#lookup_all_definitions for (self: Object, MModule, MType): Array[MPropDef] */
8327 val* VIRTUAL_model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
8328 val* var /* : Array[MPropDef] */;
8329 val* var1 /* : Array[MPropDef] */;
8330 var1 = model__MProperty__lookup_all_definitions(self, p0, p1);
8331 var = var1;
8332 RET_LABEL:;
8333 return var;
8334 }
8335 /* method model#MProperty#lookup_all_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
8336 val* model__MProperty__lookup_all_definitions_cache(val* self) {
8337 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8338 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8339 var1 = self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val; /* @lookup_all_definitions_cache on <self:MProperty> */
8340 if (var1 == NULL) {
8341 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_all_definitions_cache");
8342 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
8343 show_backtrace(1);
8344 }
8345 var = var1;
8346 RET_LABEL:;
8347 return var;
8348 }
8349 /* method model#MProperty#lookup_all_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
8350 val* VIRTUAL_model__MProperty__lookup_all_definitions_cache(val* self) {
8351 val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8352 val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
8353 var1 = model__MProperty__lookup_all_definitions_cache(self);
8354 var = var1;
8355 RET_LABEL:;
8356 return var;
8357 }
8358 /* method model#MProperty#lookup_all_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
8359 void model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
8360 short int var /* : Bool */;
8361 int cltype;
8362 int idtype;
8363 const struct type* type_struct;
8364 const char* var_class_name;
8365 /* Covariant cast for argument 0 (lookup_all_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
8366 /* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
8367 type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2mmodule__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
8368 cltype = type_struct->color;
8369 idtype = type_struct->id;
8370 if(cltype >= p0->type->table_size) {
8371 var = 0;
8372 } else {
8373 var = p0->type->type_table[cltype] == idtype;
8374 }
8375 if (!var) {
8376 var_class_name = p0 == NULL ? "null" : p0->type->name;
8377 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
8378 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
8379 show_backtrace(1);
8380 }
8381 self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val = p0; /* @lookup_all_definitions_cache on <self:MProperty> */
8382 RET_LABEL:;
8383 }
8384 /* method model#MProperty#lookup_all_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
8385 void VIRTUAL_model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
8386 model__MProperty__lookup_all_definitions_cache_61d(self, p0);
8387 RET_LABEL:;
8388 }
8389 /* method model#MMethod#init for (self: MMethod, MClassDef, String, MVisibility) */
8390 void model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
8391 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8392 val* var_name /* var name: String */;
8393 val* var_visibility /* var visibility: MVisibility */;
8394 var_intro_mclassdef = p0;
8395 var_name = p1;
8396 var_visibility = p2;
8397 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MMethod>*/;
8398 RET_LABEL:;
8399 }
8400 /* method model#MMethod#init for (self: Object, MClassDef, String, MVisibility) */
8401 void VIRTUAL_model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
8402 model__MMethod__init(self, p0, p1, p2);
8403 RET_LABEL:;
8404 }
8405 /* method model#MMethod#is_init for (self: MMethod): Bool */
8406 short int model__MMethod__is_init(val* self) {
8407 short int var /* : Bool */;
8408 short int var1 /* : Bool */;
8409 var1 = self->attrs[COLOR_model__MMethod___64dis_init].s; /* @is_init on <self:MMethod> */
8410 var = var1;
8411 RET_LABEL:;
8412 return var;
8413 }
8414 /* method model#MMethod#is_init for (self: Object): Bool */
8415 short int VIRTUAL_model__MMethod__is_init(val* self) {
8416 short int var /* : Bool */;
8417 short int var1 /* : Bool */;
8418 var1 = model__MMethod__is_init(self);
8419 var = var1;
8420 RET_LABEL:;
8421 return var;
8422 }
8423 /* method model#MMethod#is_init= for (self: MMethod, Bool) */
8424 void model__MMethod__is_init_61d(val* self, short int p0) {
8425 self->attrs[COLOR_model__MMethod___64dis_init].s = p0; /* @is_init on <self:MMethod> */
8426 RET_LABEL:;
8427 }
8428 /* method model#MMethod#is_init= for (self: Object, Bool) */
8429 void VIRTUAL_model__MMethod__is_init_61d(val* self, short int p0) {
8430 model__MMethod__is_init_61d(self, p0);
8431 RET_LABEL:;
8432 }
8433 /* method model#MMethod#is_new for (self: MMethod): Bool */
8434 short int model__MMethod__is_new(val* self) {
8435 short int var /* : Bool */;
8436 short int var1 /* : Bool */;
8437 var1 = self->attrs[COLOR_model__MMethod___64dis_new].s; /* @is_new on <self:MMethod> */
8438 var = var1;
8439 RET_LABEL:;
8440 return var;
8441 }
8442 /* method model#MMethod#is_new for (self: Object): Bool */
8443 short int VIRTUAL_model__MMethod__is_new(val* self) {
8444 short int var /* : Bool */;
8445 short int var1 /* : Bool */;
8446 var1 = model__MMethod__is_new(self);
8447 var = var1;
8448 RET_LABEL:;
8449 return var;
8450 }
8451 /* method model#MMethod#is_new= for (self: MMethod, Bool) */
8452 void model__MMethod__is_new_61d(val* self, short int p0) {
8453 self->attrs[COLOR_model__MMethod___64dis_new].s = p0; /* @is_new on <self:MMethod> */
8454 RET_LABEL:;
8455 }
8456 /* method model#MMethod#is_new= for (self: Object, Bool) */
8457 void VIRTUAL_model__MMethod__is_new_61d(val* self, short int p0) {
8458 model__MMethod__is_new_61d(self, p0);
8459 RET_LABEL:;
8460 }
8461 /* method model#MMethod#is_init_for for (self: MMethod, MClass): Bool */
8462 short int model__MMethod__is_init_for(val* self, val* p0) {
8463 short int var /* : Bool */;
8464 val* var_mclass /* var mclass: MClass */;
8465 short int var1 /* : Bool */;
8466 var_mclass = p0;
8467 var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MMethod__is_init]))(self) /* is_init on <self:MMethod>*/;
8468 var = var1;
8469 goto RET_LABEL;
8470 RET_LABEL:;
8471 return var;
8472 }
8473 /* method model#MMethod#is_init_for for (self: Object, MClass): Bool */
8474 short int VIRTUAL_model__MMethod__is_init_for(val* self, val* p0) {
8475 short int var /* : Bool */;
8476 short int var1 /* : Bool */;
8477 var1 = model__MMethod__is_init_for(self, p0);
8478 var = var1;
8479 RET_LABEL:;
8480 return var;
8481 }
8482 /* method model#MAttribute#init for (self: MAttribute, MClassDef, String, MVisibility) */
8483 void model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
8484 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8485 val* var_name /* var name: String */;
8486 val* var_visibility /* var visibility: MVisibility */;
8487 var_intro_mclassdef = p0;
8488 var_name = p1;
8489 var_visibility = p2;
8490 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MAttribute>*/;
8491 RET_LABEL:;
8492 }
8493 /* method model#MAttribute#init for (self: Object, MClassDef, String, MVisibility) */
8494 void VIRTUAL_model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
8495 model__MAttribute__init(self, p0, p1, p2);
8496 RET_LABEL:;
8497 }
8498 /* method model#MVirtualTypeProp#init for (self: MVirtualTypeProp, MClassDef, String, MVisibility) */
8499 void model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
8500 val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
8501 val* var_name /* var name: String */;
8502 val* var_visibility /* var visibility: MVisibility */;
8503 var_intro_mclassdef = p0;
8504 var_name = p1;
8505 var_visibility = p2;
8506 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeProp>*/;
8507 RET_LABEL:;
8508 }
8509 /* method model#MVirtualTypeProp#init for (self: Object, MClassDef, String, MVisibility) */
8510 void VIRTUAL_model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
8511 model__MVirtualTypeProp__init(self, p0, p1, p2);
8512 RET_LABEL:;
8513 }
8514 /* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
8515 val* model__MVirtualTypeProp__mvirtualtype(val* self) {
8516 val* var /* : MVirtualType */;
8517 val* var1 /* : MVirtualType */;
8518 var1 = self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val; /* @mvirtualtype on <self:MVirtualTypeProp> */
8519 if (var1 == NULL) {
8520 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mvirtualtype");
8521 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1762);
8522 show_backtrace(1);
8523 }
8524 var = var1;
8525 RET_LABEL:;
8526 return var;
8527 }
8528 /* method model#MVirtualTypeProp#mvirtualtype for (self: Object): MVirtualType */
8529 val* VIRTUAL_model__MVirtualTypeProp__mvirtualtype(val* self) {
8530 val* var /* : MVirtualType */;
8531 val* var1 /* : MVirtualType */;
8532 var1 = model__MVirtualTypeProp__mvirtualtype(self);
8533 var = var1;
8534 RET_LABEL:;
8535 return var;
8536 }
8537 /* method model#MVirtualTypeProp#mvirtualtype= for (self: MVirtualTypeProp, MVirtualType) */
8538 void model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
8539 self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val = p0; /* @mvirtualtype on <self:MVirtualTypeProp> */
8540 RET_LABEL:;
8541 }
8542 /* method model#MVirtualTypeProp#mvirtualtype= for (self: Object, MVirtualType) */
8543 void VIRTUAL_model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
8544 model__MVirtualTypeProp__mvirtualtype_61d(self, p0);
8545 RET_LABEL:;
8546 }
8547 /* method model#MPropDef#location for (self: MPropDef): Location */
8548 val* model__MPropDef__location(val* self) {
8549 val* var /* : Location */;
8550 val* var1 /* : Location */;
8551 var1 = self->attrs[COLOR_model__MPropDef___64dlocation].val; /* @location on <self:MPropDef> */
8552 if (var1 == NULL) {
8553 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
8554 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1779);
8555 show_backtrace(1);
8556 }
8557 var = var1;
8558 RET_LABEL:;
8559 return var;
8560 }
8561 /* method model#MPropDef#location for (self: Object): Location */
8562 val* VIRTUAL_model__MPropDef__location(val* self) {
8563 val* var /* : Location */;
8564 val* var1 /* : Location */;
8565 var1 = model__MPropDef__location(self);
8566 var = var1;
8567 RET_LABEL:;
8568 return var;
8569 }
8570 /* method model#MPropDef#location= for (self: MPropDef, Location) */
8571 void model__MPropDef__location_61d(val* self, val* p0) {
8572 self->attrs[COLOR_model__MPropDef___64dlocation].val = p0; /* @location on <self:MPropDef> */
8573 RET_LABEL:;
8574 }
8575 /* method model#MPropDef#location= for (self: Object, Location) */
8576 void VIRTUAL_model__MPropDef__location_61d(val* self, val* p0) {
8577 model__MPropDef__location_61d(self, p0);
8578 RET_LABEL:;
8579 }
8580 /* method model#MPropDef#mclassdef for (self: MPropDef): MClassDef */
8581 val* model__MPropDef__mclassdef(val* self) {
8582 val* var /* : MClassDef */;
8583 val* var1 /* : MClassDef */;
8584 var1 = self->attrs[COLOR_model__MPropDef___64dmclassdef].val; /* @mclassdef on <self:MPropDef> */
8585 if (var1 == NULL) {
8586 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
8587 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1782);
8588 show_backtrace(1);
8589 }
8590 var = var1;
8591 RET_LABEL:;
8592 return var;
8593 }
8594 /* method model#MPropDef#mclassdef for (self: Object): MClassDef */
8595 val* VIRTUAL_model__MPropDef__mclassdef(val* self) {
8596 val* var /* : MClassDef */;
8597 val* var1 /* : MClassDef */;
8598 var1 = model__MPropDef__mclassdef(self);
8599 var = var1;
8600 RET_LABEL:;
8601 return var;
8602 }
8603 /* method model#MPropDef#mclassdef= for (self: MPropDef, MClassDef) */
8604 void model__MPropDef__mclassdef_61d(val* self, val* p0) {
8605 self->attrs[COLOR_model__MPropDef___64dmclassdef].val = p0; /* @mclassdef on <self:MPropDef> */
8606 RET_LABEL:;
8607 }
8608 /* method model#MPropDef#mclassdef= for (self: Object, MClassDef) */
8609 void VIRTUAL_model__MPropDef__mclassdef_61d(val* self, val* p0) {
8610 model__MPropDef__mclassdef_61d(self, p0);
8611 RET_LABEL:;
8612 }
8613 /* method model#MPropDef#mproperty for (self: MPropDef): MProperty */
8614 val* model__MPropDef__mproperty(val* self) {
8615 val* var /* : MProperty */;
8616 val* var1 /* : MProperty */;
8617 var1 = self->attrs[COLOR_model__MPropDef___64dmproperty].val; /* @mproperty on <self:MPropDef> */
8618 if (var1 == NULL) {
8619 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
8620 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
8621 show_backtrace(1);
8622 }
8623 var = var1;
8624 RET_LABEL:;
8625 return var;
8626 }
8627 /* method model#MPropDef#mproperty for (self: Object): MProperty */
8628 val* VIRTUAL_model__MPropDef__mproperty(val* self) {
8629 val* var /* : MProperty */;
8630 val* var1 /* : MProperty */;
8631 var1 = model__MPropDef__mproperty(self);
8632 var = var1;
8633 RET_LABEL:;
8634 return var;
8635 }
8636 /* method model#MPropDef#mproperty= for (self: MPropDef, MProperty) */
8637 void model__MPropDef__mproperty_61d(val* self, val* p0) {
8638 short int var /* : Bool */;
8639 int cltype;
8640 int idtype;
8641 const struct type* type_struct;
8642 const char* var_class_name;
8643 /* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
8644 /* <p0:MProperty> isa MPROPERTY */
8645 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8646 cltype = type_struct->color;
8647 idtype = type_struct->id;
8648 if(cltype >= p0->type->table_size) {
8649 var = 0;
8650 } else {
8651 var = p0->type->type_table[cltype] == idtype;
8652 }
8653 if (!var) {
8654 var_class_name = p0 == NULL ? "null" : p0->type->name;
8655 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8656 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
8657 show_backtrace(1);
8658 }
8659 self->attrs[COLOR_model__MPropDef___64dmproperty].val = p0; /* @mproperty on <self:MPropDef> */
8660 RET_LABEL:;
8661 }
8662 /* method model#MPropDef#mproperty= for (self: Object, MProperty) */
8663 void VIRTUAL_model__MPropDef__mproperty_61d(val* self, val* p0) {
8664 model__MPropDef__mproperty_61d(self, p0);
8665 RET_LABEL:;
8666 }
8667 /* method model#MPropDef#init for (self: MPropDef, MClassDef, MProperty, Location) */
8668 void model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
8669 short int var /* : Bool */;
8670 int cltype;
8671 int idtype;
8672 const struct type* type_struct;
8673 const char* var_class_name;
8674 val* var_mclassdef /* var mclassdef: MClassDef */;
8675 val* var_mproperty /* var mproperty: MProperty */;
8676 val* var_location /* var location: Location */;
8677 val* var1 /* : Array[MPropDef] */;
8678 val* var2 /* : Array[MPropDef] */;
8679 static val* varonce;
8680 val* var3 /* : String */;
8681 char* var4 /* : NativeString */;
8682 long var5 /* : Int */;
8683 val* var6 /* : String */;
8684 val* var7 /* : Array[Object] */;
8685 long var8 /* : Int */;
8686 val* var9 /* : NativeArray[Object] */;
8687 val* var10 /* : String */;
8688 /* Covariant cast for argument 1 (mproperty) <p1:MProperty> isa MPROPERTY */
8689 /* <p1:MProperty> isa MPROPERTY */
8690 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8691 cltype = type_struct->color;
8692 idtype = type_struct->id;
8693 if(cltype >= p1->type->table_size) {
8694 var = 0;
8695 } else {
8696 var = p1->type->type_table[cltype] == idtype;
8697 }
8698 if (!var) {
8699 var_class_name = p1 == NULL ? "null" : p1->type->name;
8700 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8701 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1788);
8702 show_backtrace(1);
8703 }
8704 var_mclassdef = p0;
8705 var_mproperty = p1;
8706 var_location = p2;
8707 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mclassdef_61d]))(self, var_mclassdef) /* mclassdef= on <self:MPropDef>*/;
8708 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:MPropDef>*/;
8709 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__location_61d]))(self, var_location) /* location= on <self:MPropDef>*/;
8710 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
8711 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, self) /* add on <var1:Array[MPropDef]>*/;
8712 var2 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty>*/;
8713 ((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, self) /* add on <var2:Array[MPropDef]>*/;
8714 if (varonce) {
8715 var3 = varonce;
8716 } else {
8717 var4 = "#";
8718 var5 = 1;
8719 var6 = string__NativeString__to_s_with_length(var4, var5);
8720 var3 = var6;
8721 varonce = var3;
8722 }
8723 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
8724 { /* var7 = array_instance Array[Object] */
8725 var8 = 3;
8726 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
8727 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var_mclassdef;
8728 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var3;
8729 ((struct instance_array__NativeArray*)var9)->values[2] = (val*) var_mproperty;
8730 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
8731 }
8732 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
8733 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__to_s_61d]))(self, var10) /* to_s= on <self:MPropDef>*/;
8734 RET_LABEL:;
8735 }
8736 /* method model#MPropDef#init for (self: Object, MClassDef, MProperty, Location) */
8737 void VIRTUAL_model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
8738 model__MPropDef__init(self, p0, p1, p2);
8739 RET_LABEL:;
8740 }
8741 /* method model#MPropDef#to_s for (self: MPropDef): String */
8742 val* model__MPropDef__to_s(val* self) {
8743 val* var /* : String */;
8744 val* var1 /* : String */;
8745 var1 = self->attrs[COLOR_model__MPropDef___64dto_s].val; /* @to_s on <self:MPropDef> */
8746 if (var1 == NULL) {
8747 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
8748 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1798);
8749 show_backtrace(1);
8750 }
8751 var = var1;
8752 RET_LABEL:;
8753 return var;
8754 }
8755 /* method model#MPropDef#to_s for (self: Object): String */
8756 val* VIRTUAL_model__MPropDef__to_s(val* self) {
8757 val* var /* : String */;
8758 val* var1 /* : String */;
8759 var1 = model__MPropDef__to_s(self);
8760 var = var1;
8761 RET_LABEL:;
8762 return var;
8763 }
8764 /* method model#MPropDef#to_s= for (self: MPropDef, String) */
8765 void model__MPropDef__to_s_61d(val* self, val* p0) {
8766 self->attrs[COLOR_model__MPropDef___64dto_s].val = p0; /* @to_s on <self:MPropDef> */
8767 RET_LABEL:;
8768 }
8769 /* method model#MPropDef#to_s= for (self: Object, String) */
8770 void VIRTUAL_model__MPropDef__to_s_61d(val* self, val* p0) {
8771 model__MPropDef__to_s_61d(self, p0);
8772 RET_LABEL:;
8773 }
8774 /* method model#MPropDef#is_intro for (self: MPropDef): Bool */
8775 short int model__MPropDef__is_intro(val* self) {
8776 short int var /* : Bool */;
8777 val* var1 /* : MProperty */;
8778 val* var2 /* : MPropDef */;
8779 short int var3 /* : Bool */;
8780 var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
8781 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro]))(var1) /* intro on <var1:MProperty>*/;
8782 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, self) /* == on <var2:MPropDef>*/;
8783 var = var3;
8784 goto RET_LABEL;
8785 RET_LABEL:;
8786 return var;
8787 }
8788 /* method model#MPropDef#is_intro for (self: Object): Bool */
8789 short int VIRTUAL_model__MPropDef__is_intro(val* self) {
8790 short int var /* : Bool */;
8791 short int var1 /* : Bool */;
8792 var1 = model__MPropDef__is_intro(self);
8793 var = var1;
8794 RET_LABEL:;
8795 return var;
8796 }
8797 /* method model#MPropDef#lookup_next_definition for (self: MPropDef, MModule, MType): MPropDef */
8798 val* model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
8799 val* var /* : MPropDef */;
8800 val* var_mmodule /* var mmodule: MModule */;
8801 val* var_mtype /* var mtype: MType */;
8802 short int var1 /* : Bool */;
8803 short int var2 /* : Bool */;
8804 val* var3 /* : MProperty */;
8805 val* var4 /* : Array[MPropDef] */;
8806 val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
8807 val* var5 /* : Iterator[nullable Object] */;
8808 val* var_i /* var i: ArrayIterator[MPropDef] */;
8809 short int var6 /* : Bool */;
8810 short int var7 /* : Bool */;
8811 short int var_ /* var : Bool */;
8812 val* var8 /* : nullable Object */;
8813 short int var9 /* : Bool */;
8814 short int var10 /* : Bool */;
8815 short int var11 /* : Bool */;
8816 val* var12 /* : nullable Object */;
8817 short int var13 /* : Bool */;
8818 int cltype;
8819 int idtype;
8820 const struct type* type_struct;
8821 const char* var_class_name;
8822 var_mmodule = p0;
8823 var_mtype = p1;
8824 var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
8825 var2 = !var1;
8826 if (!var2) {
8827 fprintf(stderr, "Runtime error: %s", "Assert failed");
8828 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1812);
8829 show_backtrace(1);
8830 }
8831 var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
8832 var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(var3, var_mmodule, var_mtype) /* lookup_all_definitions on <var3:MProperty>*/;
8833 var_mpropdefs = var4;
8834 var5 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mpropdefs) /* iterator on <var_mpropdefs:Array[MPropDef]>*/;
8835 var_i = var5;
8836 for(;;) {
8837 var7 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8838 var_ = var7;
8839 if (var7){
8840 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
8841 var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___33d_61d]))(var8, self) /* != on <var8:nullable Object(MPropDef)>*/;
8842 var6 = var9;
8843 } else {
8844 var6 = var_;
8845 }
8846 if (!var6) break;
8847 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
8848 CONTINUE_label: (void)0;
8849 }
8850 BREAK_label: (void)0;
8851 var10 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8852 if (!var10) {
8853 fprintf(stderr, "Runtime error: %s", "Assert \'has_property\' failed");
8854 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1817);
8855 show_backtrace(1);
8856 }
8857 ((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
8858 var11 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
8859 if (!var11) {
8860 fprintf(stderr, "Runtime error: %s", "Assert \'has_next_property\' failed");
8861 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1819);
8862 show_backtrace(1);
8863 }
8864 var12 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
8865 /* <var12:nullable Object(MPropDef)> isa MPROPDEF */
8866 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPDEF];
8867 cltype = type_struct->color;
8868 idtype = type_struct->id;
8869 if(cltype >= var12->type->table_size) {
8870 var13 = 0;
8871 } else {
8872 var13 = var12->type->type_table[cltype] == idtype;
8873 }
8874 if (!var13) {
8875 var_class_name = var12 == NULL ? "null" : var12->type->name;
8876 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
8877 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1820);
8878 show_backtrace(1);
8879 }
8880 var = var12;
8881 goto RET_LABEL;
8882 RET_LABEL:;
8883 return var;
8884 }
8885 /* method model#MPropDef#lookup_next_definition for (self: Object, MModule, MType): MPropDef */
8886 val* VIRTUAL_model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
8887 val* var /* : MPropDef */;
8888 val* var1 /* : MPropDef */;
8889 var1 = model__MPropDef__lookup_next_definition(self, p0, p1);
8890 var = var1;
8891 RET_LABEL:;
8892 return var;
8893 }
8894 /* method model#MMethodDef#init for (self: MMethodDef, MClassDef, MMethod, Location) */
8895 void model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
8896 short int var /* : Bool */;
8897 int cltype;
8898 int idtype;
8899 const struct type* type_struct;
8900 const char* var_class_name;
8901 val* var_mclassdef /* var mclassdef: MClassDef */;
8902 val* var_mproperty /* var mproperty: MMethod */;
8903 val* var_location /* var location: Location */;
8904 /* Covariant cast for argument 1 (mproperty) <p1:MMethod> isa MPROPERTY */
8905 /* <p1:MMethod> isa MPROPERTY */
8906 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
8907 cltype = type_struct->color;
8908 idtype = type_struct->id;
8909 if(cltype >= p1->type->table_size) {
8910 var = 0;
8911 } else {
8912 var = p1->type->type_table[cltype] == idtype;
8913 }
8914 if (!var) {
8915 var_class_name = p1 == NULL ? "null" : p1->type->name;
8916 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
8917 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1831);
8918 show_backtrace(1);
8919 }
8920 var_mclassdef = p0;
8921 var_mproperty = p1;
8922 var_location = p2;
8923 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MMethodDef>*/;
8924 RET_LABEL:;
8925 }
8926 /* method model#MMethodDef#init for (self: Object, MClassDef, MMethod, Location) */
8927 void VIRTUAL_model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
8928 model__MMethodDef__init(self, p0, p1, p2);
8929 RET_LABEL:;
8930 }
8931 /* method model#MMethodDef#msignature for (self: MMethodDef): nullable MSignature */
8932 val* model__MMethodDef__msignature(val* self) {
8933 val* var /* : nullable MSignature */;
8934 val* var1 /* : nullable MSignature */;
8935 var1 = self->attrs[COLOR_model__MMethodDef___64dmsignature].val; /* @msignature on <self:MMethodDef> */
8936 var = var1;
8937 RET_LABEL:;
8938 return var;
8939 }
8940 /* method model#MMethodDef#msignature for (self: Object): nullable MSignature */
8941 val* VIRTUAL_model__MMethodDef__msignature(val* self) {
8942 val* var /* : nullable MSignature */;
8943 val* var1 /* : nullable MSignature */;
8944 var1 = model__MMethodDef__msignature(self);
8945 var = var1;
8946 RET_LABEL:;
8947 return var;
8948 }
8949 /* method model#MMethodDef#msignature= for (self: MMethodDef, nullable MSignature) */
8950 void model__MMethodDef__msignature_61d(val* self, val* p0) {
8951 self->attrs[COLOR_model__MMethodDef___64dmsignature].val = p0; /* @msignature on <self:MMethodDef> */
8952 RET_LABEL:;
8953 }
8954 /* method model#MMethodDef#msignature= for (self: Object, nullable MSignature) */
8955 void VIRTUAL_model__MMethodDef__msignature_61d(val* self, val* p0) {
8956 model__MMethodDef__msignature_61d(self, p0);
8957 RET_LABEL:;
8958 }
8959 /* method model#MMethodDef#is_abstract for (self: MMethodDef): Bool */
8960 short int model__MMethodDef__is_abstract(val* self) {
8961 short int var /* : Bool */;
8962 short int var1 /* : Bool */;
8963 var1 = self->attrs[COLOR_model__MMethodDef___64dis_abstract].s; /* @is_abstract on <self:MMethodDef> */
8964 var = var1;
8965 RET_LABEL:;
8966 return var;
8967 }
8968 /* method model#MMethodDef#is_abstract for (self: Object): Bool */
8969 short int VIRTUAL_model__MMethodDef__is_abstract(val* self) {
8970 short int var /* : Bool */;
8971 short int var1 /* : Bool */;
8972 var1 = model__MMethodDef__is_abstract(self);
8973 var = var1;
8974 RET_LABEL:;
8975 return var;
8976 }
8977 /* method model#MMethodDef#is_abstract= for (self: MMethodDef, Bool) */
8978 void model__MMethodDef__is_abstract_61d(val* self, short int p0) {
8979 self->attrs[COLOR_model__MMethodDef___64dis_abstract].s = p0; /* @is_abstract on <self:MMethodDef> */
8980 RET_LABEL:;
8981 }
8982 /* method model#MMethodDef#is_abstract= for (self: Object, Bool) */
8983 void VIRTUAL_model__MMethodDef__is_abstract_61d(val* self, short int p0) {
8984 model__MMethodDef__is_abstract_61d(self, p0);
8985 RET_LABEL:;
8986 }
8987 /* method model#MAttributeDef#init for (self: MAttributeDef, MClassDef, MAttribute, Location) */
8988 void model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
8989 short int var /* : Bool */;
8990 int cltype;
8991 int idtype;
8992 const struct type* type_struct;
8993 const char* var_class_name;
8994 val* var_mclassdef /* var mclassdef: MClassDef */;
8995 val* var_mproperty /* var mproperty: MAttribute */;
8996 val* var_location /* var location: Location */;
8997 /* Covariant cast for argument 1 (mproperty) <p1:MAttribute> isa MPROPERTY */
8998 /* <p1:MAttribute> isa MPROPERTY */
8999 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
9000 cltype = type_struct->color;
9001 idtype = type_struct->id;
9002 if(cltype >= p1->type->table_size) {
9003 var = 0;
9004 } else {
9005 var = p1->type->type_table[cltype] == idtype;
9006 }
9007 if (!var) {
9008 var_class_name = p1 == NULL ? "null" : p1->type->name;
9009 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
9010 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1850);
9011 show_backtrace(1);
9012 }
9013 var_mclassdef = p0;
9014 var_mproperty = p1;
9015 var_location = p2;
9016 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MAttributeDef>*/;
9017 RET_LABEL:;
9018 }
9019 /* method model#MAttributeDef#init for (self: Object, MClassDef, MAttribute, Location) */
9020 void VIRTUAL_model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
9021 model__MAttributeDef__init(self, p0, p1, p2);
9022 RET_LABEL:;
9023 }
9024 /* method model#MAttributeDef#static_mtype for (self: MAttributeDef): nullable MType */
9025 val* model__MAttributeDef__static_mtype(val* self) {
9026 val* var /* : nullable MType */;
9027 val* var1 /* : nullable MType */;
9028 var1 = self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val; /* @static_mtype on <self:MAttributeDef> */
9029 var = var1;
9030 RET_LABEL:;
9031 return var;
9032 }
9033 /* method model#MAttributeDef#static_mtype for (self: Object): nullable MType */
9034 val* VIRTUAL_model__MAttributeDef__static_mtype(val* self) {
9035 val* var /* : nullable MType */;
9036 val* var1 /* : nullable MType */;
9037 var1 = model__MAttributeDef__static_mtype(self);
9038 var = var1;
9039 RET_LABEL:;
9040 return var;
9041 }
9042 /* method model#MAttributeDef#static_mtype= for (self: MAttributeDef, nullable MType) */
9043 void model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
9044 self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val = p0; /* @static_mtype on <self:MAttributeDef> */
9045 RET_LABEL:;
9046 }
9047 /* method model#MAttributeDef#static_mtype= for (self: Object, nullable MType) */
9048 void VIRTUAL_model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
9049 model__MAttributeDef__static_mtype_61d(self, p0);
9050 RET_LABEL:;
9051 }
9052 /* method model#MVirtualTypeDef#init for (self: MVirtualTypeDef, MClassDef, MVirtualTypeProp, Location) */
9053 void model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
9054 short int var /* : Bool */;
9055 int cltype;
9056 int idtype;
9057 const struct type* type_struct;
9058 const char* var_class_name;
9059 val* var_mclassdef /* var mclassdef: MClassDef */;
9060 val* var_mproperty /* var mproperty: MVirtualTypeProp */;
9061 val* var_location /* var location: Location */;
9062 /* Covariant cast for argument 1 (mproperty) <p1:MVirtualTypeProp> isa MPROPERTY */
9063 /* <p1:MVirtualTypeProp> isa MPROPERTY */
9064 type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
9065 cltype = type_struct->color;
9066 idtype = type_struct->id;
9067 if(cltype >= p1->type->table_size) {
9068 var = 0;
9069 } else {
9070 var = p1->type->type_table[cltype] == idtype;
9071 }
9072 if (!var) {
9073 var_class_name = p1 == NULL ? "null" : p1->type->name;
9074 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
9075 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1866);
9076 show_backtrace(1);
9077 }
9078 var_mclassdef = p0;
9079 var_mproperty = p1;
9080 var_location = p2;
9081 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeDef>*/;
9082 RET_LABEL:;
9083 }
9084 /* method model#MVirtualTypeDef#init for (self: Object, MClassDef, MVirtualTypeProp, Location) */
9085 void VIRTUAL_model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
9086 model__MVirtualTypeDef__init(self, p0, p1, p2);
9087 RET_LABEL:;
9088 }
9089 /* method model#MVirtualTypeDef#bound for (self: MVirtualTypeDef): nullable MType */
9090 val* model__MVirtualTypeDef__bound(val* self) {
9091 val* var /* : nullable MType */;
9092 val* var1 /* : nullable MType */;
9093 var1 = self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val; /* @bound on <self:MVirtualTypeDef> */
9094 var = var1;
9095 RET_LABEL:;
9096 return var;
9097 }
9098 /* method model#MVirtualTypeDef#bound for (self: Object): nullable MType */
9099 val* VIRTUAL_model__MVirtualTypeDef__bound(val* self) {
9100 val* var /* : nullable MType */;
9101 val* var1 /* : nullable MType */;
9102 var1 = model__MVirtualTypeDef__bound(self);
9103 var = var1;
9104 RET_LABEL:;
9105 return var;
9106 }
9107 /* method model#MVirtualTypeDef#bound= for (self: MVirtualTypeDef, nullable MType) */
9108 void model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
9109 self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val = p0; /* @bound on <self:MVirtualTypeDef> */
9110 RET_LABEL:;
9111 }
9112 /* method model#MVirtualTypeDef#bound= for (self: Object, nullable MType) */
9113 void VIRTUAL_model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
9114 model__MVirtualTypeDef__bound_61d(self, p0);
9115 RET_LABEL:;
9116 }
9117 /* method model#MClassKind#to_s for (self: MClassKind): String */
9118 val* model__MClassKind__to_s(val* self) {
9119 val* var /* : String */;
9120 val* var1 /* : String */;
9121 var1 = self->attrs[COLOR_model__MClassKind___64dto_s].val; /* @to_s on <self:MClassKind> */
9122 if (var1 == NULL) {
9123 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
9124 fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1886);
9125 show_backtrace(1);
9126 }
9127 var = var1;
9128 RET_LABEL:;
9129 return var;
9130 }
9131 /* method model#MClassKind#to_s for (self: Object): String */
9132 val* VIRTUAL_model__MClassKind__to_s(val* self) {
9133 val* var /* : String */;
9134 val* var1 /* : String */;
9135 var1 = model__MClassKind__to_s(self);
9136 var = var1;
9137 RET_LABEL:;
9138 return var;
9139 }
9140 /* method model#MClassKind#to_s= for (self: MClassKind, String) */
9141 void model__MClassKind__to_s_61d(val* self, val* p0) {
9142 self->attrs[COLOR_model__MClassKind___64dto_s].val = p0; /* @to_s on <self:MClassKind> */
9143 RET_LABEL:;
9144 }
9145 /* method model#MClassKind#to_s= for (self: Object, String) */
9146 void VIRTUAL_model__MClassKind__to_s_61d(val* self, val* p0) {
9147 model__MClassKind__to_s_61d(self, p0);
9148 RET_LABEL:;
9149 }
9150 /* method model#MClassKind#need_init for (self: MClassKind): Bool */
9151 short int model__MClassKind__need_init(val* self) {
9152 short int var /* : Bool */;
9153 short int var1 /* : Bool */;
9154 var1 = self->attrs[COLOR_model__MClassKind___64dneed_init].s; /* @need_init on <self:MClassKind> */
9155 var = var1;
9156 RET_LABEL:;
9157 return var;
9158 }
9159 /* method model#MClassKind#need_init for (self: Object): Bool */
9160 short int VIRTUAL_model__MClassKind__need_init(val* self) {
9161 short int var /* : Bool */;
9162 short int var1 /* : Bool */;
9163 var1 = model__MClassKind__need_init(self);
9164 var = var1;
9165 RET_LABEL:;
9166 return var;
9167 }
9168 /* method model#MClassKind#need_init= for (self: MClassKind, Bool) */
9169 void model__MClassKind__need_init_61d(val* self, short int p0) {
9170 self->attrs[COLOR_model__MClassKind___64dneed_init].s = p0; /* @need_init on <self:MClassKind> */
9171 RET_LABEL:;
9172 }
9173 /* method model#MClassKind#need_init= for (self: Object, Bool) */
9174 void VIRTUAL_model__MClassKind__need_init_61d(val* self, short int p0) {
9175 model__MClassKind__need_init_61d(self, p0);
9176 RET_LABEL:;
9177 }
9178 /* method model#MClassKind#init for (self: MClassKind, String, Bool) */
9179 void model__MClassKind__init(val* self, val* p0, short int p1) {
9180 val* var_s /* var s: String */;
9181 short int var_need_init /* var need_init: Bool */;
9182 var_s = p0;
9183 var_need_init = p1;
9184 ((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassKind__to_s_61d]))(self, var_s) /* to_s= on <self:MClassKind>*/;
9185 ((void (*)(val*, short int))(self->class->vft[COLOR_model__MClassKind__need_init_61d]))(self, var_need_init) /* need_init= on <self:MClassKind>*/;
9186 RET_LABEL:;
9187 }
9188 /* method model#MClassKind#init for (self: Object, String, Bool) */
9189 void VIRTUAL_model__MClassKind__init(val* self, val* p0, short int p1) {
9190 model__MClassKind__init(self, p0, p1);
9191 RET_LABEL:;
9192 }
9193 /* method model#Object#abstract_kind for (self: Object): MClassKind */
9194 val* model__Object__abstract_kind(val* self) {
9195 val* var /* : MClassKind */;
9196 static val* varonce;
9197 static int varonce_guard;
9198 val* var1 /* : MClassKind */;
9199 val* var2 /* : MClassKind */;
9200 static val* varonce3;
9201 val* var4 /* : String */;
9202 char* var5 /* : NativeString */;
9203 long var6 /* : Int */;
9204 val* var7 /* : String */;
9205 short int var8 /* : Bool */;
9206 if (varonce_guard) {
9207 var1 = varonce;
9208 } else {
9209 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9210 if (varonce3) {
9211 var4 = varonce3;
9212 } else {
9213 var5 = "abstract class";
9214 var6 = 14;
9215 var7 = string__NativeString__to_s_with_length(var5, var6);
9216 var4 = var7;
9217 varonce3 = var4;
9218 }
9219 var8 = 1;
9220 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9221 var1 = var2;
9222 varonce = var1;
9223 varonce_guard = 1;
9224 }
9225 var = var1;
9226 goto RET_LABEL;
9227 RET_LABEL:;
9228 return var;
9229 }
9230 /* method model#Object#abstract_kind for (self: Object): MClassKind */
9231 val* VIRTUAL_model__Object__abstract_kind(val* self) {
9232 val* var /* : MClassKind */;
9233 val* var1 /* : MClassKind */;
9234 var1 = model__Object__abstract_kind(self);
9235 var = var1;
9236 RET_LABEL:;
9237 return var;
9238 }
9239 /* method model#Object#concrete_kind for (self: Object): MClassKind */
9240 val* model__Object__concrete_kind(val* self) {
9241 val* var /* : MClassKind */;
9242 static val* varonce;
9243 static int varonce_guard;
9244 val* var1 /* : MClassKind */;
9245 val* var2 /* : MClassKind */;
9246 static val* varonce3;
9247 val* var4 /* : String */;
9248 char* var5 /* : NativeString */;
9249 long var6 /* : Int */;
9250 val* var7 /* : String */;
9251 short int var8 /* : Bool */;
9252 if (varonce_guard) {
9253 var1 = varonce;
9254 } else {
9255 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9256 if (varonce3) {
9257 var4 = varonce3;
9258 } else {
9259 var5 = "class";
9260 var6 = 5;
9261 var7 = string__NativeString__to_s_with_length(var5, var6);
9262 var4 = var7;
9263 varonce3 = var4;
9264 }
9265 var8 = 1;
9266 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9267 var1 = var2;
9268 varonce = var1;
9269 varonce_guard = 1;
9270 }
9271 var = var1;
9272 goto RET_LABEL;
9273 RET_LABEL:;
9274 return var;
9275 }
9276 /* method model#Object#concrete_kind for (self: Object): MClassKind */
9277 val* VIRTUAL_model__Object__concrete_kind(val* self) {
9278 val* var /* : MClassKind */;
9279 val* var1 /* : MClassKind */;
9280 var1 = model__Object__concrete_kind(self);
9281 var = var1;
9282 RET_LABEL:;
9283 return var;
9284 }
9285 /* method model#Object#interface_kind for (self: Object): MClassKind */
9286 val* model__Object__interface_kind(val* self) {
9287 val* var /* : MClassKind */;
9288 static val* varonce;
9289 static int varonce_guard;
9290 val* var1 /* : MClassKind */;
9291 val* var2 /* : MClassKind */;
9292 static val* varonce3;
9293 val* var4 /* : String */;
9294 char* var5 /* : NativeString */;
9295 long var6 /* : Int */;
9296 val* var7 /* : String */;
9297 short int var8 /* : Bool */;
9298 if (varonce_guard) {
9299 var1 = varonce;
9300 } else {
9301 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9302 if (varonce3) {
9303 var4 = varonce3;
9304 } else {
9305 var5 = "interface";
9306 var6 = 9;
9307 var7 = string__NativeString__to_s_with_length(var5, var6);
9308 var4 = var7;
9309 varonce3 = var4;
9310 }
9311 var8 = 0;
9312 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9313 var1 = var2;
9314 varonce = var1;
9315 varonce_guard = 1;
9316 }
9317 var = var1;
9318 goto RET_LABEL;
9319 RET_LABEL:;
9320 return var;
9321 }
9322 /* method model#Object#interface_kind for (self: Object): MClassKind */
9323 val* VIRTUAL_model__Object__interface_kind(val* self) {
9324 val* var /* : MClassKind */;
9325 val* var1 /* : MClassKind */;
9326 var1 = model__Object__interface_kind(self);
9327 var = var1;
9328 RET_LABEL:;
9329 return var;
9330 }
9331 /* method model#Object#enum_kind for (self: Object): MClassKind */
9332 val* model__Object__enum_kind(val* self) {
9333 val* var /* : MClassKind */;
9334 static val* varonce;
9335 static int varonce_guard;
9336 val* var1 /* : MClassKind */;
9337 val* var2 /* : MClassKind */;
9338 static val* varonce3;
9339 val* var4 /* : String */;
9340 char* var5 /* : NativeString */;
9341 long var6 /* : Int */;
9342 val* var7 /* : String */;
9343 short int var8 /* : Bool */;
9344 if (varonce_guard) {
9345 var1 = varonce;
9346 } else {
9347 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9348 if (varonce3) {
9349 var4 = varonce3;
9350 } else {
9351 var5 = "enum";
9352 var6 = 4;
9353 var7 = string__NativeString__to_s_with_length(var5, var6);
9354 var4 = var7;
9355 varonce3 = var4;
9356 }
9357 var8 = 0;
9358 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9359 var1 = var2;
9360 varonce = var1;
9361 varonce_guard = 1;
9362 }
9363 var = var1;
9364 goto RET_LABEL;
9365 RET_LABEL:;
9366 return var;
9367 }
9368 /* method model#Object#enum_kind for (self: Object): MClassKind */
9369 val* VIRTUAL_model__Object__enum_kind(val* self) {
9370 val* var /* : MClassKind */;
9371 val* var1 /* : MClassKind */;
9372 var1 = model__Object__enum_kind(self);
9373 var = var1;
9374 RET_LABEL:;
9375 return var;
9376 }
9377 /* method model#Object#extern_kind for (self: Object): MClassKind */
9378 val* model__Object__extern_kind(val* self) {
9379 val* var /* : MClassKind */;
9380 static val* varonce;
9381 static int varonce_guard;
9382 val* var1 /* : MClassKind */;
9383 val* var2 /* : MClassKind */;
9384 static val* varonce3;
9385 val* var4 /* : String */;
9386 char* var5 /* : NativeString */;
9387 long var6 /* : Int */;
9388 val* var7 /* : String */;
9389 short int var8 /* : Bool */;
9390 if (varonce_guard) {
9391 var1 = varonce;
9392 } else {
9393 var2 = NEW_model__MClassKind(&type_model__MClassKind);
9394 if (varonce3) {
9395 var4 = varonce3;
9396 } else {
9397 var5 = "extern";
9398 var6 = 6;
9399 var7 = string__NativeString__to_s_with_length(var5, var6);
9400 var4 = var7;
9401 varonce3 = var4;
9402 }
9403 var8 = 0;
9404 ((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
9405 var1 = var2;
9406 varonce = var1;
9407 varonce_guard = 1;
9408 }
9409 var = var1;
9410 goto RET_LABEL;
9411 RET_LABEL:;
9412 return var;
9413 }
9414 /* method model#Object#extern_kind for (self: Object): MClassKind */
9415 val* VIRTUAL_model__Object__extern_kind(val* self) {
9416 val* var /* : MClassKind */;
9417 val* var1 /* : MClassKind */;
9418 var1 = model__Object__extern_kind(self);
9419 var = var1;
9420 RET_LABEL:;
9421 return var;
9422 }