c_src: update Makefile to compile on MacOSX
[nit.git] / c_src / array.sep.1.c
1 #include "array.sep.0.h"
2 /* method array#AbstractArrayRead#length for (self: AbstractArrayRead[nullable Object]): Int */
3 long array__AbstractArrayRead__length(val* self) {
4 long var /* : Int */;
5 long var1 /* : Int */;
6 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method array#AbstractArrayRead#length for (self: Object): Int */
12 long VIRTUAL_array__AbstractArrayRead__length(val* self) {
13 long var /* : Int */;
14 long var1 /* : Int */;
15 var1 = array__AbstractArrayRead__length(self);
16 var = var1;
17 RET_LABEL:;
18 return var;
19 }
20 /* method array#AbstractArrayRead#is_empty for (self: AbstractArrayRead[nullable Object]): Bool */
21 short int array__AbstractArrayRead__is_empty(val* self) {
22 short int var /* : Bool */;
23 long var1 /* : Int */;
24 long var2 /* : Int */;
25 short int var3 /* : Bool */;
26 short int var5 /* : Bool */;
27 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
28 var2 = 0;
29 { /* Inline kernel#Int#== (var1,var2) */
30 var5 = var1 == var2;
31 var3 = var5;
32 goto RET_LABEL4;
33 RET_LABEL4:(void)0;
34 }
35 var = var3;
36 goto RET_LABEL;
37 RET_LABEL:;
38 return var;
39 }
40 /* method array#AbstractArrayRead#is_empty for (self: Object): Bool */
41 short int VIRTUAL_array__AbstractArrayRead__is_empty(val* self) {
42 short int var /* : Bool */;
43 short int var1 /* : Bool */;
44 var1 = array__AbstractArrayRead__is_empty(self);
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method array#AbstractArrayRead#has for (self: AbstractArrayRead[nullable Object], nullable Object): Bool */
50 short int array__AbstractArrayRead__has(val* self, val* p0) {
51 short int var /* : Bool */;
52 short int var1 /* : Bool */;
53 int cltype;
54 int idtype;
55 const struct type* type_struct;
56 short int is_nullable;
57 const char* var_class_name;
58 val* var_item /* var item: nullable Object */;
59 long var2 /* : Int */;
60 long var_i /* var i: Int */;
61 long var3 /* : Int */;
62 long var_l /* var l: Int */;
63 short int var4 /* : Bool */;
64 short int var6 /* : Bool */;
65 int cltype7;
66 int idtype8;
67 const char* var_class_name9;
68 short int var10 /* : Bool */;
69 val* var11 /* : nullable Object */;
70 short int var12 /* : Bool */;
71 short int var13 /* : Bool */;
72 long var14 /* : Int */;
73 long var15 /* : Int */;
74 long var17 /* : Int */;
75 short int var18 /* : Bool */;
76 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
77 /* <p0:nullable Object> isa Collection#0 */
78 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
79 cltype = type_struct->color;
80 idtype = type_struct->id;
81 is_nullable = type_struct->is_nullable;
82 if(p0 == NULL) {
83 var1 = is_nullable;
84 } else {
85 if(cltype >= p0->type->table_size) {
86 var1 = 0;
87 } else {
88 var1 = p0->type->type_table[cltype] == idtype;
89 }
90 }
91 if (!var1) {
92 var_class_name = p0 == NULL ? "null" : p0->type->name;
93 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
94 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 28);
95 show_backtrace(1);
96 }
97 var_item = p0;
98 var2 = 0;
99 var_i = var2;
100 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
101 var_l = var3;
102 for(;;) {
103 { /* Inline kernel#Int#< (var_i,var_l) */
104 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
105 /* <var_l:Int> isa OTHER */
106 var6 = 1; /* easy <var_l:Int> isa OTHER*/
107 if (!var6) {
108 var_class_name9 = type_kernel__Int.name;
109 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
110 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
111 show_backtrace(1);
112 }
113 var10 = var_i < var_l;
114 var4 = var10;
115 goto RET_LABEL5;
116 RET_LABEL5:(void)0;
117 }
118 if (!var4) break;
119 var11 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
120 if (var11 == NULL) {
121 var12 = (var_item == NULL);
122 } else {
123 var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var_item) /* == on <var11:nullable Object>*/;
124 }
125 if (var12){
126 var13 = 1;
127 var = var13;
128 goto RET_LABEL;
129 } else {
130 }
131 var14 = 1;
132 { /* Inline kernel#Int#+ (var_i,var14) */
133 var17 = var_i + var14;
134 var15 = var17;
135 goto RET_LABEL16;
136 RET_LABEL16:(void)0;
137 }
138 var_i = var15;
139 CONTINUE_label: (void)0;
140 }
141 BREAK_label: (void)0;
142 var18 = 0;
143 var = var18;
144 goto RET_LABEL;
145 RET_LABEL:;
146 return var;
147 }
148 /* method array#AbstractArrayRead#has for (self: Object, nullable Object): Bool */
149 short int VIRTUAL_array__AbstractArrayRead__has(val* self, val* p0) {
150 short int var /* : Bool */;
151 short int var1 /* : Bool */;
152 var1 = array__AbstractArrayRead__has(self, p0);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method array#AbstractArrayRead#has_only for (self: AbstractArrayRead[nullable Object], nullable Object): Bool */
158 short int array__AbstractArrayRead__has_only(val* self, val* p0) {
159 short int var /* : Bool */;
160 short int var1 /* : Bool */;
161 int cltype;
162 int idtype;
163 const struct type* type_struct;
164 short int is_nullable;
165 const char* var_class_name;
166 val* var_item /* var item: nullable Object */;
167 long var2 /* : Int */;
168 long var_i /* var i: Int */;
169 long var3 /* : Int */;
170 long var_l /* var l: Int */;
171 short int var4 /* : Bool */;
172 short int var6 /* : Bool */;
173 int cltype7;
174 int idtype8;
175 const char* var_class_name9;
176 short int var10 /* : Bool */;
177 val* var11 /* : nullable Object */;
178 short int var12 /* : Bool */;
179 short int var13 /* : Bool */;
180 long var14 /* : Int */;
181 long var15 /* : Int */;
182 long var17 /* : Int */;
183 short int var18 /* : Bool */;
184 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
185 /* <p0:nullable Object> isa Collection#0 */
186 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
187 cltype = type_struct->color;
188 idtype = type_struct->id;
189 is_nullable = type_struct->is_nullable;
190 if(p0 == NULL) {
191 var1 = is_nullable;
192 } else {
193 if(cltype >= p0->type->table_size) {
194 var1 = 0;
195 } else {
196 var1 = p0->type->type_table[cltype] == idtype;
197 }
198 }
199 if (!var1) {
200 var_class_name = p0 == NULL ? "null" : p0->type->name;
201 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
202 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 39);
203 show_backtrace(1);
204 }
205 var_item = p0;
206 var2 = 0;
207 var_i = var2;
208 var3 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
209 var_l = var3;
210 for(;;) {
211 { /* Inline kernel#Int#< (var_i,var_l) */
212 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
213 /* <var_l:Int> isa OTHER */
214 var6 = 1; /* easy <var_l:Int> isa OTHER*/
215 if (!var6) {
216 var_class_name9 = type_kernel__Int.name;
217 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
218 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
219 show_backtrace(1);
220 }
221 var10 = var_i < var_l;
222 var4 = var10;
223 goto RET_LABEL5;
224 RET_LABEL5:(void)0;
225 }
226 if (!var4) break;
227 var11 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
228 if (var11 == NULL) {
229 var12 = (var_item != NULL);
230 } else {
231 var12 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___33d_61d]))(var11, var_item) /* != on <var11:nullable Object>*/;
232 }
233 if (var12){
234 var13 = 0;
235 var = var13;
236 goto RET_LABEL;
237 } else {
238 }
239 var14 = 1;
240 { /* Inline kernel#Int#+ (var_i,var14) */
241 var17 = var_i + var14;
242 var15 = var17;
243 goto RET_LABEL16;
244 RET_LABEL16:(void)0;
245 }
246 var_i = var15;
247 CONTINUE_label: (void)0;
248 }
249 BREAK_label: (void)0;
250 var18 = 1;
251 var = var18;
252 goto RET_LABEL;
253 RET_LABEL:;
254 return var;
255 }
256 /* method array#AbstractArrayRead#has_only for (self: Object, nullable Object): Bool */
257 short int VIRTUAL_array__AbstractArrayRead__has_only(val* self, val* p0) {
258 short int var /* : Bool */;
259 short int var1 /* : Bool */;
260 var1 = array__AbstractArrayRead__has_only(self, p0);
261 var = var1;
262 RET_LABEL:;
263 return var;
264 }
265 /* method array#AbstractArrayRead#count for (self: AbstractArrayRead[nullable Object], nullable Object): Int */
266 long array__AbstractArrayRead__count(val* self, val* p0) {
267 long var /* : Int */;
268 short int var1 /* : Bool */;
269 int cltype;
270 int idtype;
271 const struct type* type_struct;
272 short int is_nullable;
273 const char* var_class_name;
274 val* var_item /* var item: nullable Object */;
275 long var2 /* : Int */;
276 long var_res /* var res: Int */;
277 long var3 /* : Int */;
278 long var_i /* var i: Int */;
279 long var4 /* : Int */;
280 long var_l /* var l: Int */;
281 short int var5 /* : Bool */;
282 short int var7 /* : Bool */;
283 int cltype8;
284 int idtype9;
285 const char* var_class_name10;
286 short int var11 /* : Bool */;
287 val* var12 /* : nullable Object */;
288 short int var13 /* : Bool */;
289 long var14 /* : Int */;
290 long var15 /* : Int */;
291 long var17 /* : Int */;
292 long var18 /* : Int */;
293 long var19 /* : Int */;
294 long var21 /* : Int */;
295 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
296 /* <p0:nullable Object> isa Collection#0 */
297 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
298 cltype = type_struct->color;
299 idtype = type_struct->id;
300 is_nullable = type_struct->is_nullable;
301 if(p0 == NULL) {
302 var1 = is_nullable;
303 } else {
304 if(cltype >= p0->type->table_size) {
305 var1 = 0;
306 } else {
307 var1 = p0->type->type_table[cltype] == idtype;
308 }
309 }
310 if (!var1) {
311 var_class_name = p0 == NULL ? "null" : p0->type->name;
312 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
313 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 50);
314 show_backtrace(1);
315 }
316 var_item = p0;
317 var2 = 0;
318 var_res = var2;
319 var3 = 0;
320 var_i = var3;
321 var4 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
322 var_l = var4;
323 for(;;) {
324 { /* Inline kernel#Int#< (var_i,var_l) */
325 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
326 /* <var_l:Int> isa OTHER */
327 var7 = 1; /* easy <var_l:Int> isa OTHER*/
328 if (!var7) {
329 var_class_name10 = type_kernel__Int.name;
330 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
331 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
332 show_backtrace(1);
333 }
334 var11 = var_i < var_l;
335 var5 = var11;
336 goto RET_LABEL6;
337 RET_LABEL6:(void)0;
338 }
339 if (!var5) break;
340 var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
341 if (var12 == NULL) {
342 var13 = (var_item == NULL);
343 } else {
344 var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var_item) /* == on <var12:nullable Object>*/;
345 }
346 if (var13){
347 var14 = 1;
348 { /* Inline kernel#Int#+ (var_res,var14) */
349 var17 = var_res + var14;
350 var15 = var17;
351 goto RET_LABEL16;
352 RET_LABEL16:(void)0;
353 }
354 var_res = var15;
355 } else {
356 }
357 var18 = 1;
358 { /* Inline kernel#Int#+ (var_i,var18) */
359 var21 = var_i + var18;
360 var19 = var21;
361 goto RET_LABEL20;
362 RET_LABEL20:(void)0;
363 }
364 var_i = var19;
365 CONTINUE_label: (void)0;
366 }
367 BREAK_label: (void)0;
368 var = var_res;
369 goto RET_LABEL;
370 RET_LABEL:;
371 return var;
372 }
373 /* method array#AbstractArrayRead#count for (self: Object, nullable Object): Int */
374 long VIRTUAL_array__AbstractArrayRead__count(val* self, val* p0) {
375 long var /* : Int */;
376 long var1 /* : Int */;
377 var1 = array__AbstractArrayRead__count(self, p0);
378 var = var1;
379 RET_LABEL:;
380 return var;
381 }
382 /* method array#AbstractArrayRead#index_of for (self: AbstractArrayRead[nullable Object], nullable Object): Int */
383 long array__AbstractArrayRead__index_of(val* self, val* p0) {
384 long var /* : Int */;
385 short int var1 /* : Bool */;
386 int cltype;
387 int idtype;
388 const struct type* type_struct;
389 short int is_nullable;
390 const char* var_class_name;
391 val* var_item /* var item: nullable Object */;
392 long var2 /* : Int */;
393 long var3 /* : Int */;
394 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa SequenceRead#0 */
395 /* <p0:nullable Object> isa SequenceRead#0 */
396 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SequenceRead_FT0];
397 cltype = type_struct->color;
398 idtype = type_struct->id;
399 is_nullable = type_struct->is_nullable;
400 if(p0 == NULL) {
401 var1 = is_nullable;
402 } else {
403 if(cltype >= p0->type->table_size) {
404 var1 = 0;
405 } else {
406 var1 = p0->type->type_table[cltype] == idtype;
407 }
408 }
409 if (!var1) {
410 var_class_name = p0 == NULL ? "null" : p0->type->name;
411 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SequenceRead#0", var_class_name);
412 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 62);
413 show_backtrace(1);
414 }
415 var_item = p0;
416 var2 = 0;
417 var3 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__index_of_from]))(self, var_item, var2) /* index_of_from on <self:AbstractArrayRead[nullable Object]>*/;
418 var = var3;
419 goto RET_LABEL;
420 RET_LABEL:;
421 return var;
422 }
423 /* method array#AbstractArrayRead#index_of for (self: Object, nullable Object): Int */
424 long VIRTUAL_array__AbstractArrayRead__index_of(val* self, val* p0) {
425 long var /* : Int */;
426 long var1 /* : Int */;
427 var1 = array__AbstractArrayRead__index_of(self, p0);
428 var = var1;
429 RET_LABEL:;
430 return var;
431 }
432 /* method array#AbstractArrayRead#last_index_of for (self: AbstractArrayRead[nullable Object], nullable Object): Int */
433 long array__AbstractArrayRead__last_index_of(val* self, val* p0) {
434 long var /* : Int */;
435 short int var1 /* : Bool */;
436 int cltype;
437 int idtype;
438 const struct type* type_struct;
439 short int is_nullable;
440 const char* var_class_name;
441 val* var_item /* var item: nullable Object */;
442 long var2 /* : Int */;
443 long var3 /* : Int */;
444 long var4 /* : Int */;
445 long var6 /* : Int */;
446 long var7 /* : Int */;
447 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
448 /* <p0:nullable Object> isa AbstractArrayRead#0 */
449 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
450 cltype = type_struct->color;
451 idtype = type_struct->id;
452 is_nullable = type_struct->is_nullable;
453 if(p0 == NULL) {
454 var1 = is_nullable;
455 } else {
456 if(cltype >= p0->type->table_size) {
457 var1 = 0;
458 } else {
459 var1 = p0->type->type_table[cltype] == idtype;
460 }
461 }
462 if (!var1) {
463 var_class_name = p0 == NULL ? "null" : p0->type->name;
464 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
465 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 64);
466 show_backtrace(1);
467 }
468 var_item = p0;
469 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
470 var3 = 1;
471 { /* Inline kernel#Int#- (var2,var3) */
472 var6 = var2 - var3;
473 var4 = var6;
474 goto RET_LABEL5;
475 RET_LABEL5:(void)0;
476 }
477 var7 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var_item, var4) /* last_index_of_from on <self:AbstractArrayRead[nullable Object]>*/;
478 var = var7;
479 goto RET_LABEL;
480 RET_LABEL:;
481 return var;
482 }
483 /* method array#AbstractArrayRead#last_index_of for (self: Object, nullable Object): Int */
484 long VIRTUAL_array__AbstractArrayRead__last_index_of(val* self, val* p0) {
485 long var /* : Int */;
486 long var1 /* : Int */;
487 var1 = array__AbstractArrayRead__last_index_of(self, p0);
488 var = var1;
489 RET_LABEL:;
490 return var;
491 }
492 /* method array#AbstractArrayRead#index_of_from for (self: AbstractArrayRead[nullable Object], nullable Object, Int): Int */
493 long array__AbstractArrayRead__index_of_from(val* self, val* p0, long p1) {
494 long var /* : Int */;
495 short int var1 /* : Bool */;
496 int cltype;
497 int idtype;
498 const struct type* type_struct;
499 short int is_nullable;
500 const char* var_class_name;
501 val* var_item /* var item: nullable Object */;
502 long var_pos /* var pos: Int */;
503 long var_i /* var i: Int */;
504 long var2 /* : Int */;
505 long var_len /* var len: Int */;
506 short int var3 /* : Bool */;
507 short int var5 /* : Bool */;
508 int cltype6;
509 int idtype7;
510 const char* var_class_name8;
511 short int var9 /* : Bool */;
512 val* var10 /* : nullable Object */;
513 short int var11 /* : Bool */;
514 long var12 /* : Int */;
515 long var13 /* : Int */;
516 long var15 /* : Int */;
517 long var16 /* : Int */;
518 long var17 /* : Int */;
519 long var19 /* : Int */;
520 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
521 /* <p0:nullable Object> isa AbstractArrayRead#0 */
522 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
523 cltype = type_struct->color;
524 idtype = type_struct->id;
525 is_nullable = type_struct->is_nullable;
526 if(p0 == NULL) {
527 var1 = is_nullable;
528 } else {
529 if(cltype >= p0->type->table_size) {
530 var1 = 0;
531 } else {
532 var1 = p0->type->type_table[cltype] == idtype;
533 }
534 }
535 if (!var1) {
536 var_class_name = p0 == NULL ? "null" : p0->type->name;
537 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
538 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 68);
539 show_backtrace(1);
540 }
541 var_item = p0;
542 var_pos = p1;
543 var_i = var_pos;
544 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
545 var_len = var2;
546 for(;;) {
547 { /* Inline kernel#Int#< (var_i,var_len) */
548 /* Covariant cast for argument 0 (i) <var_len:Int> isa OTHER */
549 /* <var_len:Int> isa OTHER */
550 var5 = 1; /* easy <var_len:Int> isa OTHER*/
551 if (!var5) {
552 var_class_name8 = type_kernel__Int.name;
553 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
554 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
555 show_backtrace(1);
556 }
557 var9 = var_i < var_len;
558 var3 = var9;
559 goto RET_LABEL4;
560 RET_LABEL4:(void)0;
561 }
562 if (!var3) break;
563 var10 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
564 if (var10 == NULL) {
565 var11 = (var_item == NULL);
566 } else {
567 var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_item) /* == on <var10:nullable Object>*/;
568 }
569 if (var11){
570 var = var_i;
571 goto RET_LABEL;
572 } else {
573 }
574 var12 = 1;
575 { /* Inline kernel#Int#+ (var_i,var12) */
576 var15 = var_i + var12;
577 var13 = var15;
578 goto RET_LABEL14;
579 RET_LABEL14:(void)0;
580 }
581 var_i = var13;
582 CONTINUE_label: (void)0;
583 }
584 BREAK_label: (void)0;
585 var16 = 1;
586 { /* Inline kernel#Int#unary - (var16) */
587 var19 = -var16;
588 var17 = var19;
589 goto RET_LABEL18;
590 RET_LABEL18:(void)0;
591 }
592 var = var17;
593 goto RET_LABEL;
594 RET_LABEL:;
595 return var;
596 }
597 /* method array#AbstractArrayRead#index_of_from for (self: Object, nullable Object, Int): Int */
598 long VIRTUAL_array__AbstractArrayRead__index_of_from(val* self, val* p0, long p1) {
599 long var /* : Int */;
600 long var1 /* : Int */;
601 var1 = array__AbstractArrayRead__index_of_from(self, p0, p1);
602 var = var1;
603 RET_LABEL:;
604 return var;
605 }
606 /* method array#AbstractArrayRead#last_index_of_from for (self: AbstractArrayRead[nullable Object], nullable Object, Int): Int */
607 long array__AbstractArrayRead__last_index_of_from(val* self, val* p0, long p1) {
608 long var /* : Int */;
609 short int var1 /* : Bool */;
610 int cltype;
611 int idtype;
612 const struct type* type_struct;
613 short int is_nullable;
614 const char* var_class_name;
615 val* var_item /* var item: nullable Object */;
616 long var_pos /* var pos: Int */;
617 long var_i /* var i: Int */;
618 long var2 /* : Int */;
619 short int var3 /* : Bool */;
620 short int var5 /* : Bool */;
621 int cltype6;
622 int idtype7;
623 const char* var_class_name8;
624 short int var9 /* : Bool */;
625 val* var10 /* : nullable Object */;
626 short int var11 /* : Bool */;
627 long var12 /* : Int */;
628 long var13 /* : Int */;
629 long var15 /* : Int */;
630 long var16 /* : Int */;
631 long var17 /* : Int */;
632 long var19 /* : Int */;
633 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArrayRead#0 */
634 /* <p0:nullable Object> isa AbstractArrayRead#0 */
635 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayRead_FT0];
636 cltype = type_struct->color;
637 idtype = type_struct->id;
638 is_nullable = type_struct->is_nullable;
639 if(p0 == NULL) {
640 var1 = is_nullable;
641 } else {
642 if(cltype >= p0->type->table_size) {
643 var1 = 0;
644 } else {
645 var1 = p0->type->type_table[cltype] == idtype;
646 }
647 }
648 if (!var1) {
649 var_class_name = p0 == NULL ? "null" : p0->type->name;
650 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead#0", var_class_name);
651 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 83);
652 show_backtrace(1);
653 }
654 var_item = p0;
655 var_pos = p1;
656 var_i = var_pos;
657 for(;;) {
658 var2 = 0;
659 { /* Inline kernel#Int#>= (var_i,var2) */
660 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
661 /* <var2:Int> isa OTHER */
662 var5 = 1; /* easy <var2:Int> isa OTHER*/
663 if (!var5) {
664 var_class_name8 = type_kernel__Int.name;
665 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
666 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
667 show_backtrace(1);
668 }
669 var9 = var_i >= var2;
670 var3 = var9;
671 goto RET_LABEL4;
672 RET_LABEL4:(void)0;
673 }
674 if (!var3) break;
675 var10 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
676 if (var10 == NULL) {
677 var11 = (var_item == NULL);
678 } else {
679 var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_kernel__Object___61d_61d]))(var10, var_item) /* == on <var10:nullable Object>*/;
680 }
681 if (var11){
682 var = var_i;
683 goto RET_LABEL;
684 } else {
685 var12 = 1;
686 { /* Inline kernel#Int#- (var_i,var12) */
687 var15 = var_i - var12;
688 var13 = var15;
689 goto RET_LABEL14;
690 RET_LABEL14:(void)0;
691 }
692 var_i = var13;
693 }
694 CONTINUE_label: (void)0;
695 }
696 BREAK_label: (void)0;
697 var16 = 1;
698 { /* Inline kernel#Int#unary - (var16) */
699 var19 = -var16;
700 var17 = var19;
701 goto RET_LABEL18;
702 RET_LABEL18:(void)0;
703 }
704 var = var17;
705 goto RET_LABEL;
706 RET_LABEL:;
707 return var;
708 }
709 /* method array#AbstractArrayRead#last_index_of_from for (self: Object, nullable Object, Int): Int */
710 long VIRTUAL_array__AbstractArrayRead__last_index_of_from(val* self, val* p0, long p1) {
711 long var /* : Int */;
712 long var1 /* : Int */;
713 var1 = array__AbstractArrayRead__last_index_of_from(self, p0, p1);
714 var = var1;
715 RET_LABEL:;
716 return var;
717 }
718 /* method array#AbstractArrayRead#reversed for (self: AbstractArrayRead[nullable Object]): Array[nullable Object] */
719 val* array__AbstractArrayRead__reversed(val* self) {
720 val* var /* : Array[nullable Object] */;
721 long var1 /* : Int */;
722 long var_cmp /* var cmp: Int */;
723 val* var2 /* : Array[nullable Object] */;
724 val* var_result /* var result: Array[nullable Object] */;
725 long var3 /* : Int */;
726 short int var4 /* : Bool */;
727 short int var6 /* : Bool */;
728 int cltype;
729 int idtype;
730 const char* var_class_name;
731 short int var7 /* : Bool */;
732 long var8 /* : Int */;
733 long var9 /* : Int */;
734 long var11 /* : Int */;
735 val* var12 /* : nullable Object */;
736 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:AbstractArrayRead[nullable Object]> */
737 var_cmp = var1;
738 var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__AbstractArrayRead_FT0]);
739 ((void (*)(val*, long))(var2->class->vft[COLOR_array__Array__with_capacity]))(var2, var_cmp) /* with_capacity on <var2:Array[nullable Object]>*/;
740 var_result = var2;
741 for(;;) {
742 var3 = 0;
743 { /* Inline kernel#Int#> (var_cmp,var3) */
744 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
745 /* <var3:Int> isa OTHER */
746 var6 = 1; /* easy <var3:Int> isa OTHER*/
747 if (!var6) {
748 var_class_name = type_kernel__Int.name;
749 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
750 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
751 show_backtrace(1);
752 }
753 var7 = var_cmp > var3;
754 var4 = var7;
755 goto RET_LABEL5;
756 RET_LABEL5:(void)0;
757 }
758 if (!var4) break;
759 var8 = 1;
760 { /* Inline kernel#Int#- (var_cmp,var8) */
761 var11 = var_cmp - var8;
762 var9 = var11;
763 goto RET_LABEL10;
764 RET_LABEL10:(void)0;
765 }
766 var_cmp = var9;
767 var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_cmp) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
768 ((void (*)(val*, val*))(var_result->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_result, var12) /* add on <var_result:Array[nullable Object]>*/;
769 CONTINUE_label: (void)0;
770 }
771 BREAK_label: (void)0;
772 var = var_result;
773 goto RET_LABEL;
774 RET_LABEL:;
775 return var;
776 }
777 /* method array#AbstractArrayRead#reversed for (self: Object): Array[nullable Object] */
778 val* VIRTUAL_array__AbstractArrayRead__reversed(val* self) {
779 val* var /* : Array[nullable Object] */;
780 val* var1 /* : Array[nullable Object] */;
781 var1 = array__AbstractArrayRead__reversed(self);
782 var = var1;
783 RET_LABEL:;
784 return var;
785 }
786 /* method array#AbstractArrayRead#copy_to for (self: AbstractArrayRead[nullable Object], Int, Int, AbstractArray[nullable Object], Int) */
787 void array__AbstractArrayRead__copy_to(val* self, long p0, long p1, val* p2, long p3) {
788 short int var /* : Bool */;
789 int cltype;
790 int idtype;
791 const struct type* type_struct;
792 const char* var_class_name;
793 long var_start /* var start: Int */;
794 long var_len /* var len: Int */;
795 val* var_dest /* var dest: AbstractArray[nullable Object] */;
796 long var_new_start /* var new_start: Int */;
797 long var_i /* var i: Int */;
798 long var1 /* : Int */;
799 short int var2 /* : Bool */;
800 short int var4 /* : Bool */;
801 int cltype5;
802 int idtype6;
803 const char* var_class_name7;
804 short int var8 /* : Bool */;
805 long var9 /* : Int */;
806 long var10 /* : Int */;
807 long var12 /* : Int */;
808 long var13 /* : Int */;
809 long var15 /* : Int */;
810 long var16 /* : Int */;
811 long var18 /* : Int */;
812 val* var19 /* : nullable Object */;
813 /* Covariant cast for argument 2 (dest) <p2:AbstractArray[nullable Object]> isa AbstractArray[AbstractArrayRead#0] */
814 /* <p2:AbstractArray[nullable Object]> isa AbstractArray[AbstractArrayRead#0] */
815 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayarray__AbstractArrayRead_FT0];
816 cltype = type_struct->color;
817 idtype = type_struct->id;
818 if(cltype >= p2->type->table_size) {
819 var = 0;
820 } else {
821 var = p2->type->type_table[cltype] == idtype;
822 }
823 if (!var) {
824 var_class_name = p2 == NULL ? "null" : p2->type->name;
825 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArray[AbstractArrayRead#0]", var_class_name);
826 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 112);
827 show_backtrace(1);
828 }
829 var_start = p0;
830 var_len = p1;
831 var_dest = p2;
832 var_new_start = p3;
833 var_i = var_len;
834 for(;;) {
835 var1 = 0;
836 { /* Inline kernel#Int#> (var_i,var1) */
837 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
838 /* <var1:Int> isa OTHER */
839 var4 = 1; /* easy <var1:Int> isa OTHER*/
840 if (!var4) {
841 var_class_name7 = type_kernel__Int.name;
842 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
843 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
844 show_backtrace(1);
845 }
846 var8 = var_i > var1;
847 var2 = var8;
848 goto RET_LABEL3;
849 RET_LABEL3:(void)0;
850 }
851 if (!var2) break;
852 var9 = 1;
853 { /* Inline kernel#Int#- (var_i,var9) */
854 var12 = var_i - var9;
855 var10 = var12;
856 goto RET_LABEL11;
857 RET_LABEL11:(void)0;
858 }
859 var_i = var10;
860 { /* Inline kernel#Int#+ (var_new_start,var_i) */
861 var15 = var_new_start + var_i;
862 var13 = var15;
863 goto RET_LABEL14;
864 RET_LABEL14:(void)0;
865 }
866 { /* Inline kernel#Int#+ (var_start,var_i) */
867 var18 = var_start + var_i;
868 var16 = var18;
869 goto RET_LABEL17;
870 RET_LABEL17:(void)0;
871 }
872 var19 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var16) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
873 ((void (*)(val*, long, val*))(var_dest->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_dest, var13, var19) /* []= on <var_dest:AbstractArray[nullable Object]>*/;
874 CONTINUE_label: (void)0;
875 }
876 BREAK_label: (void)0;
877 RET_LABEL:;
878 }
879 /* method array#AbstractArrayRead#copy_to for (self: Object, Int, Int, AbstractArray[nullable Object], Int) */
880 void VIRTUAL_array__AbstractArrayRead__copy_to(val* self, long p0, long p1, val* p2, long p3) {
881 array__AbstractArrayRead__copy_to(self, p0, p1, p2, p3);
882 RET_LABEL:;
883 }
884 /* method array#AbstractArrayRead#output for (self: AbstractArrayRead[nullable Object]) */
885 void array__AbstractArrayRead__output(val* self) {
886 long var /* : Int */;
887 long var_i /* var i: Int */;
888 long var1 /* : Int */;
889 long var_l /* var l: Int */;
890 short int var2 /* : Bool */;
891 short int var4 /* : Bool */;
892 int cltype;
893 int idtype;
894 const char* var_class_name;
895 short int var5 /* : Bool */;
896 val* var6 /* : nullable Object */;
897 val* var_e /* var e: nullable Object */;
898 val* var7 /* : null */;
899 short int var8 /* : Bool */;
900 long var9 /* : Int */;
901 long var10 /* : Int */;
902 long var12 /* : Int */;
903 var = 0;
904 var_i = var;
905 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArrayRead[nullable Object]>*/;
906 var_l = var1;
907 for(;;) {
908 { /* Inline kernel#Int#< (var_i,var_l) */
909 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
910 /* <var_l:Int> isa OTHER */
911 var4 = 1; /* easy <var_l:Int> isa OTHER*/
912 if (!var4) {
913 var_class_name = type_kernel__Int.name;
914 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
915 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
916 show_backtrace(1);
917 }
918 var5 = var_i < var_l;
919 var2 = var5;
920 goto RET_LABEL3;
921 RET_LABEL3:(void)0;
922 }
923 if (!var2) break;
924 var6 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArrayRead[nullable Object]>*/;
925 var_e = var6;
926 var7 = NULL;
927 if (var_e == NULL) {
928 var8 = 0; /* is null */
929 } else {
930 var8 = 1; /* arg is null and recv is not */
931 }
932 if (var8){
933 if (var_e == NULL) {
934 fprintf(stderr, "Runtime error: %s", "Receiver is null");
935 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 134);
936 show_backtrace(1);
937 } else {
938 ((void (*)(val*))(var_e->class->vft[COLOR_kernel__Object__output]))(var_e) /* output on <var_e:nullable Object>*/;
939 }
940 } else {
941 }
942 var9 = 1;
943 { /* Inline kernel#Int#+ (var_i,var9) */
944 var12 = var_i + var9;
945 var10 = var12;
946 goto RET_LABEL11;
947 RET_LABEL11:(void)0;
948 }
949 var_i = var10;
950 CONTINUE_label: (void)0;
951 }
952 BREAK_label: (void)0;
953 RET_LABEL:;
954 }
955 /* method array#AbstractArrayRead#output for (self: Object) */
956 void VIRTUAL_array__AbstractArrayRead__output(val* self) {
957 array__AbstractArrayRead__output(self);
958 RET_LABEL:;
959 }
960 /* method array#AbstractArrayRead#iterator for (self: AbstractArrayRead[nullable Object]): ArrayIterator[nullable Object] */
961 val* array__AbstractArrayRead__iterator(val* self) {
962 val* var /* : ArrayIterator[nullable Object] */;
963 val* var1 /* : ArrayIterator[nullable Object] */;
964 var1 = NEW_array__ArrayIterator(self->type->resolution_table->types[COLOR_array__ArrayIteratorarray__AbstractArrayRead_FT0]);
965 ((void (*)(val*, val*))(var1->class->vft[COLOR_array__ArrayIterator__init]))(var1, self) /* init on <var1:ArrayIterator[nullable Object]>*/;
966 var = var1;
967 goto RET_LABEL;
968 RET_LABEL:;
969 return var;
970 }
971 /* method array#AbstractArrayRead#iterator for (self: Object): Iterator[nullable Object] */
972 val* VIRTUAL_array__AbstractArrayRead__iterator(val* self) {
973 val* var /* : Iterator[nullable Object] */;
974 val* var1 /* : ArrayIterator[nullable Object] */;
975 var1 = array__AbstractArrayRead__iterator(self);
976 var = var1;
977 RET_LABEL:;
978 return var;
979 }
980 /* method array#AbstractArrayRead#init for (self: AbstractArrayRead[nullable Object]) */
981 void array__AbstractArrayRead__init(val* self) {
982 RET_LABEL:;
983 }
984 /* method array#AbstractArrayRead#init for (self: Object) */
985 void VIRTUAL_array__AbstractArrayRead__init(val* self) {
986 array__AbstractArrayRead__init(self);
987 RET_LABEL:;
988 }
989 /* method array#AbstractArray#enlarge for (self: AbstractArray[nullable Object], Int) */
990 void array__AbstractArray__enlarge(val* self, long p0) {
991 const char* var_class_name;
992 var_class_name = self == NULL ? "null" : self->type->name;
993 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "enlarge", var_class_name);
994 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 147);
995 show_backtrace(1);
996 RET_LABEL:;
997 }
998 /* method array#AbstractArray#enlarge for (self: Object, Int) */
999 void VIRTUAL_array__AbstractArray__enlarge(val* self, long p0) {
1000 array__AbstractArray__enlarge(self, p0);
1001 RET_LABEL:;
1002 }
1003 /* method array#AbstractArray#push for (self: AbstractArray[nullable Object], nullable Object) */
1004 void array__AbstractArray__push(val* self, val* p0) {
1005 short int var /* : Bool */;
1006 int cltype;
1007 int idtype;
1008 const struct type* type_struct;
1009 short int is_nullable;
1010 const char* var_class_name;
1011 val* var_item /* var item: nullable Object */;
1012 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Sequence#0 */
1013 /* <p0:nullable Object> isa Sequence#0 */
1014 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
1015 cltype = type_struct->color;
1016 idtype = type_struct->id;
1017 is_nullable = type_struct->is_nullable;
1018 if(p0 == NULL) {
1019 var = is_nullable;
1020 } else {
1021 if(cltype >= p0->type->table_size) {
1022 var = 0;
1023 } else {
1024 var = p0->type->type_table[cltype] == idtype;
1025 }
1026 }
1027 if (!var) {
1028 var_class_name = p0 == NULL ? "null" : p0->type->name;
1029 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
1030 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 152);
1031 show_backtrace(1);
1032 }
1033 var_item = p0;
1034 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(self, var_item) /* add on <self:AbstractArray[nullable Object]>*/;
1035 RET_LABEL:;
1036 }
1037 /* method array#AbstractArray#push for (self: Object, nullable Object) */
1038 void VIRTUAL_array__AbstractArray__push(val* self, val* p0) {
1039 array__AbstractArray__push(self, p0);
1040 RET_LABEL:;
1041 }
1042 /* method array#AbstractArray#pop for (self: AbstractArray[nullable Object]): nullable Object */
1043 val* array__AbstractArray__pop(val* self) {
1044 val* var /* : nullable Object */;
1045 short int var1 /* : Bool */;
1046 short int var2 /* : Bool */;
1047 val* var3 /* : nullable Object */;
1048 val* var_r /* var r: nullable Object */;
1049 val* var_ /* var : AbstractArray[nullable Object] */;
1050 long var4 /* : Int */;
1051 long var5 /* : Int */;
1052 long var6 /* : Int */;
1053 long var8 /* : Int */;
1054 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:AbstractArray[nullable Object]>*/;
1055 var2 = !var1;
1056 if (!var2) {
1057 fprintf(stderr, "Runtime error: %s", "Assert \'not_empty\' failed");
1058 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 156);
1059 show_backtrace(1);
1060 }
1061 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__SequenceRead__last]))(self) /* last on <self:AbstractArray[nullable Object]>*/;
1062 var_r = var3;
1063 var_ = self;
1064 var4 = var_->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_:AbstractArray[nullable Object]> */
1065 var5 = 1;
1066 { /* Inline kernel#Int#- (var4,var5) */
1067 var8 = var4 - var5;
1068 var6 = var8;
1069 goto RET_LABEL7;
1070 RET_LABEL7:(void)0;
1071 }
1072 var_->attrs[COLOR_array__AbstractArrayRead___length].l = var6; /* _length on <var_:AbstractArray[nullable Object]> */
1073 var = var_r;
1074 goto RET_LABEL;
1075 RET_LABEL:;
1076 return var;
1077 }
1078 /* method array#AbstractArray#pop for (self: Object): nullable Object */
1079 val* VIRTUAL_array__AbstractArray__pop(val* self) {
1080 val* var /* : nullable Object */;
1081 val* var1 /* : nullable Object */;
1082 var1 = array__AbstractArray__pop(self);
1083 var = var1;
1084 RET_LABEL:;
1085 return var;
1086 }
1087 /* method array#AbstractArray#shift for (self: AbstractArray[nullable Object]): nullable Object */
1088 val* array__AbstractArray__shift(val* self) {
1089 val* var /* : nullable Object */;
1090 short int var1 /* : Bool */;
1091 short int var2 /* : Bool */;
1092 val* var3 /* : nullable Object */;
1093 val* var_r /* var r: nullable Object */;
1094 long var4 /* : Int */;
1095 long var_i /* var i: Int */;
1096 long var5 /* : Int */;
1097 long var_l /* var l: Int */;
1098 short int var6 /* : Bool */;
1099 short int var8 /* : Bool */;
1100 int cltype;
1101 int idtype;
1102 const char* var_class_name;
1103 short int var9 /* : Bool */;
1104 long var10 /* : Int */;
1105 long var11 /* : Int */;
1106 long var13 /* : Int */;
1107 val* var14 /* : nullable Object */;
1108 long var15 /* : Int */;
1109 long var16 /* : Int */;
1110 long var18 /* : Int */;
1111 long var19 /* : Int */;
1112 long var20 /* : Int */;
1113 long var22 /* : Int */;
1114 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:AbstractArray[nullable Object]>*/;
1115 var2 = !var1;
1116 if (!var2) {
1117 fprintf(stderr, "Runtime error: %s", "Assert \'not_empty\' failed");
1118 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 164);
1119 show_backtrace(1);
1120 }
1121 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__first]))(self) /* first on <self:AbstractArray[nullable Object]>*/;
1122 var_r = var3;
1123 var4 = 1;
1124 var_i = var4;
1125 var5 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1126 var_l = var5;
1127 for(;;) {
1128 { /* Inline kernel#Int#< (var_i,var_l) */
1129 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1130 /* <var_l:Int> isa OTHER */
1131 var8 = 1; /* easy <var_l:Int> isa OTHER*/
1132 if (!var8) {
1133 var_class_name = type_kernel__Int.name;
1134 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1135 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1136 show_backtrace(1);
1137 }
1138 var9 = var_i < var_l;
1139 var6 = var9;
1140 goto RET_LABEL7;
1141 RET_LABEL7:(void)0;
1142 }
1143 if (!var6) break;
1144 var10 = 1;
1145 { /* Inline kernel#Int#- (var_i,var10) */
1146 var13 = var_i - var10;
1147 var11 = var13;
1148 goto RET_LABEL12;
1149 RET_LABEL12:(void)0;
1150 }
1151 var14 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArray[nullable Object]>*/;
1152 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var11, var14) /* []= on <self:AbstractArray[nullable Object]>*/;
1153 var15 = 1;
1154 { /* Inline kernel#Int#+ (var_i,var15) */
1155 var18 = var_i + var15;
1156 var16 = var18;
1157 goto RET_LABEL17;
1158 RET_LABEL17:(void)0;
1159 }
1160 var_i = var16;
1161 CONTINUE_label: (void)0;
1162 }
1163 BREAK_label: (void)0;
1164 var19 = 1;
1165 { /* Inline kernel#Int#- (var_l,var19) */
1166 var22 = var_l - var19;
1167 var20 = var22;
1168 goto RET_LABEL21;
1169 RET_LABEL21:(void)0;
1170 }
1171 self->attrs[COLOR_array__AbstractArrayRead___length].l = var20; /* _length on <self:AbstractArray[nullable Object]> */
1172 var = var_r;
1173 goto RET_LABEL;
1174 RET_LABEL:;
1175 return var;
1176 }
1177 /* method array#AbstractArray#shift for (self: Object): nullable Object */
1178 val* VIRTUAL_array__AbstractArray__shift(val* self) {
1179 val* var /* : nullable Object */;
1180 val* var1 /* : nullable Object */;
1181 var1 = array__AbstractArray__shift(self);
1182 var = var1;
1183 RET_LABEL:;
1184 return var;
1185 }
1186 /* method array#AbstractArray#unshift for (self: AbstractArray[nullable Object], nullable Object) */
1187 void array__AbstractArray__unshift(val* self, val* p0) {
1188 short int var /* : Bool */;
1189 int cltype;
1190 int idtype;
1191 const struct type* type_struct;
1192 short int is_nullable;
1193 const char* var_class_name;
1194 val* var_item /* var item: nullable Object */;
1195 long var1 /* : Int */;
1196 long var2 /* : Int */;
1197 long var3 /* : Int */;
1198 long var5 /* : Int */;
1199 long var_i /* var i: Int */;
1200 long var6 /* : Int */;
1201 short int var7 /* : Bool */;
1202 short int var9 /* : Bool */;
1203 int cltype10;
1204 int idtype11;
1205 const char* var_class_name12;
1206 short int var13 /* : Bool */;
1207 long var14 /* : Int */;
1208 long var15 /* : Int */;
1209 long var17 /* : Int */;
1210 val* var18 /* : nullable Object */;
1211 long var19 /* : Int */;
1212 long var20 /* : Int */;
1213 long var22 /* : Int */;
1214 long var23 /* : Int */;
1215 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Sequence#0 */
1216 /* <p0:nullable Object> isa Sequence#0 */
1217 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
1218 cltype = type_struct->color;
1219 idtype = type_struct->id;
1220 is_nullable = type_struct->is_nullable;
1221 if(p0 == NULL) {
1222 var = is_nullable;
1223 } else {
1224 if(cltype >= p0->type->table_size) {
1225 var = 0;
1226 } else {
1227 var = p0->type->type_table[cltype] == idtype;
1228 }
1229 }
1230 if (!var) {
1231 var_class_name = p0 == NULL ? "null" : p0->type->name;
1232 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
1233 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 176);
1234 show_backtrace(1);
1235 }
1236 var_item = p0;
1237 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1238 var2 = 1;
1239 { /* Inline kernel#Int#- (var1,var2) */
1240 var5 = var1 - var2;
1241 var3 = var5;
1242 goto RET_LABEL4;
1243 RET_LABEL4:(void)0;
1244 }
1245 var_i = var3;
1246 for(;;) {
1247 var6 = 0;
1248 { /* Inline kernel#Int#> (var_i,var6) */
1249 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
1250 /* <var6:Int> isa OTHER */
1251 var9 = 1; /* easy <var6:Int> isa OTHER*/
1252 if (!var9) {
1253 var_class_name12 = type_kernel__Int.name;
1254 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1255 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
1256 show_backtrace(1);
1257 }
1258 var13 = var_i > var6;
1259 var7 = var13;
1260 goto RET_LABEL8;
1261 RET_LABEL8:(void)0;
1262 }
1263 if (!var7) break;
1264 var14 = 1;
1265 { /* Inline kernel#Int#+ (var_i,var14) */
1266 var17 = var_i + var14;
1267 var15 = var17;
1268 goto RET_LABEL16;
1269 RET_LABEL16:(void)0;
1270 }
1271 var18 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_i) /* [] on <self:AbstractArray[nullable Object]>*/;
1272 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var15, var18) /* []= on <self:AbstractArray[nullable Object]>*/;
1273 var19 = 1;
1274 { /* Inline kernel#Int#- (var_i,var19) */
1275 var22 = var_i - var19;
1276 var20 = var22;
1277 goto RET_LABEL21;
1278 RET_LABEL21:(void)0;
1279 }
1280 var_i = var20;
1281 CONTINUE_label: (void)0;
1282 }
1283 BREAK_label: (void)0;
1284 var23 = 0;
1285 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var23, var_item) /* []= on <self:AbstractArray[nullable Object]>*/;
1286 RET_LABEL:;
1287 }
1288 /* method array#AbstractArray#unshift for (self: Object, nullable Object) */
1289 void VIRTUAL_array__AbstractArray__unshift(val* self, val* p0) {
1290 array__AbstractArray__unshift(self, p0);
1291 RET_LABEL:;
1292 }
1293 /* method array#AbstractArray#insert for (self: AbstractArray[nullable Object], nullable Object, Int) */
1294 void array__AbstractArray__insert(val* self, val* p0, long p1) {
1295 short int var /* : Bool */;
1296 int cltype;
1297 int idtype;
1298 const struct type* type_struct;
1299 short int is_nullable;
1300 const char* var_class_name;
1301 val* var_item /* var item: nullable Object */;
1302 long var_pos /* var pos: Int */;
1303 long var1 /* : Int */;
1304 long var2 /* : Int */;
1305 long var3 /* : Int */;
1306 long var5 /* : Int */;
1307 long var6 /* : Int */;
1308 long var7 /* : Int */;
1309 long var9 /* : Int */;
1310 long var10 /* : Int */;
1311 long var11 /* : Int */;
1312 long var13 /* : Int */;
1313 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa AbstractArray#0 */
1314 /* <p0:nullable Object> isa AbstractArray#0 */
1315 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArray_FT0];
1316 cltype = type_struct->color;
1317 idtype = type_struct->id;
1318 is_nullable = type_struct->is_nullable;
1319 if(p0 == NULL) {
1320 var = is_nullable;
1321 } else {
1322 if(cltype >= p0->type->table_size) {
1323 var = 0;
1324 } else {
1325 var = p0->type->type_table[cltype] == idtype;
1326 }
1327 }
1328 if (!var) {
1329 var_class_name = p0 == NULL ? "null" : p0->type->name;
1330 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArray#0", var_class_name);
1331 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 186);
1332 show_backtrace(1);
1333 }
1334 var_item = p0;
1335 var_pos = p1;
1336 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1337 var2 = 1;
1338 { /* Inline kernel#Int#+ (var1,var2) */
1339 var5 = var1 + var2;
1340 var3 = var5;
1341 goto RET_LABEL4;
1342 RET_LABEL4:(void)0;
1343 }
1344 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var3) /* enlarge on <self:AbstractArray[nullable Object]>*/;
1345 var6 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1346 { /* Inline kernel#Int#- (var6,var_pos) */
1347 var9 = var6 - var_pos;
1348 var7 = var9;
1349 goto RET_LABEL8;
1350 RET_LABEL8:(void)0;
1351 }
1352 var10 = 1;
1353 { /* Inline kernel#Int#+ (var_pos,var10) */
1354 var13 = var_pos + var10;
1355 var11 = var13;
1356 goto RET_LABEL12;
1357 RET_LABEL12:(void)0;
1358 }
1359 ((void (*)(val*, long, long, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__copy_to]))(self, var_pos, var7, self, var11) /* copy_to on <self:AbstractArray[nullable Object]>*/;
1360 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var_pos, var_item) /* []= on <self:AbstractArray[nullable Object]>*/;
1361 RET_LABEL:;
1362 }
1363 /* method array#AbstractArray#insert for (self: Object, nullable Object, Int) */
1364 void VIRTUAL_array__AbstractArray__insert(val* self, val* p0, long p1) {
1365 array__AbstractArray__insert(self, p0, p1);
1366 RET_LABEL:;
1367 }
1368 /* method array#AbstractArray#add for (self: AbstractArray[nullable Object], nullable Object) */
1369 void array__AbstractArray__add(val* self, val* p0) {
1370 short int var /* : Bool */;
1371 int cltype;
1372 int idtype;
1373 const struct type* type_struct;
1374 short int is_nullable;
1375 const char* var_class_name;
1376 val* var_item /* var item: nullable Object */;
1377 long var1 /* : Int */;
1378 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa SimpleCollection#0 */
1379 /* <p0:nullable Object> isa SimpleCollection#0 */
1380 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
1381 cltype = type_struct->color;
1382 idtype = type_struct->id;
1383 is_nullable = type_struct->is_nullable;
1384 if(p0 == NULL) {
1385 var = is_nullable;
1386 } else {
1387 if(cltype >= p0->type->table_size) {
1388 var = 0;
1389 } else {
1390 var = p0->type->type_table[cltype] == idtype;
1391 }
1392 }
1393 if (!var) {
1394 var_class_name = p0 == NULL ? "null" : p0->type->name;
1395 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
1396 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 198);
1397 show_backtrace(1);
1398 }
1399 var_item = p0;
1400 var1 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1401 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var1, var_item) /* []= on <self:AbstractArray[nullable Object]>*/;
1402 RET_LABEL:;
1403 }
1404 /* method array#AbstractArray#add for (self: Object, nullable Object) */
1405 void VIRTUAL_array__AbstractArray__add(val* self, val* p0) {
1406 array__AbstractArray__add(self, p0);
1407 RET_LABEL:;
1408 }
1409 /* method array#AbstractArray#clear for (self: AbstractArray[nullable Object]) */
1410 void array__AbstractArray__clear(val* self) {
1411 long var /* : Int */;
1412 var = 0;
1413 self->attrs[COLOR_array__AbstractArrayRead___length].l = var; /* _length on <self:AbstractArray[nullable Object]> */
1414 RET_LABEL:;
1415 }
1416 /* method array#AbstractArray#clear for (self: Object) */
1417 void VIRTUAL_array__AbstractArray__clear(val* self) {
1418 array__AbstractArray__clear(self);
1419 RET_LABEL:;
1420 }
1421 /* method array#AbstractArray#remove for (self: AbstractArray[nullable Object], nullable Object) */
1422 void array__AbstractArray__remove(val* self, val* p0) {
1423 short int var /* : Bool */;
1424 int cltype;
1425 int idtype;
1426 const struct type* type_struct;
1427 short int is_nullable;
1428 const char* var_class_name;
1429 val* var_item /* var item: nullable Object */;
1430 long var1 /* : Int */;
1431 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
1432 /* <p0:nullable Object> isa RemovableCollection#0 */
1433 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
1434 cltype = type_struct->color;
1435 idtype = type_struct->id;
1436 is_nullable = type_struct->is_nullable;
1437 if(p0 == NULL) {
1438 var = is_nullable;
1439 } else {
1440 if(cltype >= p0->type->table_size) {
1441 var = 0;
1442 } else {
1443 var = p0->type->type_table[cltype] == idtype;
1444 }
1445 }
1446 if (!var) {
1447 var_class_name = p0 == NULL ? "null" : p0->type->name;
1448 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
1449 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 202);
1450 show_backtrace(1);
1451 }
1452 var_item = p0;
1453 var1 = ((long (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SequenceRead__index_of]))(self, var_item) /* index_of on <self:AbstractArray[nullable Object]>*/;
1454 ((void (*)(val*, long))(self->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(self, var1) /* remove_at on <self:AbstractArray[nullable Object]>*/;
1455 RET_LABEL:;
1456 }
1457 /* method array#AbstractArray#remove for (self: Object, nullable Object) */
1458 void VIRTUAL_array__AbstractArray__remove(val* self, val* p0) {
1459 array__AbstractArray__remove(self, p0);
1460 RET_LABEL:;
1461 }
1462 /* method array#AbstractArray#remove_all for (self: AbstractArray[nullable Object], nullable Object) */
1463 void array__AbstractArray__remove_all(val* self, val* p0) {
1464 short int var /* : Bool */;
1465 int cltype;
1466 int idtype;
1467 const struct type* type_struct;
1468 short int is_nullable;
1469 const char* var_class_name;
1470 val* var_item /* var item: nullable Object */;
1471 long var1 /* : Int */;
1472 long var_i /* var i: Int */;
1473 long var2 /* : Int */;
1474 short int var3 /* : Bool */;
1475 short int var5 /* : Bool */;
1476 int cltype6;
1477 int idtype7;
1478 const char* var_class_name8;
1479 short int var9 /* : Bool */;
1480 long var10 /* : Int */;
1481 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
1482 /* <p0:nullable Object> isa RemovableCollection#0 */
1483 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
1484 cltype = type_struct->color;
1485 idtype = type_struct->id;
1486 is_nullable = type_struct->is_nullable;
1487 if(p0 == NULL) {
1488 var = is_nullable;
1489 } else {
1490 if(cltype >= p0->type->table_size) {
1491 var = 0;
1492 } else {
1493 var = p0->type->type_table[cltype] == idtype;
1494 }
1495 }
1496 if (!var) {
1497 var_class_name = p0 == NULL ? "null" : p0->type->name;
1498 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
1499 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 204);
1500 show_backtrace(1);
1501 }
1502 var_item = p0;
1503 var1 = ((long (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SequenceRead__index_of]))(self, var_item) /* index_of on <self:AbstractArray[nullable Object]>*/;
1504 var_i = var1;
1505 for(;;) {
1506 var2 = 0;
1507 { /* Inline kernel#Int#>= (var_i,var2) */
1508 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1509 /* <var2:Int> isa OTHER */
1510 var5 = 1; /* easy <var2:Int> isa OTHER*/
1511 if (!var5) {
1512 var_class_name8 = type_kernel__Int.name;
1513 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
1514 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1515 show_backtrace(1);
1516 }
1517 var9 = var_i >= var2;
1518 var3 = var9;
1519 goto RET_LABEL4;
1520 RET_LABEL4:(void)0;
1521 }
1522 if (!var3) break;
1523 ((void (*)(val*, long))(self->class->vft[COLOR_abstract_collection__Sequence__remove_at]))(self, var_i) /* remove_at on <self:AbstractArray[nullable Object]>*/;
1524 var10 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__index_of_from]))(self, var_item, var_i) /* index_of_from on <self:AbstractArray[nullable Object]>*/;
1525 var_i = var10;
1526 CONTINUE_label: (void)0;
1527 }
1528 BREAK_label: (void)0;
1529 RET_LABEL:;
1530 }
1531 /* method array#AbstractArray#remove_all for (self: Object, nullable Object) */
1532 void VIRTUAL_array__AbstractArray__remove_all(val* self, val* p0) {
1533 array__AbstractArray__remove_all(self, p0);
1534 RET_LABEL:;
1535 }
1536 /* method array#AbstractArray#remove_at for (self: AbstractArray[nullable Object], Int) */
1537 void array__AbstractArray__remove_at(val* self, long p0) {
1538 long var_i /* var i: Int */;
1539 long var /* : Int */;
1540 long var_l /* var l: Int */;
1541 short int var1 /* : Bool */;
1542 long var2 /* : Int */;
1543 short int var3 /* : Bool */;
1544 short int var5 /* : Bool */;
1545 int cltype;
1546 int idtype;
1547 const char* var_class_name;
1548 short int var6 /* : Bool */;
1549 short int var_ /* var : Bool */;
1550 short int var7 /* : Bool */;
1551 short int var9 /* : Bool */;
1552 int cltype10;
1553 int idtype11;
1554 const char* var_class_name12;
1555 short int var13 /* : Bool */;
1556 long var14 /* : Int */;
1557 long var15 /* : Int */;
1558 long var17 /* : Int */;
1559 long var_j /* var j: Int */;
1560 short int var18 /* : Bool */;
1561 short int var20 /* : Bool */;
1562 int cltype21;
1563 int idtype22;
1564 const char* var_class_name23;
1565 short int var24 /* : Bool */;
1566 long var25 /* : Int */;
1567 long var26 /* : Int */;
1568 long var28 /* : Int */;
1569 val* var29 /* : nullable Object */;
1570 long var30 /* : Int */;
1571 long var31 /* : Int */;
1572 long var33 /* : Int */;
1573 long var34 /* : Int */;
1574 long var35 /* : Int */;
1575 long var37 /* : Int */;
1576 var_i = p0;
1577 var = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:AbstractArray[nullable Object]>*/;
1578 var_l = var;
1579 var2 = 0;
1580 { /* Inline kernel#Int#>= (var_i,var2) */
1581 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1582 /* <var2:Int> isa OTHER */
1583 var5 = 1; /* easy <var2:Int> isa OTHER*/
1584 if (!var5) {
1585 var_class_name = type_kernel__Int.name;
1586 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1587 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1588 show_backtrace(1);
1589 }
1590 var6 = var_i >= var2;
1591 var3 = var6;
1592 goto RET_LABEL4;
1593 RET_LABEL4:(void)0;
1594 }
1595 var_ = var3;
1596 if (var3){
1597 { /* Inline kernel#Int#< (var_i,var_l) */
1598 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1599 /* <var_l:Int> isa OTHER */
1600 var9 = 1; /* easy <var_l:Int> isa OTHER*/
1601 if (!var9) {
1602 var_class_name12 = type_kernel__Int.name;
1603 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name12);
1604 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1605 show_backtrace(1);
1606 }
1607 var13 = var_i < var_l;
1608 var7 = var13;
1609 goto RET_LABEL8;
1610 RET_LABEL8:(void)0;
1611 }
1612 var1 = var7;
1613 } else {
1614 var1 = var_;
1615 }
1616 if (var1){
1617 var14 = 1;
1618 { /* Inline kernel#Int#+ (var_i,var14) */
1619 var17 = var_i + var14;
1620 var15 = var17;
1621 goto RET_LABEL16;
1622 RET_LABEL16:(void)0;
1623 }
1624 var_j = var15;
1625 for(;;) {
1626 { /* Inline kernel#Int#< (var_j,var_l) */
1627 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1628 /* <var_l:Int> isa OTHER */
1629 var20 = 1; /* easy <var_l:Int> isa OTHER*/
1630 if (!var20) {
1631 var_class_name23 = type_kernel__Int.name;
1632 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name23);
1633 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1634 show_backtrace(1);
1635 }
1636 var24 = var_j < var_l;
1637 var18 = var24;
1638 goto RET_LABEL19;
1639 RET_LABEL19:(void)0;
1640 }
1641 if (!var18) break;
1642 var25 = 1;
1643 { /* Inline kernel#Int#- (var_j,var25) */
1644 var28 = var_j - var25;
1645 var26 = var28;
1646 goto RET_LABEL27;
1647 RET_LABEL27:(void)0;
1648 }
1649 var29 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_j) /* [] on <self:AbstractArray[nullable Object]>*/;
1650 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var26, var29) /* []= on <self:AbstractArray[nullable Object]>*/;
1651 var30 = 1;
1652 { /* Inline kernel#Int#+ (var_j,var30) */
1653 var33 = var_j + var30;
1654 var31 = var33;
1655 goto RET_LABEL32;
1656 RET_LABEL32:(void)0;
1657 }
1658 var_j = var31;
1659 CONTINUE_label: (void)0;
1660 }
1661 BREAK_label: (void)0;
1662 var34 = 1;
1663 { /* Inline kernel#Int#- (var_l,var34) */
1664 var37 = var_l - var34;
1665 var35 = var37;
1666 goto RET_LABEL36;
1667 RET_LABEL36:(void)0;
1668 }
1669 self->attrs[COLOR_array__AbstractArrayRead___length].l = var35; /* _length on <self:AbstractArray[nullable Object]> */
1670 } else {
1671 }
1672 RET_LABEL:;
1673 }
1674 /* method array#AbstractArray#remove_at for (self: Object, Int) */
1675 void VIRTUAL_array__AbstractArray__remove_at(val* self, long p0) {
1676 array__AbstractArray__remove_at(self, p0);
1677 RET_LABEL:;
1678 }
1679 /* method array#AbstractArray#swap_at for (self: AbstractArray[nullable Object], Int, Int) */
1680 void array__AbstractArray__swap_at(val* self, long p0, long p1) {
1681 long var_a /* var a: Int */;
1682 long var_b /* var b: Int */;
1683 val* var /* : nullable Object */;
1684 val* var_e /* var e: nullable Object */;
1685 val* var1 /* : nullable Object */;
1686 var_a = p0;
1687 var_b = p1;
1688 var = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_a) /* [] on <self:AbstractArray[nullable Object]>*/;
1689 var_e = var;
1690 var1 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_b) /* [] on <self:AbstractArray[nullable Object]>*/;
1691 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var_a, var1) /* []= on <self:AbstractArray[nullable Object]>*/;
1692 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var_b, var_e) /* []= on <self:AbstractArray[nullable Object]>*/;
1693 RET_LABEL:;
1694 }
1695 /* method array#AbstractArray#swap_at for (self: Object, Int, Int) */
1696 void VIRTUAL_array__AbstractArray__swap_at(val* self, long p0, long p1) {
1697 array__AbstractArray__swap_at(self, p0, p1);
1698 RET_LABEL:;
1699 }
1700 /* method array#AbstractArray#init for (self: AbstractArray[nullable Object]) */
1701 void array__AbstractArray__init(val* self) {
1702 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArrayRead__init]))(self) /* init on <self:AbstractArray[nullable Object]>*/;
1703 RET_LABEL:;
1704 }
1705 /* method array#AbstractArray#init for (self: Object) */
1706 void VIRTUAL_array__AbstractArray__init(val* self) {
1707 array__AbstractArray__init(self);
1708 RET_LABEL:;
1709 }
1710 /* method array#Array#[] for (self: Array[nullable Object], Int): nullable Object */
1711 val* array__Array___91d_93d(val* self, long p0) {
1712 val* var /* : nullable Object */;
1713 long var_index /* var index: Int */;
1714 short int var1 /* : Bool */;
1715 long var2 /* : Int */;
1716 short int var3 /* : Bool */;
1717 short int var5 /* : Bool */;
1718 int cltype;
1719 int idtype;
1720 const char* var_class_name;
1721 short int var6 /* : Bool */;
1722 short int var_ /* var : Bool */;
1723 long var7 /* : Int */;
1724 short int var8 /* : Bool */;
1725 short int var10 /* : Bool */;
1726 int cltype11;
1727 int idtype12;
1728 const char* var_class_name13;
1729 short int var14 /* : Bool */;
1730 val* var15 /* : nullable NativeArray[nullable Object] */;
1731 val* var16 /* : nullable Object */;
1732 var_index = p0;
1733 var2 = 0;
1734 { /* Inline kernel#Int#>= (var_index,var2) */
1735 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1736 /* <var2:Int> isa OTHER */
1737 var5 = 1; /* easy <var2:Int> isa OTHER*/
1738 if (!var5) {
1739 var_class_name = type_kernel__Int.name;
1740 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1741 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1742 show_backtrace(1);
1743 }
1744 var6 = var_index >= var2;
1745 var3 = var6;
1746 goto RET_LABEL4;
1747 RET_LABEL4:(void)0;
1748 }
1749 var_ = var3;
1750 if (var3){
1751 var7 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1752 { /* Inline kernel#Int#< (var_index,var7) */
1753 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
1754 /* <var7:Int> isa OTHER */
1755 var10 = 1; /* easy <var7:Int> isa OTHER*/
1756 if (!var10) {
1757 var_class_name13 = type_kernel__Int.name;
1758 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
1759 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1760 show_backtrace(1);
1761 }
1762 var14 = var_index < var7;
1763 var8 = var14;
1764 goto RET_LABEL9;
1765 RET_LABEL9:(void)0;
1766 }
1767 var1 = var8;
1768 } else {
1769 var1 = var_;
1770 }
1771 if (!var1) {
1772 fprintf(stderr, "Runtime error: %s", "Assert \'index\' failed");
1773 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 255);
1774 show_backtrace(1);
1775 }
1776 var15 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
1777 if (var15 == NULL) {
1778 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1779 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 256);
1780 show_backtrace(1);
1781 } else {
1782 var16 = ((val* (*)(val*, long))(var15->class->vft[COLOR_array__NativeArray___91d_93d]))(var15, var_index) /* [] on <var15:nullable NativeArray[nullable Object]>*/;
1783 }
1784 var = var16;
1785 goto RET_LABEL;
1786 RET_LABEL:;
1787 return var;
1788 }
1789 /* method array#Array#[] for (self: Object, Int): nullable Object */
1790 val* VIRTUAL_array__Array___91d_93d(val* self, long p0) {
1791 val* var /* : nullable Object */;
1792 val* var1 /* : nullable Object */;
1793 var1 = array__Array___91d_93d(self, p0);
1794 var = var1;
1795 RET_LABEL:;
1796 return var;
1797 }
1798 /* method array#Array#[]= for (self: Array[nullable Object], Int, nullable Object) */
1799 void array__Array___91d_93d_61d(val* self, long p0, val* p1) {
1800 short int var /* : Bool */;
1801 int cltype;
1802 int idtype;
1803 const struct type* type_struct;
1804 short int is_nullable;
1805 const char* var_class_name;
1806 long var_index /* var index: Int */;
1807 val* var_item /* var item: nullable Object */;
1808 short int var1 /* : Bool */;
1809 long var2 /* : Int */;
1810 short int var3 /* : Bool */;
1811 short int var5 /* : Bool */;
1812 int cltype6;
1813 int idtype7;
1814 const char* var_class_name8;
1815 short int var9 /* : Bool */;
1816 short int var_ /* var : Bool */;
1817 long var10 /* : Int */;
1818 long var11 /* : Int */;
1819 long var12 /* : Int */;
1820 long var14 /* : Int */;
1821 short int var15 /* : Bool */;
1822 short int var17 /* : Bool */;
1823 int cltype18;
1824 int idtype19;
1825 const char* var_class_name20;
1826 short int var21 /* : Bool */;
1827 long var22 /* : Int */;
1828 short int var23 /* : Bool */;
1829 short int var25 /* : Bool */;
1830 int cltype26;
1831 int idtype27;
1832 const char* var_class_name28;
1833 short int var29 /* : Bool */;
1834 long var30 /* : Int */;
1835 long var31 /* : Int */;
1836 long var33 /* : Int */;
1837 long var34 /* : Int */;
1838 short int var35 /* : Bool */;
1839 short int var37 /* : Bool */;
1840 int cltype38;
1841 int idtype39;
1842 const char* var_class_name40;
1843 short int var41 /* : Bool */;
1844 long var42 /* : Int */;
1845 long var43 /* : Int */;
1846 long var45 /* : Int */;
1847 val* var46 /* : nullable NativeArray[nullable Object] */;
1848 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa Sequence#0 */
1849 /* <p1:nullable Object> isa Sequence#0 */
1850 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Sequence_FT0];
1851 cltype = type_struct->color;
1852 idtype = type_struct->id;
1853 is_nullable = type_struct->is_nullable;
1854 if(p1 == NULL) {
1855 var = is_nullable;
1856 } else {
1857 if(cltype >= p1->type->table_size) {
1858 var = 0;
1859 } else {
1860 var = p1->type->type_table[cltype] == idtype;
1861 }
1862 }
1863 if (!var) {
1864 var_class_name = p1 == NULL ? "null" : p1->type->name;
1865 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Sequence#0", var_class_name);
1866 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 259);
1867 show_backtrace(1);
1868 }
1869 var_index = p0;
1870 var_item = p1;
1871 var2 = 0;
1872 { /* Inline kernel#Int#>= (var_index,var2) */
1873 /* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
1874 /* <var2:Int> isa OTHER */
1875 var5 = 1; /* easy <var2:Int> isa OTHER*/
1876 if (!var5) {
1877 var_class_name8 = type_kernel__Int.name;
1878 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
1879 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
1880 show_backtrace(1);
1881 }
1882 var9 = var_index >= var2;
1883 var3 = var9;
1884 goto RET_LABEL4;
1885 RET_LABEL4:(void)0;
1886 }
1887 var_ = var3;
1888 if (var3){
1889 var10 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1890 var11 = 1;
1891 { /* Inline kernel#Int#+ (var10,var11) */
1892 var14 = var10 + var11;
1893 var12 = var14;
1894 goto RET_LABEL13;
1895 RET_LABEL13:(void)0;
1896 }
1897 { /* Inline kernel#Int#< (var_index,var12) */
1898 /* Covariant cast for argument 0 (i) <var12:Int> isa OTHER */
1899 /* <var12:Int> isa OTHER */
1900 var17 = 1; /* easy <var12:Int> isa OTHER*/
1901 if (!var17) {
1902 var_class_name20 = type_kernel__Int.name;
1903 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
1904 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
1905 show_backtrace(1);
1906 }
1907 var21 = var_index < var12;
1908 var15 = var21;
1909 goto RET_LABEL16;
1910 RET_LABEL16:(void)0;
1911 }
1912 var1 = var15;
1913 } else {
1914 var1 = var_;
1915 }
1916 if (!var1) {
1917 fprintf(stderr, "Runtime error: %s", "Assert \'index\' failed");
1918 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 261);
1919 show_backtrace(1);
1920 }
1921 var22 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
1922 { /* Inline kernel#Int#<= (var22,var_index) */
1923 /* Covariant cast for argument 0 (i) <var_index:Int> isa OTHER */
1924 /* <var_index:Int> isa OTHER */
1925 var25 = 1; /* easy <var_index:Int> isa OTHER*/
1926 if (!var25) {
1927 var_class_name28 = type_kernel__Int.name;
1928 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
1929 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
1930 show_backtrace(1);
1931 }
1932 var29 = var22 <= var_index;
1933 var23 = var29;
1934 goto RET_LABEL24;
1935 RET_LABEL24:(void)0;
1936 }
1937 if (var23){
1938 var30 = 1;
1939 { /* Inline kernel#Int#+ (var_index,var30) */
1940 var33 = var_index + var30;
1941 var31 = var33;
1942 goto RET_LABEL32;
1943 RET_LABEL32:(void)0;
1944 }
1945 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var31) /* enlarge on <self:Array[nullable Object]>*/;
1946 } else {
1947 }
1948 var34 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
1949 { /* Inline kernel#Int#<= (var34,var_index) */
1950 /* Covariant cast for argument 0 (i) <var_index:Int> isa OTHER */
1951 /* <var_index:Int> isa OTHER */
1952 var37 = 1; /* easy <var_index:Int> isa OTHER*/
1953 if (!var37) {
1954 var_class_name40 = type_kernel__Int.name;
1955 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
1956 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
1957 show_backtrace(1);
1958 }
1959 var41 = var34 <= var_index;
1960 var35 = var41;
1961 goto RET_LABEL36;
1962 RET_LABEL36:(void)0;
1963 }
1964 if (var35){
1965 var42 = 1;
1966 { /* Inline kernel#Int#+ (var_index,var42) */
1967 var45 = var_index + var42;
1968 var43 = var45;
1969 goto RET_LABEL44;
1970 RET_LABEL44:(void)0;
1971 }
1972 self->attrs[COLOR_array__AbstractArrayRead___length].l = var43; /* _length on <self:Array[nullable Object]> */
1973 } else {
1974 }
1975 var46 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
1976 if (var46 == NULL) {
1977 fprintf(stderr, "Runtime error: %s", "Receiver is null");
1978 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 268);
1979 show_backtrace(1);
1980 } else {
1981 ((void (*)(val*, long, val*))(var46->class->vft[COLOR_array__NativeArray___91d_93d_61d]))(var46, var_index, var_item) /* []= on <var46:nullable NativeArray[nullable Object]>*/;
1982 }
1983 RET_LABEL:;
1984 }
1985 /* method array#Array#[]= for (self: Object, Int, nullable Object) */
1986 void VIRTUAL_array__Array___91d_93d_61d(val* self, long p0, val* p1) {
1987 array__Array___91d_93d_61d(self, p0, p1);
1988 RET_LABEL:;
1989 }
1990 /* method array#Array#add for (self: Array[nullable Object], nullable Object) */
1991 void array__Array__add(val* self, val* p0) {
1992 short int var /* : Bool */;
1993 int cltype;
1994 int idtype;
1995 const struct type* type_struct;
1996 short int is_nullable;
1997 const char* var_class_name;
1998 val* var_item /* var item: nullable Object */;
1999 long var1 /* : Int */;
2000 long var_l /* var l: Int */;
2001 long var2 /* : Int */;
2002 short int var3 /* : Bool */;
2003 short int var5 /* : Bool */;
2004 int cltype6;
2005 int idtype7;
2006 const char* var_class_name8;
2007 short int var9 /* : Bool */;
2008 long var10 /* : Int */;
2009 long var11 /* : Int */;
2010 long var13 /* : Int */;
2011 long var14 /* : Int */;
2012 long var15 /* : Int */;
2013 long var17 /* : Int */;
2014 val* var18 /* : nullable NativeArray[nullable Object] */;
2015 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa SimpleCollection#0 */
2016 /* <p0:nullable Object> isa SimpleCollection#0 */
2017 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
2018 cltype = type_struct->color;
2019 idtype = type_struct->id;
2020 is_nullable = type_struct->is_nullable;
2021 if(p0 == NULL) {
2022 var = is_nullable;
2023 } else {
2024 if(cltype >= p0->type->table_size) {
2025 var = 0;
2026 } else {
2027 var = p0->type->type_table[cltype] == idtype;
2028 }
2029 }
2030 if (!var) {
2031 var_class_name = p0 == NULL ? "null" : p0->type->name;
2032 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
2033 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 271);
2034 show_backtrace(1);
2035 }
2036 var_item = p0;
2037 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
2038 var_l = var1;
2039 var2 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
2040 { /* Inline kernel#Int#<= (var2,var_l) */
2041 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
2042 /* <var_l:Int> isa OTHER */
2043 var5 = 1; /* easy <var_l:Int> isa OTHER*/
2044 if (!var5) {
2045 var_class_name8 = type_kernel__Int.name;
2046 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name8);
2047 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
2048 show_backtrace(1);
2049 }
2050 var9 = var2 <= var_l;
2051 var3 = var9;
2052 goto RET_LABEL4;
2053 RET_LABEL4:(void)0;
2054 }
2055 if (var3){
2056 var10 = 1;
2057 { /* Inline kernel#Int#+ (var_l,var10) */
2058 var13 = var_l + var10;
2059 var11 = var13;
2060 goto RET_LABEL12;
2061 RET_LABEL12:(void)0;
2062 }
2063 ((void (*)(val*, long))(self->class->vft[COLOR_array__AbstractArray__enlarge]))(self, var11) /* enlarge on <self:Array[nullable Object]>*/;
2064 } else {
2065 }
2066 var14 = 1;
2067 { /* Inline kernel#Int#+ (var_l,var14) */
2068 var17 = var_l + var14;
2069 var15 = var17;
2070 goto RET_LABEL16;
2071 RET_LABEL16:(void)0;
2072 }
2073 self->attrs[COLOR_array__AbstractArrayRead___length].l = var15; /* _length on <self:Array[nullable Object]> */
2074 var18 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
2075 if (var18 == NULL) {
2076 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2077 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 278);
2078 show_backtrace(1);
2079 } else {
2080 ((void (*)(val*, long, val*))(var18->class->vft[COLOR_array__NativeArray___91d_93d_61d]))(var18, var_l, var_item) /* []= on <var18:nullable NativeArray[nullable Object]>*/;
2081 }
2082 RET_LABEL:;
2083 }
2084 /* method array#Array#add for (self: Object, nullable Object) */
2085 void VIRTUAL_array__Array__add(val* self, val* p0) {
2086 array__Array__add(self, p0);
2087 RET_LABEL:;
2088 }
2089 /* method array#Array#enlarge for (self: Array[nullable Object], Int) */
2090 void array__Array__enlarge(val* self, long p0) {
2091 long var_cap /* var cap: Int */;
2092 long var /* : Int */;
2093 long var_c /* var c: Int */;
2094 short int var1 /* : Bool */;
2095 short int var3 /* : Bool */;
2096 int cltype;
2097 int idtype;
2098 const char* var_class_name;
2099 short int var4 /* : Bool */;
2100 short int var5 /* : Bool */;
2101 short int var7 /* : Bool */;
2102 int cltype8;
2103 int idtype9;
2104 const char* var_class_name10;
2105 short int var11 /* : Bool */;
2106 long var12 /* : Int */;
2107 long var13 /* : Int */;
2108 long var15 /* : Int */;
2109 long var16 /* : Int */;
2110 long var17 /* : Int */;
2111 long var19 /* : Int */;
2112 val* var20 /* : NativeArray[nullable Object] */;
2113 val* var_a /* var a: NativeArray[nullable Object] */;
2114 long var21 /* : Int */;
2115 long var22 /* : Int */;
2116 short int var23 /* : Bool */;
2117 short int var25 /* : Bool */;
2118 int cltype26;
2119 int idtype27;
2120 const char* var_class_name28;
2121 short int var29 /* : Bool */;
2122 val* var30 /* : nullable NativeArray[nullable Object] */;
2123 long var31 /* : Int */;
2124 var_cap = p0;
2125 var = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
2126 var_c = var;
2127 { /* Inline kernel#Int#<= (var_cap,var_c) */
2128 /* Covariant cast for argument 0 (i) <var_c:Int> isa OTHER */
2129 /* <var_c:Int> isa OTHER */
2130 var3 = 1; /* easy <var_c:Int> isa OTHER*/
2131 if (!var3) {
2132 var_class_name = type_kernel__Int.name;
2133 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2134 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
2135 show_backtrace(1);
2136 }
2137 var4 = var_cap <= var_c;
2138 var1 = var4;
2139 goto RET_LABEL2;
2140 RET_LABEL2:(void)0;
2141 }
2142 if (var1){
2143 goto RET_LABEL;
2144 } else {
2145 }
2146 for(;;) {
2147 { /* Inline kernel#Int#<= (var_c,var_cap) */
2148 /* Covariant cast for argument 0 (i) <var_cap:Int> isa OTHER */
2149 /* <var_cap:Int> isa OTHER */
2150 var7 = 1; /* easy <var_cap:Int> isa OTHER*/
2151 if (!var7) {
2152 var_class_name10 = type_kernel__Int.name;
2153 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
2154 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
2155 show_backtrace(1);
2156 }
2157 var11 = var_c <= var_cap;
2158 var5 = var11;
2159 goto RET_LABEL6;
2160 RET_LABEL6:(void)0;
2161 }
2162 if (!var5) break;
2163 var12 = 2;
2164 { /* Inline kernel#Int#* (var_c,var12) */
2165 var15 = var_c * var12;
2166 var13 = var15;
2167 goto RET_LABEL14;
2168 RET_LABEL14:(void)0;
2169 }
2170 var16 = 2;
2171 { /* Inline kernel#Int#+ (var13,var16) */
2172 var19 = var13 + var16;
2173 var17 = var19;
2174 goto RET_LABEL18;
2175 RET_LABEL18:(void)0;
2176 }
2177 var_c = var17;
2178 CONTINUE_label: (void)0;
2179 }
2180 BREAK_label: (void)0;
2181 var20 = ((val* (*)(val*, long))(self->class->vft[COLOR_array__ArrayCapable__calloc_array]))(self, var_c) /* calloc_array on <self:Array[nullable Object]>*/;
2182 var_a = var20;
2183 var21 = self->attrs[COLOR_array__Array___capacity].l; /* _capacity on <self:Array[nullable Object]> */
2184 var22 = 0;
2185 { /* Inline kernel#Int#> (var21,var22) */
2186 /* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
2187 /* <var22:Int> isa OTHER */
2188 var25 = 1; /* easy <var22:Int> isa OTHER*/
2189 if (!var25) {
2190 var_class_name28 = type_kernel__Int.name;
2191 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
2192 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2193 show_backtrace(1);
2194 }
2195 var29 = var21 > var22;
2196 var23 = var29;
2197 goto RET_LABEL24;
2198 RET_LABEL24:(void)0;
2199 }
2200 if (var23){
2201 var30 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
2202 var31 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:Array[nullable Object]> */
2203 if (var30 == NULL) {
2204 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2205 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 287);
2206 show_backtrace(1);
2207 } else {
2208 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__NativeArray__copy_to]))(var30, var_a, var31) /* copy_to on <var30:nullable NativeArray[nullable Object]>*/;
2209 }
2210 } else {
2211 }
2212 self->attrs[COLOR_array__Array___items].val = var_a; /* _items on <self:Array[nullable Object]> */
2213 self->attrs[COLOR_array__Array___capacity].l = var_c; /* _capacity on <self:Array[nullable Object]> */
2214 RET_LABEL:;
2215 }
2216 /* method array#Array#enlarge for (self: Object, Int) */
2217 void VIRTUAL_array__Array__enlarge(val* self, long p0) {
2218 array__Array__enlarge(self, p0);
2219 RET_LABEL:;
2220 }
2221 /* method array#Array#init for (self: Array[nullable Object]) */
2222 void array__Array__init(val* self) {
2223 long var /* : Int */;
2224 long var1 /* : Int */;
2225 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Array[nullable Object]>*/;
2226 var = 0;
2227 self->attrs[COLOR_array__Array___capacity].l = var; /* _capacity on <self:Array[nullable Object]> */
2228 var1 = 0;
2229 self->attrs[COLOR_array__AbstractArrayRead___length].l = var1; /* _length on <self:Array[nullable Object]> */
2230 RET_LABEL:;
2231 }
2232 /* method array#Array#init for (self: Object) */
2233 void VIRTUAL_array__Array__init(val* self) {
2234 array__Array__init(self);
2235 RET_LABEL:;
2236 }
2237 /* method array#Array#from for (self: Array[nullable Object], Collection[nullable Object]) */
2238 void array__Array__from(val* self, val* p0) {
2239 short int var /* : Bool */;
2240 int cltype;
2241 int idtype;
2242 const struct type* type_struct;
2243 const char* var_class_name;
2244 val* var_items /* var items: Collection[nullable Object] */;
2245 long var1 /* : Int */;
2246 /* Covariant cast for argument 0 (items) <p0:Collection[nullable Object]> isa Collection[Array#0] */
2247 /* <p0:Collection[nullable Object]> isa Collection[Array#0] */
2248 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionarray__Array_FT0];
2249 cltype = type_struct->color;
2250 idtype = type_struct->id;
2251 if(cltype >= p0->type->table_size) {
2252 var = 0;
2253 } else {
2254 var = p0->type->type_table[cltype] == idtype;
2255 }
2256 if (!var) {
2257 var_class_name = p0 == NULL ? "null" : p0->type->name;
2258 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[Array#0]", var_class_name);
2259 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 299);
2260 show_backtrace(1);
2261 }
2262 var_items = p0;
2263 var1 = ((long (*)(val*))(var_items->class->vft[COLOR_abstract_collection__Collection__length]))(var_items) /* length on <var_items:Collection[nullable Object]>*/;
2264 ((void (*)(val*, long))(self->class->vft[COLOR_array__Array__with_capacity]))(self, var1) /* with_capacity on <self:Array[nullable Object]>*/;
2265 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(self, var_items) /* add_all on <self:Array[nullable Object]>*/;
2266 RET_LABEL:;
2267 }
2268 /* method array#Array#from for (self: Object, Collection[nullable Object]) */
2269 void VIRTUAL_array__Array__from(val* self, val* p0) {
2270 array__Array__from(self, p0);
2271 RET_LABEL:;
2272 }
2273 /* method array#Array#with_items for (self: Array[nullable Object], Array[nullable Object]) */
2274 void array__Array__with_items(val* self, val* p0) {
2275 val* var_objects /* var objects: Array[nullable Object] */;
2276 val* var /* : nullable NativeArray[nullable Object] */;
2277 long var1 /* : Int */;
2278 long var2 /* : Int */;
2279 var_objects = p0;
2280 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Array[nullable Object]>*/;
2281 var = var_objects->attrs[COLOR_array__Array___items].val; /* _items on <var_objects:Array[nullable Object]> */
2282 self->attrs[COLOR_array__Array___items].val = var; /* _items on <self:Array[nullable Object]> */
2283 var1 = var_objects->attrs[COLOR_array__Array___capacity].l; /* _capacity on <var_objects:Array[nullable Object]> */
2284 self->attrs[COLOR_array__Array___capacity].l = var1; /* _capacity on <self:Array[nullable Object]> */
2285 var2 = ((long (*)(val*))(var_objects->class->vft[COLOR_abstract_collection__Collection__length]))(var_objects) /* length on <var_objects:Array[nullable Object]>*/;
2286 self->attrs[COLOR_array__AbstractArrayRead___length].l = var2; /* _length on <self:Array[nullable Object]> */
2287 RET_LABEL:;
2288 }
2289 /* method array#Array#with_items for (self: Object, Array[nullable Object]) */
2290 void VIRTUAL_array__Array__with_items(val* self, val* p0) {
2291 array__Array__with_items(self, p0);
2292 RET_LABEL:;
2293 }
2294 /* method array#Array#with_capacity for (self: Array[nullable Object], Int) */
2295 void array__Array__with_capacity(val* self, long p0) {
2296 long var_cap /* var cap: Int */;
2297 long var /* : Int */;
2298 short int var1 /* : Bool */;
2299 short int var3 /* : Bool */;
2300 int cltype;
2301 int idtype;
2302 const char* var_class_name;
2303 short int var4 /* : Bool */;
2304 val* var5 /* : NativeArray[nullable Object] */;
2305 long var6 /* : Int */;
2306 var_cap = p0;
2307 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Array[nullable Object]>*/;
2308 var = 0;
2309 { /* Inline kernel#Int#>= (var_cap,var) */
2310 /* Covariant cast for argument 0 (i) <var:Int> isa OTHER */
2311 /* <var:Int> isa OTHER */
2312 var3 = 1; /* easy <var:Int> isa OTHER*/
2313 if (!var3) {
2314 var_class_name = type_kernel__Int.name;
2315 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2316 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2317 show_backtrace(1);
2318 }
2319 var4 = var_cap >= var;
2320 var1 = var4;
2321 goto RET_LABEL2;
2322 RET_LABEL2:(void)0;
2323 }
2324 if (!var1) {
2325 fprintf(stderr, "Runtime error: %s", "Assert \'positive\' failed");
2326 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 316);
2327 show_backtrace(1);
2328 }
2329 var5 = ((val* (*)(val*, long))(self->class->vft[COLOR_array__ArrayCapable__calloc_array]))(self, var_cap) /* calloc_array on <self:Array[nullable Object]>*/;
2330 self->attrs[COLOR_array__Array___items].val = var5; /* _items on <self:Array[nullable Object]> */
2331 self->attrs[COLOR_array__Array___capacity].l = var_cap; /* _capacity on <self:Array[nullable Object]> */
2332 var6 = 0;
2333 self->attrs[COLOR_array__AbstractArrayRead___length].l = var6; /* _length on <self:Array[nullable Object]> */
2334 RET_LABEL:;
2335 }
2336 /* method array#Array#with_capacity for (self: Object, Int) */
2337 void VIRTUAL_array__Array__with_capacity(val* self, long p0) {
2338 array__Array__with_capacity(self, p0);
2339 RET_LABEL:;
2340 }
2341 /* method array#Array#filled_with for (self: Array[nullable Object], nullable Object, Int) */
2342 void array__Array__filled_with(val* self, val* p0, long p1) {
2343 short int var /* : Bool */;
2344 int cltype;
2345 int idtype;
2346 const struct type* type_struct;
2347 short int is_nullable;
2348 const char* var_class_name;
2349 val* var_value /* var value: nullable Object */;
2350 long var_count /* var count: Int */;
2351 long var1 /* : Int */;
2352 short int var2 /* : Bool */;
2353 short int var4 /* : Bool */;
2354 int cltype5;
2355 int idtype6;
2356 const char* var_class_name7;
2357 short int var8 /* : Bool */;
2358 val* var9 /* : NativeArray[nullable Object] */;
2359 long var10 /* : Int */;
2360 long var_i /* var i: Int */;
2361 short int var11 /* : Bool */;
2362 short int var13 /* : Bool */;
2363 int cltype14;
2364 int idtype15;
2365 const char* var_class_name16;
2366 short int var17 /* : Bool */;
2367 long var18 /* : Int */;
2368 long var19 /* : Int */;
2369 long var21 /* : Int */;
2370 /* Covariant cast for argument 0 (value) <p0:nullable Object> isa Array#0 */
2371 /* <p0:nullable Object> isa Array#0 */
2372 type_struct = self->type->resolution_table->types[COLOR_array__Array_FT0];
2373 cltype = type_struct->color;
2374 idtype = type_struct->id;
2375 is_nullable = type_struct->is_nullable;
2376 if(p0 == NULL) {
2377 var = is_nullable;
2378 } else {
2379 if(cltype >= p0->type->table_size) {
2380 var = 0;
2381 } else {
2382 var = p0->type->type_table[cltype] == idtype;
2383 }
2384 }
2385 if (!var) {
2386 var_class_name = p0 == NULL ? "null" : p0->type->name;
2387 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array#0", var_class_name);
2388 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 322);
2389 show_backtrace(1);
2390 }
2391 var_value = p0;
2392 var_count = p1;
2393 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Array[nullable Object]>*/;
2394 var1 = 0;
2395 { /* Inline kernel#Int#>= (var_count,var1) */
2396 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2397 /* <var1:Int> isa OTHER */
2398 var4 = 1; /* easy <var1:Int> isa OTHER*/
2399 if (!var4) {
2400 var_class_name7 = type_kernel__Int.name;
2401 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
2402 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2403 show_backtrace(1);
2404 }
2405 var8 = var_count >= var1;
2406 var2 = var8;
2407 goto RET_LABEL3;
2408 RET_LABEL3:(void)0;
2409 }
2410 if (!var2) {
2411 fprintf(stderr, "Runtime error: %s", "Assert \'positive\' failed");
2412 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 325);
2413 show_backtrace(1);
2414 }
2415 var9 = ((val* (*)(val*, long))(self->class->vft[COLOR_array__ArrayCapable__calloc_array]))(self, var_count) /* calloc_array on <self:Array[nullable Object]>*/;
2416 self->attrs[COLOR_array__Array___items].val = var9; /* _items on <self:Array[nullable Object]> */
2417 self->attrs[COLOR_array__Array___capacity].l = var_count; /* _capacity on <self:Array[nullable Object]> */
2418 self->attrs[COLOR_array__AbstractArrayRead___length].l = var_count; /* _length on <self:Array[nullable Object]> */
2419 var10 = 0;
2420 var_i = var10;
2421 for(;;) {
2422 { /* Inline kernel#Int#< (var_i,var_count) */
2423 /* Covariant cast for argument 0 (i) <var_count:Int> isa OTHER */
2424 /* <var_count:Int> isa OTHER */
2425 var13 = 1; /* easy <var_count:Int> isa OTHER*/
2426 if (!var13) {
2427 var_class_name16 = type_kernel__Int.name;
2428 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
2429 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2430 show_backtrace(1);
2431 }
2432 var17 = var_i < var_count;
2433 var11 = var17;
2434 goto RET_LABEL12;
2435 RET_LABEL12:(void)0;
2436 }
2437 if (!var11) break;
2438 ((void (*)(val*, long, val*))(self->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(self, var_i, var_value) /* []= on <self:Array[nullable Object]>*/;
2439 var18 = 1;
2440 { /* Inline kernel#Int#+ (var_i,var18) */
2441 var21 = var_i + var18;
2442 var19 = var21;
2443 goto RET_LABEL20;
2444 RET_LABEL20:(void)0;
2445 }
2446 var_i = var19;
2447 CONTINUE_label: (void)0;
2448 }
2449 BREAK_label: (void)0;
2450 RET_LABEL:;
2451 }
2452 /* method array#Array#filled_with for (self: Object, nullable Object, Int) */
2453 void VIRTUAL_array__Array__filled_with(val* self, val* p0, long p1) {
2454 array__Array__filled_with(self, p0, p1);
2455 RET_LABEL:;
2456 }
2457 /* method array#Array#with_native for (self: Array[nullable Object], NativeArray[nullable Object], Int) */
2458 void array__Array__with_native(val* self, val* p0, long p1) {
2459 short int var /* : Bool */;
2460 int cltype;
2461 int idtype;
2462 const struct type* type_struct;
2463 const char* var_class_name;
2464 val* var_nat /* var nat: NativeArray[nullable Object] */;
2465 long var_size /* var size: Int */;
2466 long var1 /* : Int */;
2467 short int var2 /* : Bool */;
2468 short int var4 /* : Bool */;
2469 int cltype5;
2470 int idtype6;
2471 const char* var_class_name7;
2472 short int var8 /* : Bool */;
2473 /* Covariant cast for argument 0 (nat) <p0:NativeArray[nullable Object]> isa NativeArray[Array#0] */
2474 /* <p0:NativeArray[nullable Object]> isa NativeArray[Array#0] */
2475 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__Array_FT0];
2476 cltype = type_struct->color;
2477 idtype = type_struct->id;
2478 if(cltype >= p0->type->table_size) {
2479 var = 0;
2480 } else {
2481 var = p0->type->type_table[cltype] == idtype;
2482 }
2483 if (!var) {
2484 var_class_name = p0 == NULL ? "null" : p0->type->name;
2485 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[Array#0]", var_class_name);
2486 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 336);
2487 show_backtrace(1);
2488 }
2489 var_nat = p0;
2490 var_size = p1;
2491 ((void (*)(val*))(self->class->vft[COLOR_array__AbstractArray__init]))(self) /* init on <self:Array[nullable Object]>*/;
2492 var1 = 0;
2493 { /* Inline kernel#Int#>= (var_size,var1) */
2494 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
2495 /* <var1:Int> isa OTHER */
2496 var4 = 1; /* easy <var1:Int> isa OTHER*/
2497 if (!var4) {
2498 var_class_name7 = type_kernel__Int.name;
2499 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
2500 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2501 show_backtrace(1);
2502 }
2503 var8 = var_size >= var1;
2504 var2 = var8;
2505 goto RET_LABEL3;
2506 RET_LABEL3:(void)0;
2507 }
2508 if (!var2) {
2509 fprintf(stderr, "Runtime error: %s", "Assert \'positive\' failed");
2510 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 339);
2511 show_backtrace(1);
2512 }
2513 self->attrs[COLOR_array__Array___items].val = var_nat; /* _items on <self:Array[nullable Object]> */
2514 self->attrs[COLOR_array__Array___capacity].l = var_size; /* _capacity on <self:Array[nullable Object]> */
2515 self->attrs[COLOR_array__AbstractArrayRead___length].l = var_size; /* _length on <self:Array[nullable Object]> */
2516 RET_LABEL:;
2517 }
2518 /* method array#Array#with_native for (self: Object, NativeArray[nullable Object], Int) */
2519 void VIRTUAL_array__Array__with_native(val* self, val* p0, long p1) {
2520 array__Array__with_native(self, p0, p1);
2521 RET_LABEL:;
2522 }
2523 /* method array#Array#intern_items for (self: Array[nullable Object]): NativeArray[nullable Object] */
2524 val* array__Array__intern_items(val* self) {
2525 val* var /* : NativeArray[nullable Object] */;
2526 val* var1 /* : nullable NativeArray[nullable Object] */;
2527 var1 = self->attrs[COLOR_array__Array___items].val; /* _items on <self:Array[nullable Object]> */
2528 if (var1 == NULL) {
2529 fprintf(stderr, "Runtime error: %s", "Cast failed");
2530 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 350);
2531 show_backtrace(1);
2532 }
2533 var = var1;
2534 goto RET_LABEL;
2535 RET_LABEL:;
2536 return var;
2537 }
2538 /* method array#Array#intern_items for (self: Object): NativeArray[nullable Object] */
2539 val* VIRTUAL_array__Array__intern_items(val* self) {
2540 val* var /* : NativeArray[nullable Object] */;
2541 val* var1 /* : NativeArray[nullable Object] */;
2542 var1 = array__Array__intern_items(self);
2543 var = var1;
2544 RET_LABEL:;
2545 return var;
2546 }
2547 /* method array#ArrayIterator#item for (self: ArrayIterator[nullable Object]): nullable Object */
2548 val* array__ArrayIterator__item(val* self) {
2549 val* var /* : nullable Object */;
2550 val* var1 /* : AbstractArrayRead[nullable Object] */;
2551 long var2 /* : Int */;
2552 val* var3 /* : nullable Object */;
2553 var1 = self->attrs[COLOR_array__ArrayIterator___array].val; /* _array on <self:ArrayIterator[nullable Object]> */
2554 if (var1 == NULL) {
2555 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2556 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 360);
2557 show_backtrace(1);
2558 }
2559 var2 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2560 var3 = ((val* (*)(val*, long))(var1->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var1, var2) /* [] on <var1:AbstractArrayRead[nullable Object]>*/;
2561 var = var3;
2562 goto RET_LABEL;
2563 RET_LABEL:;
2564 return var;
2565 }
2566 /* method array#ArrayIterator#item for (self: Object): nullable Object */
2567 val* VIRTUAL_array__ArrayIterator__item(val* self) {
2568 val* var /* : nullable Object */;
2569 val* var1 /* : nullable Object */;
2570 var1 = array__ArrayIterator__item(self);
2571 var = var1;
2572 RET_LABEL:;
2573 return var;
2574 }
2575 /* method array#ArrayIterator#is_ok for (self: ArrayIterator[nullable Object]): Bool */
2576 short int array__ArrayIterator__is_ok(val* self) {
2577 short int var /* : Bool */;
2578 long var1 /* : Int */;
2579 val* var2 /* : AbstractArrayRead[nullable Object] */;
2580 long var3 /* : Int */;
2581 short int var4 /* : Bool */;
2582 short int var6 /* : Bool */;
2583 int cltype;
2584 int idtype;
2585 const char* var_class_name;
2586 short int var7 /* : Bool */;
2587 var1 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2588 var2 = self->attrs[COLOR_array__ArrayIterator___array].val; /* _array on <self:ArrayIterator[nullable Object]> */
2589 if (var2 == NULL) {
2590 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2591 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 364);
2592 show_backtrace(1);
2593 }
2594 var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:AbstractArrayRead[nullable Object]>*/;
2595 { /* Inline kernel#Int#< (var1,var3) */
2596 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2597 /* <var3:Int> isa OTHER */
2598 var6 = 1; /* easy <var3:Int> isa OTHER*/
2599 if (!var6) {
2600 var_class_name = type_kernel__Int.name;
2601 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2602 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
2603 show_backtrace(1);
2604 }
2605 var7 = var1 < var3;
2606 var4 = var7;
2607 goto RET_LABEL5;
2608 RET_LABEL5:(void)0;
2609 }
2610 var = var4;
2611 goto RET_LABEL;
2612 RET_LABEL:;
2613 return var;
2614 }
2615 /* method array#ArrayIterator#is_ok for (self: Object): Bool */
2616 short int VIRTUAL_array__ArrayIterator__is_ok(val* self) {
2617 short int var /* : Bool */;
2618 short int var1 /* : Bool */;
2619 var1 = array__ArrayIterator__is_ok(self);
2620 var = var1;
2621 RET_LABEL:;
2622 return var;
2623 }
2624 /* method array#ArrayIterator#next for (self: ArrayIterator[nullable Object]) */
2625 void array__ArrayIterator__next(val* self) {
2626 val* var_ /* var : ArrayIterator[nullable Object] */;
2627 long var /* : Int */;
2628 long var1 /* : Int */;
2629 long var2 /* : Int */;
2630 long var4 /* : Int */;
2631 var_ = self;
2632 var = var_->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <var_:ArrayIterator[nullable Object]> */
2633 var1 = 1;
2634 { /* Inline kernel#Int#+ (var,var1) */
2635 var4 = var + var1;
2636 var2 = var4;
2637 goto RET_LABEL3;
2638 RET_LABEL3:(void)0;
2639 }
2640 var_->attrs[COLOR_array__ArrayIterator___index].l = var2; /* _index on <var_:ArrayIterator[nullable Object]> */
2641 RET_LABEL:;
2642 }
2643 /* method array#ArrayIterator#next for (self: Object) */
2644 void VIRTUAL_array__ArrayIterator__next(val* self) {
2645 array__ArrayIterator__next(self);
2646 RET_LABEL:;
2647 }
2648 /* method array#ArrayIterator#init for (self: ArrayIterator[nullable Object], AbstractArrayRead[nullable Object]) */
2649 void array__ArrayIterator__init(val* self, val* p0) {
2650 short int var /* : Bool */;
2651 int cltype;
2652 int idtype;
2653 const struct type* type_struct;
2654 const char* var_class_name;
2655 val* var_a /* var a: AbstractArrayRead[nullable Object] */;
2656 long var1 /* : Int */;
2657 /* Covariant cast for argument 0 (a) <p0:AbstractArrayRead[nullable Object]> isa AbstractArrayRead[ArrayIterator#0] */
2658 /* <p0:AbstractArrayRead[nullable Object]> isa AbstractArrayRead[ArrayIterator#0] */
2659 type_struct = self->type->resolution_table->types[COLOR_array__AbstractArrayReadarray__ArrayIterator_FT0];
2660 cltype = type_struct->color;
2661 idtype = type_struct->id;
2662 if(cltype >= p0->type->table_size) {
2663 var = 0;
2664 } else {
2665 var = p0->type->type_table[cltype] == idtype;
2666 }
2667 if (!var) {
2668 var_class_name = p0 == NULL ? "null" : p0->type->name;
2669 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractArrayRead[ArrayIterator#0]", var_class_name);
2670 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 368);
2671 show_backtrace(1);
2672 }
2673 var_a = p0;
2674 self->attrs[COLOR_array__ArrayIterator___array].val = var_a; /* _array on <self:ArrayIterator[nullable Object]> */
2675 var1 = 0;
2676 self->attrs[COLOR_array__ArrayIterator___index].l = var1; /* _index on <self:ArrayIterator[nullable Object]> */
2677 RET_LABEL:;
2678 }
2679 /* method array#ArrayIterator#init for (self: Object, AbstractArrayRead[nullable Object]) */
2680 void VIRTUAL_array__ArrayIterator__init(val* self, val* p0) {
2681 array__ArrayIterator__init(self, p0);
2682 RET_LABEL:;
2683 }
2684 /* method array#ArrayIterator#index for (self: ArrayIterator[nullable Object]): Int */
2685 long array__ArrayIterator__index(val* self) {
2686 long var /* : Int */;
2687 long var1 /* : Int */;
2688 var1 = self->attrs[COLOR_array__ArrayIterator___index].l; /* _index on <self:ArrayIterator[nullable Object]> */
2689 var = var1;
2690 RET_LABEL:;
2691 return var;
2692 }
2693 /* method array#ArrayIterator#index for (self: Object): Int */
2694 long VIRTUAL_array__ArrayIterator__index(val* self) {
2695 long var /* : Int */;
2696 long var1 /* : Int */;
2697 var1 = array__ArrayIterator__index(self);
2698 var = var1;
2699 RET_LABEL:;
2700 return var;
2701 }
2702 /* method array#ArraySet#has for (self: ArraySet[Object], Object): Bool */
2703 short int array__ArraySet__has(val* self, val* p0) {
2704 short int var /* : Bool */;
2705 short int var1 /* : Bool */;
2706 int cltype;
2707 int idtype;
2708 const struct type* type_struct;
2709 const char* var_class_name;
2710 val* var_e /* var e: Object */;
2711 val* var2 /* : Array[Object] */;
2712 short int var3 /* : Bool */;
2713 /* Covariant cast for argument 0 (e) <p0:Object> isa Collection#0 */
2714 /* <p0:Object> isa Collection#0 */
2715 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
2716 cltype = type_struct->color;
2717 idtype = type_struct->id;
2718 if(cltype >= p0->type->table_size) {
2719 var1 = 0;
2720 } else {
2721 var1 = p0->type->type_table[cltype] == idtype;
2722 }
2723 if (!var1) {
2724 var_class_name = p0 == NULL ? "null" : p0->type->name;
2725 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
2726 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 387);
2727 show_backtrace(1);
2728 }
2729 var_e = p0;
2730 var2 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2731 if (var2 == NULL) {
2732 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2733 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 387);
2734 show_backtrace(1);
2735 }
2736 var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__Collection__has]))(var2, var_e) /* has on <var2:Array[Object]>*/;
2737 var = var3;
2738 goto RET_LABEL;
2739 RET_LABEL:;
2740 return var;
2741 }
2742 /* method array#ArraySet#has for (self: Object, nullable Object): Bool */
2743 short int VIRTUAL_array__ArraySet__has(val* self, val* p0) {
2744 short int var /* : Bool */;
2745 short int var1 /* : Bool */;
2746 var1 = array__ArraySet__has(self, p0);
2747 var = var1;
2748 RET_LABEL:;
2749 return var;
2750 }
2751 /* method array#ArraySet#add for (self: ArraySet[Object], Object) */
2752 void array__ArraySet__add(val* self, val* p0) {
2753 short int var /* : Bool */;
2754 int cltype;
2755 int idtype;
2756 const struct type* type_struct;
2757 const char* var_class_name;
2758 val* var_e /* var e: Object */;
2759 val* var1 /* : Array[Object] */;
2760 short int var2 /* : Bool */;
2761 short int var3 /* : Bool */;
2762 val* var4 /* : Array[Object] */;
2763 /* Covariant cast for argument 0 (e) <p0:Object> isa SimpleCollection#0 */
2764 /* <p0:Object> isa SimpleCollection#0 */
2765 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__SimpleCollection_FT0];
2766 cltype = type_struct->color;
2767 idtype = type_struct->id;
2768 if(cltype >= p0->type->table_size) {
2769 var = 0;
2770 } else {
2771 var = p0->type->type_table[cltype] == idtype;
2772 }
2773 if (!var) {
2774 var_class_name = p0 == NULL ? "null" : p0->type->name;
2775 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SimpleCollection#0", var_class_name);
2776 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 389);
2777 show_backtrace(1);
2778 }
2779 var_e = p0;
2780 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2781 if (var1 == NULL) {
2782 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2783 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 389);
2784 show_backtrace(1);
2785 }
2786 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__Collection__has]))(var1, var_e) /* has on <var1:Array[Object]>*/;
2787 var3 = !var2;
2788 if (var3){
2789 var4 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2790 if (var4 == NULL) {
2791 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2792 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 389);
2793 show_backtrace(1);
2794 }
2795 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, var_e) /* add on <var4:Array[Object]>*/;
2796 } else {
2797 }
2798 RET_LABEL:;
2799 }
2800 /* method array#ArraySet#add for (self: Object, nullable Object) */
2801 void VIRTUAL_array__ArraySet__add(val* self, val* p0) {
2802 array__ArraySet__add(self, p0);
2803 RET_LABEL:;
2804 }
2805 /* method array#ArraySet#is_empty for (self: ArraySet[Object]): Bool */
2806 short int array__ArraySet__is_empty(val* self) {
2807 short int var /* : Bool */;
2808 val* var1 /* : Array[Object] */;
2809 short int var2 /* : Bool */;
2810 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2811 if (var1 == NULL) {
2812 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2813 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 391);
2814 show_backtrace(1);
2815 }
2816 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:Array[Object]>*/;
2817 var = var2;
2818 goto RET_LABEL;
2819 RET_LABEL:;
2820 return var;
2821 }
2822 /* method array#ArraySet#is_empty for (self: Object): Bool */
2823 short int VIRTUAL_array__ArraySet__is_empty(val* self) {
2824 short int var /* : Bool */;
2825 short int var1 /* : Bool */;
2826 var1 = array__ArraySet__is_empty(self);
2827 var = var1;
2828 RET_LABEL:;
2829 return var;
2830 }
2831 /* method array#ArraySet#length for (self: ArraySet[Object]): Int */
2832 long array__ArraySet__length(val* self) {
2833 long var /* : Int */;
2834 val* var1 /* : Array[Object] */;
2835 long var2 /* : Int */;
2836 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2837 if (var1 == NULL) {
2838 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2839 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 393);
2840 show_backtrace(1);
2841 }
2842 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[Object]>*/;
2843 var = var2;
2844 goto RET_LABEL;
2845 RET_LABEL:;
2846 return var;
2847 }
2848 /* method array#ArraySet#length for (self: Object): Int */
2849 long VIRTUAL_array__ArraySet__length(val* self) {
2850 long var /* : Int */;
2851 long var1 /* : Int */;
2852 var1 = array__ArraySet__length(self);
2853 var = var1;
2854 RET_LABEL:;
2855 return var;
2856 }
2857 /* method array#ArraySet#first for (self: ArraySet[Object]): Object */
2858 val* array__ArraySet__first(val* self) {
2859 val* var /* : Object */;
2860 val* var1 /* : Array[Object] */;
2861 long var2 /* : Int */;
2862 long var3 /* : Int */;
2863 short int var4 /* : Bool */;
2864 short int var6 /* : Bool */;
2865 int cltype;
2866 int idtype;
2867 const char* var_class_name;
2868 short int var7 /* : Bool */;
2869 val* var8 /* : Array[Object] */;
2870 val* var9 /* : nullable Object */;
2871 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2872 if (var1 == NULL) {
2873 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2874 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 397);
2875 show_backtrace(1);
2876 }
2877 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[Object]>*/;
2878 var3 = 0;
2879 { /* Inline kernel#Int#> (var2,var3) */
2880 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2881 /* <var3:Int> isa OTHER */
2882 var6 = 1; /* easy <var3:Int> isa OTHER*/
2883 if (!var6) {
2884 var_class_name = type_kernel__Int.name;
2885 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2886 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
2887 show_backtrace(1);
2888 }
2889 var7 = var2 > var3;
2890 var4 = var7;
2891 goto RET_LABEL5;
2892 RET_LABEL5:(void)0;
2893 }
2894 if (!var4) {
2895 fprintf(stderr, "Runtime error: %s", "Assert failed");
2896 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 397);
2897 show_backtrace(1);
2898 }
2899 var8 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2900 if (var8 == NULL) {
2901 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2902 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 398);
2903 show_backtrace(1);
2904 }
2905 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__first]))(var8) /* first on <var8:Array[Object]>*/;
2906 var = var9;
2907 goto RET_LABEL;
2908 RET_LABEL:;
2909 return var;
2910 }
2911 /* method array#ArraySet#first for (self: Object): nullable Object */
2912 val* VIRTUAL_array__ArraySet__first(val* self) {
2913 val* var /* : nullable Object */;
2914 val* var1 /* : Object */;
2915 var1 = array__ArraySet__first(self);
2916 var = var1;
2917 RET_LABEL:;
2918 return var;
2919 }
2920 /* method array#ArraySet#remove for (self: ArraySet[Object], Object) */
2921 void array__ArraySet__remove(val* self, val* p0) {
2922 short int var /* : Bool */;
2923 int cltype;
2924 int idtype;
2925 const struct type* type_struct;
2926 const char* var_class_name;
2927 val* var_item /* var item: Object */;
2928 val* var1 /* : Array[Object] */;
2929 long var2 /* : Int */;
2930 long var_i /* var i: Int */;
2931 long var3 /* : Int */;
2932 short int var4 /* : Bool */;
2933 short int var6 /* : Bool */;
2934 int cltype7;
2935 int idtype8;
2936 const char* var_class_name9;
2937 short int var10 /* : Bool */;
2938 /* Covariant cast for argument 0 (item) <p0:Object> isa RemovableCollection#0 */
2939 /* <p0:Object> isa RemovableCollection#0 */
2940 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
2941 cltype = type_struct->color;
2942 idtype = type_struct->id;
2943 if(cltype >= p0->type->table_size) {
2944 var = 0;
2945 } else {
2946 var = p0->type->type_table[cltype] == idtype;
2947 }
2948 if (!var) {
2949 var_class_name = p0 == NULL ? "null" : p0->type->name;
2950 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
2951 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 401);
2952 show_backtrace(1);
2953 }
2954 var_item = p0;
2955 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
2956 if (var1 == NULL) {
2957 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
2958 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 403);
2959 show_backtrace(1);
2960 }
2961 var2 = ((long (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__index_of]))(var1, var_item) /* index_of on <var1:Array[Object]>*/;
2962 var_i = var2;
2963 var3 = 0;
2964 { /* Inline kernel#Int#>= (var_i,var3) */
2965 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
2966 /* <var3:Int> isa OTHER */
2967 var6 = 1; /* easy <var3:Int> isa OTHER*/
2968 if (!var6) {
2969 var_class_name9 = type_kernel__Int.name;
2970 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
2971 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
2972 show_backtrace(1);
2973 }
2974 var10 = var_i >= var3;
2975 var4 = var10;
2976 goto RET_LABEL5;
2977 RET_LABEL5:(void)0;
2978 }
2979 if (var4){
2980 ((void (*)(val*, long))(self->class->vft[COLOR_array__ArraySet__remove_at]))(self, var_i) /* remove_at on <self:ArraySet[Object]>*/;
2981 } else {
2982 }
2983 RET_LABEL:;
2984 }
2985 /* method array#ArraySet#remove for (self: Object, nullable Object) */
2986 void VIRTUAL_array__ArraySet__remove(val* self, val* p0) {
2987 array__ArraySet__remove(self, p0);
2988 RET_LABEL:;
2989 }
2990 /* method array#ArraySet#remove_all for (self: ArraySet[Object], Object) */
2991 void array__ArraySet__remove_all(val* self, val* p0) {
2992 short int var /* : Bool */;
2993 int cltype;
2994 int idtype;
2995 const struct type* type_struct;
2996 const char* var_class_name;
2997 val* var_item /* var item: Object */;
2998 /* Covariant cast for argument 0 (item) <p0:Object> isa RemovableCollection#0 */
2999 /* <p0:Object> isa RemovableCollection#0 */
3000 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
3001 cltype = type_struct->color;
3002 idtype = type_struct->id;
3003 if(cltype >= p0->type->table_size) {
3004 var = 0;
3005 } else {
3006 var = p0->type->type_table[cltype] == idtype;
3007 }
3008 if (!var) {
3009 var_class_name = p0 == NULL ? "null" : p0->type->name;
3010 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
3011 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 407);
3012 show_backtrace(1);
3013 }
3014 var_item = p0;
3015 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(self, var_item) /* remove on <self:ArraySet[Object]>*/;
3016 RET_LABEL:;
3017 }
3018 /* method array#ArraySet#remove_all for (self: Object, nullable Object) */
3019 void VIRTUAL_array__ArraySet__remove_all(val* self, val* p0) {
3020 array__ArraySet__remove_all(self, p0);
3021 RET_LABEL:;
3022 }
3023 /* method array#ArraySet#clear for (self: ArraySet[Object]) */
3024 void array__ArraySet__clear(val* self) {
3025 val* var /* : Array[Object] */;
3026 var = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3027 if (var == NULL) {
3028 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3029 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 409);
3030 show_backtrace(1);
3031 }
3032 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var) /* clear on <var:Array[Object]>*/;
3033 RET_LABEL:;
3034 }
3035 /* method array#ArraySet#clear for (self: Object) */
3036 void VIRTUAL_array__ArraySet__clear(val* self) {
3037 array__ArraySet__clear(self);
3038 RET_LABEL:;
3039 }
3040 /* method array#ArraySet#iterator for (self: ArraySet[Object]): Iterator[Object] */
3041 val* array__ArraySet__iterator(val* self) {
3042 val* var /* : Iterator[Object] */;
3043 val* var1 /* : ArraySetIterator[Object] */;
3044 val* var2 /* : Array[Object] */;
3045 val* var3 /* : Iterator[nullable Object] */;
3046 var1 = NEW_array__ArraySetIterator(self->type->resolution_table->types[COLOR_array__ArraySetIteratorarray__ArraySet_FT0]);
3047 var2 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3048 if (var2 == NULL) {
3049 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3050 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 411);
3051 show_backtrace(1);
3052 }
3053 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[Object]>*/;
3054 ((void (*)(val*, val*))(var1->class->vft[COLOR_array__ArraySetIterator__init]))(var1, var3) /* init on <var1:ArraySetIterator[Object]>*/;
3055 var = var1;
3056 goto RET_LABEL;
3057 RET_LABEL:;
3058 return var;
3059 }
3060 /* method array#ArraySet#iterator for (self: Object): Iterator[nullable Object] */
3061 val* VIRTUAL_array__ArraySet__iterator(val* self) {
3062 val* var /* : Iterator[nullable Object] */;
3063 val* var1 /* : Iterator[Object] */;
3064 var1 = array__ArraySet__iterator(self);
3065 var = var1;
3066 RET_LABEL:;
3067 return var;
3068 }
3069 /* method array#ArraySet#enlarge for (self: ArraySet[Object], Int) */
3070 void array__ArraySet__enlarge(val* self, long p0) {
3071 long var_cap /* var cap: Int */;
3072 val* var /* : Array[Object] */;
3073 var_cap = p0;
3074 var = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3075 if (var == NULL) {
3076 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3077 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 414);
3078 show_backtrace(1);
3079 }
3080 ((void (*)(val*, long))(var->class->vft[COLOR_array__AbstractArray__enlarge]))(var, var_cap) /* enlarge on <var:Array[Object]>*/;
3081 RET_LABEL:;
3082 }
3083 /* method array#ArraySet#enlarge for (self: Object, Int) */
3084 void VIRTUAL_array__ArraySet__enlarge(val* self, long p0) {
3085 array__ArraySet__enlarge(self, p0);
3086 RET_LABEL:;
3087 }
3088 /* method array#ArraySet#remove_at for (self: ArraySet[Object], Int) */
3089 void array__ArraySet__remove_at(val* self, long p0) {
3090 long var_i /* var i: Int */;
3091 val* var /* : Array[Object] */;
3092 val* var1 /* : Array[Object] */;
3093 val* var2 /* : nullable Object */;
3094 val* var3 /* : Array[Object] */;
3095 val* var4 /* : nullable Object */;
3096 var_i = p0;
3097 var = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3098 if (var == NULL) {
3099 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3100 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 418);
3101 show_backtrace(1);
3102 }
3103 var1 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3104 if (var1 == NULL) {
3105 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3106 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 418);
3107 show_backtrace(1);
3108 }
3109 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var1) /* last on <var1:Array[Object]>*/;
3110 ((void (*)(val*, long, val*))(var->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var, var_i, var2) /* []= on <var:Array[Object]>*/;
3111 var3 = self->attrs[COLOR_array__ArraySet___array].val; /* _array on <self:ArraySet[Object]> */
3112 if (var3 == NULL) {
3113 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _array");
3114 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 419);
3115 show_backtrace(1);
3116 }
3117 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Sequence__pop]))(var3) /* pop on <var3:Array[Object]>*/;
3118 var4;
3119 RET_LABEL:;
3120 }
3121 /* method array#ArraySet#remove_at for (self: Object, Int) */
3122 void VIRTUAL_array__ArraySet__remove_at(val* self, long p0) {
3123 array__ArraySet__remove_at(self, p0);
3124 RET_LABEL:;
3125 }
3126 /* method array#ArraySet#init for (self: ArraySet[Object]) */
3127 void array__ArraySet__init(val* self) {
3128 val* var /* : Array[Object] */;
3129 var = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__ArraySet_FT0]);
3130 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[Object]>*/;
3131 self->attrs[COLOR_array__ArraySet___array].val = var; /* _array on <self:ArraySet[Object]> */
3132 RET_LABEL:;
3133 }
3134 /* method array#ArraySet#init for (self: Object) */
3135 void VIRTUAL_array__ArraySet__init(val* self) {
3136 array__ArraySet__init(self);
3137 RET_LABEL:;
3138 }
3139 /* method array#ArraySet#with_capacity for (self: ArraySet[Object], Int) */
3140 void array__ArraySet__with_capacity(val* self, long p0) {
3141 long var_i /* var i: Int */;
3142 val* var /* : Array[Object] */;
3143 var_i = p0;
3144 var = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayarray__ArraySet_FT0]);
3145 ((void (*)(val*, long))(var->class->vft[COLOR_array__Array__with_capacity]))(var, var_i) /* with_capacity on <var:Array[Object]>*/;
3146 self->attrs[COLOR_array__ArraySet___array].val = var; /* _array on <self:ArraySet[Object]> */
3147 RET_LABEL:;
3148 }
3149 /* method array#ArraySet#with_capacity for (self: Object, Int) */
3150 void VIRTUAL_array__ArraySet__with_capacity(val* self, long p0) {
3151 array__ArraySet__with_capacity(self, p0);
3152 RET_LABEL:;
3153 }
3154 /* method array#ArraySetIterator#is_ok for (self: ArraySetIterator[Object]): Bool */
3155 short int array__ArraySetIterator__is_ok(val* self) {
3156 short int var /* : Bool */;
3157 val* var1 /* : ArrayIterator[Object] */;
3158 short int var2 /* : Bool */;
3159 var1 = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
3160 if (var1 == NULL) {
3161 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
3162 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 433);
3163 show_backtrace(1);
3164 }
3165 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:ArrayIterator[Object]>*/;
3166 var = var2;
3167 goto RET_LABEL;
3168 RET_LABEL:;
3169 return var;
3170 }
3171 /* method array#ArraySetIterator#is_ok for (self: Object): Bool */
3172 short int VIRTUAL_array__ArraySetIterator__is_ok(val* self) {
3173 short int var /* : Bool */;
3174 short int var1 /* : Bool */;
3175 var1 = array__ArraySetIterator__is_ok(self);
3176 var = var1;
3177 RET_LABEL:;
3178 return var;
3179 }
3180 /* method array#ArraySetIterator#next for (self: ArraySetIterator[Object]) */
3181 void array__ArraySetIterator__next(val* self) {
3182 val* var /* : ArrayIterator[Object] */;
3183 var = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
3184 if (var == NULL) {
3185 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
3186 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 435);
3187 show_backtrace(1);
3188 }
3189 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Iterator__next]))(var) /* next on <var:ArrayIterator[Object]>*/;
3190 RET_LABEL:;
3191 }
3192 /* method array#ArraySetIterator#next for (self: Object) */
3193 void VIRTUAL_array__ArraySetIterator__next(val* self) {
3194 array__ArraySetIterator__next(self);
3195 RET_LABEL:;
3196 }
3197 /* method array#ArraySetIterator#item for (self: ArraySetIterator[Object]): Object */
3198 val* array__ArraySetIterator__item(val* self) {
3199 val* var /* : Object */;
3200 val* var1 /* : ArrayIterator[Object] */;
3201 val* var2 /* : nullable Object */;
3202 var1 = self->attrs[COLOR_array__ArraySetIterator___iter].val; /* _iter on <self:ArraySetIterator[Object]> */
3203 if (var1 == NULL) {
3204 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _iter");
3205 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 437);
3206 show_backtrace(1);
3207 }
3208 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:ArrayIterator[Object]>*/;
3209 var = var2;
3210 goto RET_LABEL;
3211 RET_LABEL:;
3212 return var;
3213 }
3214 /* method array#ArraySetIterator#item for (self: Object): nullable Object */
3215 val* VIRTUAL_array__ArraySetIterator__item(val* self) {
3216 val* var /* : nullable Object */;
3217 val* var1 /* : Object */;
3218 var1 = array__ArraySetIterator__item(self);
3219 var = var1;
3220 RET_LABEL:;
3221 return var;
3222 }
3223 /* method array#ArraySetIterator#init for (self: ArraySetIterator[Object], ArrayIterator[Object]) */
3224 void array__ArraySetIterator__init(val* self, val* p0) {
3225 short int var /* : Bool */;
3226 int cltype;
3227 int idtype;
3228 const struct type* type_struct;
3229 const char* var_class_name;
3230 val* var_iter /* var iter: ArrayIterator[Object] */;
3231 /* Covariant cast for argument 0 (iter) <p0:ArrayIterator[Object]> isa ArrayIterator[ArraySetIterator#0] */
3232 /* <p0:ArrayIterator[Object]> isa ArrayIterator[ArraySetIterator#0] */
3233 type_struct = self->type->resolution_table->types[COLOR_array__ArrayIteratorarray__ArraySetIterator_FT0];
3234 cltype = type_struct->color;
3235 idtype = type_struct->id;
3236 if(cltype >= p0->type->table_size) {
3237 var = 0;
3238 } else {
3239 var = p0->type->type_table[cltype] == idtype;
3240 }
3241 if (!var) {
3242 var_class_name = p0 == NULL ? "null" : p0->type->name;
3243 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayIterator[ArraySetIterator#0]", var_class_name);
3244 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 439);
3245 show_backtrace(1);
3246 }
3247 var_iter = p0;
3248 self->attrs[COLOR_array__ArraySetIterator___iter].val = var_iter; /* _iter on <self:ArraySetIterator[Object]> */
3249 RET_LABEL:;
3250 }
3251 /* method array#ArraySetIterator#init for (self: Object, ArrayIterator[Object]) */
3252 void VIRTUAL_array__ArraySetIterator__init(val* self, val* p0) {
3253 array__ArraySetIterator__init(self, p0);
3254 RET_LABEL:;
3255 }
3256 /* method array#ArrayMap#[] for (self: ArrayMap[Object, nullable Object], Object): nullable Object */
3257 val* array__ArrayMap___91d_93d(val* self, val* p0) {
3258 val* var /* : nullable Object */;
3259 short int var1 /* : Bool */;
3260 int cltype;
3261 int idtype;
3262 const struct type* type_struct;
3263 const char* var_class_name;
3264 val* var_key /* var key: Object */;
3265 long var2 /* : Int */;
3266 long var_i /* var i: Int */;
3267 long var3 /* : Int */;
3268 short int var4 /* : Bool */;
3269 short int var6 /* : Bool */;
3270 int cltype7;
3271 int idtype8;
3272 const char* var_class_name9;
3273 short int var10 /* : Bool */;
3274 val* var11 /* : Array[Couple[Object, nullable Object]] */;
3275 val* var12 /* : nullable Object */;
3276 val* var13 /* : nullable Object */;
3277 val* var14 /* : nullable Object */;
3278 /* Covariant cast for argument 0 (key) <p0:Object> isa MapRead#0 */
3279 /* <p0:Object> isa MapRead#0 */
3280 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__MapRead_FT0];
3281 cltype = type_struct->color;
3282 idtype = type_struct->id;
3283 if(cltype >= p0->type->table_size) {
3284 var1 = 0;
3285 } else {
3286 var1 = p0->type->type_table[cltype] == idtype;
3287 }
3288 if (!var1) {
3289 var_class_name = p0 == NULL ? "null" : p0->type->name;
3290 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MapRead#0", var_class_name);
3291 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 449);
3292 show_backtrace(1);
3293 }
3294 var_key = p0;
3295 var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__ArrayMap__index]))(self, var_key) /* index on <self:ArrayMap[Object, nullable Object]>*/;
3296 var_i = var2;
3297 var3 = 0;
3298 { /* Inline kernel#Int#>= (var_i,var3) */
3299 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
3300 /* <var3:Int> isa OTHER */
3301 var6 = 1; /* easy <var3:Int> isa OTHER*/
3302 if (!var6) {
3303 var_class_name9 = type_kernel__Int.name;
3304 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
3305 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
3306 show_backtrace(1);
3307 }
3308 var10 = var_i >= var3;
3309 var4 = var10;
3310 goto RET_LABEL5;
3311 RET_LABEL5:(void)0;
3312 }
3313 if (var4){
3314 var11 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3315 if (var11 == NULL) {
3316 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3317 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 454);
3318 show_backtrace(1);
3319 }
3320 var12 = ((val* (*)(val*, long))(var11->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var11, var_i) /* [] on <var11:Array[Couple[Object, nullable Object]]>*/;
3321 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Couple__second]))(var12) /* second on <var12:nullable Object(Couple[Object, nullable Object])>*/;
3322 var = var13;
3323 goto RET_LABEL;
3324 } else {
3325 var14 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__MapRead__provide_default_value]))(self, var_key) /* provide_default_value on <self:ArrayMap[Object, nullable Object]>*/;
3326 var = var14;
3327 goto RET_LABEL;
3328 }
3329 RET_LABEL:;
3330 return var;
3331 }
3332 /* method array#ArrayMap#[] for (self: Object, Object): nullable Object */
3333 val* VIRTUAL_array__ArrayMap___91d_93d(val* self, val* p0) {
3334 val* var /* : nullable Object */;
3335 val* var1 /* : nullable Object */;
3336 var1 = array__ArrayMap___91d_93d(self, p0);
3337 var = var1;
3338 RET_LABEL:;
3339 return var;
3340 }
3341 /* method array#ArrayMap#[]= for (self: ArrayMap[Object, nullable Object], Object, nullable Object) */
3342 void array__ArrayMap___91d_93d_61d(val* self, val* p0, val* p1) {
3343 short int var /* : Bool */;
3344 int cltype;
3345 int idtype;
3346 const struct type* type_struct;
3347 const char* var_class_name;
3348 short int var1 /* : Bool */;
3349 int cltype2;
3350 int idtype3;
3351 const struct type* type_struct4;
3352 short int is_nullable;
3353 const char* var_class_name5;
3354 val* var_key /* var key: Object */;
3355 val* var_item /* var item: nullable Object */;
3356 long var6 /* : Int */;
3357 long var_i /* var i: Int */;
3358 long var7 /* : Int */;
3359 short int var8 /* : Bool */;
3360 short int var10 /* : Bool */;
3361 int cltype11;
3362 int idtype12;
3363 const char* var_class_name13;
3364 short int var14 /* : Bool */;
3365 val* var15 /* : Array[Couple[Object, nullable Object]] */;
3366 val* var16 /* : nullable Object */;
3367 val* var17 /* : Array[Couple[Object, nullable Object]] */;
3368 val* var18 /* : Couple[Object, nullable Object] */;
3369 /* Covariant cast for argument 0 (key) <p0:Object> isa Map#0 */
3370 /* <p0:Object> isa Map#0 */
3371 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT0];
3372 cltype = type_struct->color;
3373 idtype = type_struct->id;
3374 if(cltype >= p0->type->table_size) {
3375 var = 0;
3376 } else {
3377 var = p0->type->type_table[cltype] == idtype;
3378 }
3379 if (!var) {
3380 var_class_name = p0 == NULL ? "null" : p0->type->name;
3381 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#0", var_class_name);
3382 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 460);
3383 show_backtrace(1);
3384 }
3385 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa Map#1 */
3386 /* <p1:nullable Object> isa Map#1 */
3387 type_struct4 = self->type->resolution_table->types[COLOR_abstract_collection__Map_FT1];
3388 cltype2 = type_struct4->color;
3389 idtype3 = type_struct4->id;
3390 is_nullable = type_struct4->is_nullable;
3391 if(p1 == NULL) {
3392 var1 = is_nullable;
3393 } else {
3394 if(cltype2 >= p1->type->table_size) {
3395 var1 = 0;
3396 } else {
3397 var1 = p1->type->type_table[cltype2] == idtype3;
3398 }
3399 }
3400 if (!var1) {
3401 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
3402 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Map#1", var_class_name5);
3403 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 460);
3404 show_backtrace(1);
3405 }
3406 var_key = p0;
3407 var_item = p1;
3408 var6 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__ArrayMap__index]))(self, var_key) /* index on <self:ArrayMap[Object, nullable Object]>*/;
3409 var_i = var6;
3410 var7 = 0;
3411 { /* Inline kernel#Int#>= (var_i,var7) */
3412 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
3413 /* <var7:Int> isa OTHER */
3414 var10 = 1; /* easy <var7:Int> isa OTHER*/
3415 if (!var10) {
3416 var_class_name13 = type_kernel__Int.name;
3417 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
3418 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
3419 show_backtrace(1);
3420 }
3421 var14 = var_i >= var7;
3422 var8 = var14;
3423 goto RET_LABEL9;
3424 RET_LABEL9:(void)0;
3425 }
3426 if (var8){
3427 var15 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3428 if (var15 == NULL) {
3429 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3430 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 465);
3431 show_backtrace(1);
3432 }
3433 var16 = ((val* (*)(val*, long))(var15->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var15, var_i) /* [] on <var15:Array[Couple[Object, nullable Object]]>*/;
3434 ((void (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__Couple__second_61d]))(var16, var_item) /* second= on <var16:nullable Object(Couple[Object, nullable Object])>*/;
3435 } else {
3436 var17 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3437 if (var17 == NULL) {
3438 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3439 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 467);
3440 show_backtrace(1);
3441 }
3442 var18 = NEW_abstract_collection__Couple(self->type->resolution_table->types[COLOR_abstract_collection__Couplearray__ArrayMap_FT0array__ArrayMap_FT1]);
3443 ((void (*)(val*, val*, val*))(var18->class->vft[COLOR_abstract_collection__Couple__init]))(var18, var_key, var_item) /* init on <var18:Couple[Object, nullable Object]>*/;
3444 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__Sequence__push]))(var17, var18) /* push on <var17:Array[Couple[Object, nullable Object]]>*/;
3445 }
3446 RET_LABEL:;
3447 }
3448 /* method array#ArrayMap#[]= for (self: Object, Object, nullable Object) */
3449 void VIRTUAL_array__ArrayMap___91d_93d_61d(val* self, val* p0, val* p1) {
3450 array__ArrayMap___91d_93d_61d(self, p0, p1);
3451 RET_LABEL:;
3452 }
3453 /* method array#ArrayMap#keys for (self: ArrayMap[Object, nullable Object]): ArrayMapKeys[Object, nullable Object] */
3454 val* array__ArrayMap__keys(val* self) {
3455 val* var /* : ArrayMapKeys[Object, nullable Object] */;
3456 val* var1 /* : ArrayMapKeys[Object, nullable Object] */;
3457 var1 = self->attrs[COLOR_array__ArrayMap___64dkeys].val; /* @keys on <self:ArrayMap[Object, nullable Object]> */
3458 if (var1 == NULL) {
3459 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @keys");
3460 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 471);
3461 show_backtrace(1);
3462 }
3463 var = var1;
3464 RET_LABEL:;
3465 return var;
3466 }
3467 /* method array#ArrayMap#keys for (self: Object): Collection[Object] */
3468 val* VIRTUAL_array__ArrayMap__keys(val* self) {
3469 val* var /* : Collection[Object] */;
3470 val* var1 /* : ArrayMapKeys[Object, nullable Object] */;
3471 var1 = array__ArrayMap__keys(self);
3472 var = var1;
3473 RET_LABEL:;
3474 return var;
3475 }
3476 /* method array#ArrayMap#keys= for (self: ArrayMap[Object, nullable Object], ArrayMapKeys[Object, nullable Object]) */
3477 void array__ArrayMap__keys_61d(val* self, val* p0) {
3478 short int var /* : Bool */;
3479 int cltype;
3480 int idtype;
3481 const struct type* type_struct;
3482 const char* var_class_name;
3483 /* Covariant cast for argument 0 (keys) <p0:ArrayMapKeys[Object, nullable Object]> isa ArrayMapKeys[ArrayMap#0, ArrayMap#1] */
3484 /* <p0:ArrayMapKeys[Object, nullable Object]> isa ArrayMapKeys[ArrayMap#0, ArrayMap#1] */
3485 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMapKeysarray__ArrayMap_FT0array__ArrayMap_FT1];
3486 cltype = type_struct->color;
3487 idtype = type_struct->id;
3488 if(cltype >= p0->type->table_size) {
3489 var = 0;
3490 } else {
3491 var = p0->type->type_table[cltype] == idtype;
3492 }
3493 if (!var) {
3494 var_class_name = p0 == NULL ? "null" : p0->type->name;
3495 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMapKeys[ArrayMap#0, ArrayMap#1]", var_class_name);
3496 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 471);
3497 show_backtrace(1);
3498 }
3499 self->attrs[COLOR_array__ArrayMap___64dkeys].val = p0; /* @keys on <self:ArrayMap[Object, nullable Object]> */
3500 RET_LABEL:;
3501 }
3502 /* method array#ArrayMap#keys= for (self: Object, ArrayMapKeys[Object, nullable Object]) */
3503 void VIRTUAL_array__ArrayMap__keys_61d(val* self, val* p0) {
3504 array__ArrayMap__keys_61d(self, p0);
3505 RET_LABEL:;
3506 }
3507 /* method array#ArrayMap#values for (self: ArrayMap[Object, nullable Object]): ArrayMapValues[Object, nullable Object] */
3508 val* array__ArrayMap__values(val* self) {
3509 val* var /* : ArrayMapValues[Object, nullable Object] */;
3510 val* var1 /* : ArrayMapValues[Object, nullable Object] */;
3511 var1 = self->attrs[COLOR_array__ArrayMap___64dvalues].val; /* @values on <self:ArrayMap[Object, nullable Object]> */
3512 if (var1 == NULL) {
3513 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @values");
3514 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 472);
3515 show_backtrace(1);
3516 }
3517 var = var1;
3518 RET_LABEL:;
3519 return var;
3520 }
3521 /* method array#ArrayMap#values for (self: Object): Collection[nullable Object] */
3522 val* VIRTUAL_array__ArrayMap__values(val* self) {
3523 val* var /* : Collection[nullable Object] */;
3524 val* var1 /* : ArrayMapValues[Object, nullable Object] */;
3525 var1 = array__ArrayMap__values(self);
3526 var = var1;
3527 RET_LABEL:;
3528 return var;
3529 }
3530 /* method array#ArrayMap#values= for (self: ArrayMap[Object, nullable Object], ArrayMapValues[Object, nullable Object]) */
3531 void array__ArrayMap__values_61d(val* self, val* p0) {
3532 short int var /* : Bool */;
3533 int cltype;
3534 int idtype;
3535 const struct type* type_struct;
3536 const char* var_class_name;
3537 /* Covariant cast for argument 0 (values) <p0:ArrayMapValues[Object, nullable Object]> isa ArrayMapValues[ArrayMap#0, ArrayMap#1] */
3538 /* <p0:ArrayMapValues[Object, nullable Object]> isa ArrayMapValues[ArrayMap#0, ArrayMap#1] */
3539 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMapValuesarray__ArrayMap_FT0array__ArrayMap_FT1];
3540 cltype = type_struct->color;
3541 idtype = type_struct->id;
3542 if(cltype >= p0->type->table_size) {
3543 var = 0;
3544 } else {
3545 var = p0->type->type_table[cltype] == idtype;
3546 }
3547 if (!var) {
3548 var_class_name = p0 == NULL ? "null" : p0->type->name;
3549 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMapValues[ArrayMap#0, ArrayMap#1]", var_class_name);
3550 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 472);
3551 show_backtrace(1);
3552 }
3553 self->attrs[COLOR_array__ArrayMap___64dvalues].val = p0; /* @values on <self:ArrayMap[Object, nullable Object]> */
3554 RET_LABEL:;
3555 }
3556 /* method array#ArrayMap#values= for (self: Object, ArrayMapValues[Object, nullable Object]) */
3557 void VIRTUAL_array__ArrayMap__values_61d(val* self, val* p0) {
3558 array__ArrayMap__values_61d(self, p0);
3559 RET_LABEL:;
3560 }
3561 /* method array#ArrayMap#length for (self: ArrayMap[Object, nullable Object]): Int */
3562 long array__ArrayMap__length(val* self) {
3563 long var /* : Int */;
3564 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3565 long var2 /* : Int */;
3566 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3567 if (var1 == NULL) {
3568 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3569 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 475);
3570 show_backtrace(1);
3571 }
3572 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[Couple[Object, nullable Object]]>*/;
3573 var = var2;
3574 goto RET_LABEL;
3575 RET_LABEL:;
3576 return var;
3577 }
3578 /* method array#ArrayMap#length for (self: Object): Int */
3579 long VIRTUAL_array__ArrayMap__length(val* self) {
3580 long var /* : Int */;
3581 long var1 /* : Int */;
3582 var1 = array__ArrayMap__length(self);
3583 var = var1;
3584 RET_LABEL:;
3585 return var;
3586 }
3587 /* method array#ArrayMap#iterator for (self: ArrayMap[Object, nullable Object]): CoupleMapIterator[Object, nullable Object] */
3588 val* array__ArrayMap__iterator(val* self) {
3589 val* var /* : CoupleMapIterator[Object, nullable Object] */;
3590 val* var1 /* : CoupleMapIterator[Object, nullable Object] */;
3591 val* var2 /* : Array[Couple[Object, nullable Object]] */;
3592 val* var3 /* : Iterator[nullable Object] */;
3593 var1 = NEW_abstract_collection__CoupleMapIterator(self->type->resolution_table->types[COLOR_abstract_collection__CoupleMapIteratorarray__ArrayMap_FT0array__ArrayMap_FT1]);
3594 var2 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3595 if (var2 == NULL) {
3596 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3597 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 477);
3598 show_backtrace(1);
3599 }
3600 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[Couple[Object, nullable Object]]>*/;
3601 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__CoupleMapIterator__init]))(var1, var3) /* init on <var1:CoupleMapIterator[Object, nullable Object]>*/;
3602 var = var1;
3603 goto RET_LABEL;
3604 RET_LABEL:;
3605 return var;
3606 }
3607 /* method array#ArrayMap#iterator for (self: Object): MapIterator[Object, nullable Object] */
3608 val* VIRTUAL_array__ArrayMap__iterator(val* self) {
3609 val* var /* : MapIterator[Object, nullable Object] */;
3610 val* var1 /* : CoupleMapIterator[Object, nullable Object] */;
3611 var1 = array__ArrayMap__iterator(self);
3612 var = var1;
3613 RET_LABEL:;
3614 return var;
3615 }
3616 /* method array#ArrayMap#is_empty for (self: ArrayMap[Object, nullable Object]): Bool */
3617 short int array__ArrayMap__is_empty(val* self) {
3618 short int var /* : Bool */;
3619 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3620 short int var2 /* : Bool */;
3621 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3622 if (var1 == NULL) {
3623 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3624 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 479);
3625 show_backtrace(1);
3626 }
3627 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var1) /* is_empty on <var1:Array[Couple[Object, nullable Object]]>*/;
3628 var = var2;
3629 goto RET_LABEL;
3630 RET_LABEL:;
3631 return var;
3632 }
3633 /* method array#ArrayMap#is_empty for (self: Object): Bool */
3634 short int VIRTUAL_array__ArrayMap__is_empty(val* self) {
3635 short int var /* : Bool */;
3636 short int var1 /* : Bool */;
3637 var1 = array__ArrayMap__is_empty(self);
3638 var = var1;
3639 RET_LABEL:;
3640 return var;
3641 }
3642 /* method array#ArrayMap#clear for (self: ArrayMap[Object, nullable Object]) */
3643 void array__ArrayMap__clear(val* self) {
3644 val* var /* : Array[Couple[Object, nullable Object]] */;
3645 var = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3646 if (var == NULL) {
3647 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3648 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 481);
3649 show_backtrace(1);
3650 }
3651 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var) /* clear on <var:Array[Couple[Object, nullable Object]]>*/;
3652 RET_LABEL:;
3653 }
3654 /* method array#ArrayMap#clear for (self: Object) */
3655 void VIRTUAL_array__ArrayMap__clear(val* self) {
3656 array__ArrayMap__clear(self);
3657 RET_LABEL:;
3658 }
3659 /* method array#ArrayMap#enlarge for (self: ArrayMap[Object, nullable Object], Int) */
3660 void array__ArrayMap__enlarge(val* self, long p0) {
3661 long var_cap /* var cap: Int */;
3662 val* var /* : Array[Couple[Object, nullable Object]] */;
3663 var_cap = p0;
3664 var = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3665 if (var == NULL) {
3666 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3667 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 484);
3668 show_backtrace(1);
3669 }
3670 ((void (*)(val*, long))(var->class->vft[COLOR_array__AbstractArray__enlarge]))(var, var_cap) /* enlarge on <var:Array[Couple[Object, nullable Object]]>*/;
3671 RET_LABEL:;
3672 }
3673 /* method array#ArrayMap#enlarge for (self: Object, Int) */
3674 void VIRTUAL_array__ArrayMap__enlarge(val* self, long p0) {
3675 array__ArrayMap__enlarge(self, p0);
3676 RET_LABEL:;
3677 }
3678 /* method array#ArrayMap#couple_at for (self: ArrayMap[Object, nullable Object], Object): nullable Couple[Object, nullable Object] */
3679 val* array__ArrayMap__couple_at(val* self, val* p0) {
3680 val* var /* : nullable Couple[Object, nullable Object] */;
3681 short int var1 /* : Bool */;
3682 int cltype;
3683 int idtype;
3684 const struct type* type_struct;
3685 const char* var_class_name;
3686 val* var_key /* var key: Object */;
3687 long var2 /* : Int */;
3688 long var_i /* var i: Int */;
3689 long var3 /* : Int */;
3690 short int var4 /* : Bool */;
3691 short int var6 /* : Bool */;
3692 int cltype7;
3693 int idtype8;
3694 const char* var_class_name9;
3695 short int var10 /* : Bool */;
3696 val* var11 /* : Array[Couple[Object, nullable Object]] */;
3697 val* var12 /* : nullable Object */;
3698 val* var13 /* : null */;
3699 /* Covariant cast for argument 0 (key) <p0:Object> isa CoupleMap#0 */
3700 /* <p0:Object> isa CoupleMap#0 */
3701 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__CoupleMap_FT0];
3702 cltype = type_struct->color;
3703 idtype = type_struct->id;
3704 if(cltype >= p0->type->table_size) {
3705 var1 = 0;
3706 } else {
3707 var1 = p0->type->type_table[cltype] == idtype;
3708 }
3709 if (!var1) {
3710 var_class_name = p0 == NULL ? "null" : p0->type->name;
3711 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "CoupleMap#0", var_class_name);
3712 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 486);
3713 show_backtrace(1);
3714 }
3715 var_key = p0;
3716 var2 = ((long (*)(val*, val*))(self->class->vft[COLOR_array__ArrayMap__index]))(self, var_key) /* index on <self:ArrayMap[Object, nullable Object]>*/;
3717 var_i = var2;
3718 var3 = 0;
3719 { /* Inline kernel#Int#>= (var_i,var3) */
3720 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
3721 /* <var3:Int> isa OTHER */
3722 var6 = 1; /* easy <var3:Int> isa OTHER*/
3723 if (!var6) {
3724 var_class_name9 = type_kernel__Int.name;
3725 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
3726 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
3727 show_backtrace(1);
3728 }
3729 var10 = var_i >= var3;
3730 var4 = var10;
3731 goto RET_LABEL5;
3732 RET_LABEL5:(void)0;
3733 }
3734 if (var4){
3735 var11 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3736 if (var11 == NULL) {
3737 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3738 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 490);
3739 show_backtrace(1);
3740 }
3741 var12 = ((val* (*)(val*, long))(var11->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var11, var_i) /* [] on <var11:Array[Couple[Object, nullable Object]]>*/;
3742 var = var12;
3743 goto RET_LABEL;
3744 } else {
3745 var13 = NULL;
3746 var = var13;
3747 goto RET_LABEL;
3748 }
3749 RET_LABEL:;
3750 return var;
3751 }
3752 /* method array#ArrayMap#couple_at for (self: Object, Object): nullable Couple[Object, nullable Object] */
3753 val* VIRTUAL_array__ArrayMap__couple_at(val* self, val* p0) {
3754 val* var /* : nullable Couple[Object, nullable Object] */;
3755 val* var1 /* : nullable Couple[Object, nullable Object] */;
3756 var1 = array__ArrayMap__couple_at(self, p0);
3757 var = var1;
3758 RET_LABEL:;
3759 return var;
3760 }
3761 /* method array#ArrayMap#remove_at_index for (self: ArrayMap[Object, nullable Object], Int) */
3762 void array__ArrayMap__remove_at_index(val* self, long p0) {
3763 long var_i /* var i: Int */;
3764 val* var /* : Array[Couple[Object, nullable Object]] */;
3765 val* var1 /* : Array[Couple[Object, nullable Object]] */;
3766 val* var2 /* : nullable Object */;
3767 val* var3 /* : Array[Couple[Object, nullable Object]] */;
3768 val* var4 /* : nullable Object */;
3769 var_i = p0;
3770 var = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3771 if (var == NULL) {
3772 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3773 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 502);
3774 show_backtrace(1);
3775 }
3776 var1 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3777 if (var1 == NULL) {
3778 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3779 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 502);
3780 show_backtrace(1);
3781 }
3782 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__SequenceRead__last]))(var1) /* last on <var1:Array[Couple[Object, nullable Object]]>*/;
3783 ((void (*)(val*, long, val*))(var->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var, var_i, var2) /* []= on <var:Array[Couple[Object, nullable Object]]>*/;
3784 var3 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3785 if (var3 == NULL) {
3786 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3787 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 503);
3788 show_backtrace(1);
3789 }
3790 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Sequence__pop]))(var3) /* pop on <var3:Array[Couple[Object, nullable Object]]>*/;
3791 var4;
3792 RET_LABEL:;
3793 }
3794 /* method array#ArrayMap#remove_at_index for (self: Object, Int) */
3795 void VIRTUAL_array__ArrayMap__remove_at_index(val* self, long p0) {
3796 array__ArrayMap__remove_at_index(self, p0);
3797 RET_LABEL:;
3798 }
3799 /* method array#ArrayMap#index for (self: ArrayMap[Object, nullable Object], Object): Int */
3800 long array__ArrayMap__index(val* self, val* p0) {
3801 long var /* : Int */;
3802 short int var1 /* : Bool */;
3803 int cltype;
3804 int idtype;
3805 const struct type* type_struct;
3806 const char* var_class_name;
3807 val* var_key /* var key: Object */;
3808 long var2 /* : Int */;
3809 long var_l /* var l: Int */;
3810 short int var3 /* : Bool */;
3811 val* var4 /* : Array[Couple[Object, nullable Object]] */;
3812 long var5 /* : Int */;
3813 short int var6 /* : Bool */;
3814 short int var8 /* : Bool */;
3815 int cltype9;
3816 int idtype10;
3817 const char* var_class_name11;
3818 short int var12 /* : Bool */;
3819 short int var_ /* var : Bool */;
3820 val* var13 /* : Array[Couple[Object, nullable Object]] */;
3821 val* var14 /* : nullable Object */;
3822 val* var15 /* : nullable Object */;
3823 short int var16 /* : Bool */;
3824 long var17 /* : Int */;
3825 long var_i /* var i: Int */;
3826 val* var18 /* : Array[Couple[Object, nullable Object]] */;
3827 long var19 /* : Int */;
3828 short int var20 /* : Bool */;
3829 short int var22 /* : Bool */;
3830 int cltype23;
3831 int idtype24;
3832 const char* var_class_name25;
3833 short int var26 /* : Bool */;
3834 val* var27 /* : Array[Couple[Object, nullable Object]] */;
3835 val* var28 /* : nullable Object */;
3836 val* var29 /* : nullable Object */;
3837 short int var30 /* : Bool */;
3838 long var31 /* : Int */;
3839 long var32 /* : Int */;
3840 long var34 /* : Int */;
3841 long var35 /* : Int */;
3842 long var36 /* : Int */;
3843 long var38 /* : Int */;
3844 /* Covariant cast for argument 0 (key) <p0:Object> isa ArrayMap#0 */
3845 /* <p0:Object> isa ArrayMap#0 */
3846 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMap_FT0];
3847 cltype = type_struct->color;
3848 idtype = type_struct->id;
3849 if(cltype >= p0->type->table_size) {
3850 var1 = 0;
3851 } else {
3852 var1 = p0->type->type_table[cltype] == idtype;
3853 }
3854 if (!var1) {
3855 var_class_name = p0 == NULL ? "null" : p0->type->name;
3856 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap#0", var_class_name);
3857 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 509);
3858 show_backtrace(1);
3859 }
3860 var_key = p0;
3861 var2 = self->attrs[COLOR_array__ArrayMap___last_index].l; /* _last_index on <self:ArrayMap[Object, nullable Object]> */
3862 var_l = var2;
3863 var4 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3864 if (var4 == NULL) {
3865 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3866 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 514);
3867 show_backtrace(1);
3868 }
3869 var5 = ((long (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__length]))(var4) /* length on <var4:Array[Couple[Object, nullable Object]]>*/;
3870 { /* Inline kernel#Int#< (var_l,var5) */
3871 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
3872 /* <var5:Int> isa OTHER */
3873 var8 = 1; /* easy <var5:Int> isa OTHER*/
3874 if (!var8) {
3875 var_class_name11 = type_kernel__Int.name;
3876 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
3877 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
3878 show_backtrace(1);
3879 }
3880 var12 = var_l < var5;
3881 var6 = var12;
3882 goto RET_LABEL7;
3883 RET_LABEL7:(void)0;
3884 }
3885 var_ = var6;
3886 if (var6){
3887 var13 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3888 if (var13 == NULL) {
3889 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3890 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 514);
3891 show_backtrace(1);
3892 }
3893 var14 = ((val* (*)(val*, long))(var13->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var13, var_l) /* [] on <var13:Array[Couple[Object, nullable Object]]>*/;
3894 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_collection__Couple__first]))(var14) /* first on <var14:nullable Object(Couple[Object, nullable Object])>*/;
3895 var16 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_kernel__Object___61d_61d]))(var15, var_key) /* == on <var15:nullable Object(Object)>*/;
3896 var3 = var16;
3897 } else {
3898 var3 = var_;
3899 }
3900 if (var3){
3901 var = var_l;
3902 goto RET_LABEL;
3903 } else {
3904 }
3905 var17 = 0;
3906 var_i = var17;
3907 for(;;) {
3908 var18 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3909 if (var18 == NULL) {
3910 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3911 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 517);
3912 show_backtrace(1);
3913 }
3914 var19 = ((long (*)(val*))(var18->class->vft[COLOR_abstract_collection__Collection__length]))(var18) /* length on <var18:Array[Couple[Object, nullable Object]]>*/;
3915 { /* Inline kernel#Int#< (var_i,var19) */
3916 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
3917 /* <var19:Int> isa OTHER */
3918 var22 = 1; /* easy <var19:Int> isa OTHER*/
3919 if (!var22) {
3920 var_class_name25 = type_kernel__Int.name;
3921 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
3922 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
3923 show_backtrace(1);
3924 }
3925 var26 = var_i < var19;
3926 var20 = var26;
3927 goto RET_LABEL21;
3928 RET_LABEL21:(void)0;
3929 }
3930 if (!var20) break;
3931 var27 = self->attrs[COLOR_array__ArrayMap___items].val; /* _items on <self:ArrayMap[Object, nullable Object]> */
3932 if (var27 == NULL) {
3933 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
3934 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 518);
3935 show_backtrace(1);
3936 }
3937 var28 = ((val* (*)(val*, long))(var27->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var27, var_i) /* [] on <var27:Array[Couple[Object, nullable Object]]>*/;
3938 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Couple__first]))(var28) /* first on <var28:nullable Object(Couple[Object, nullable Object])>*/;
3939 var30 = ((short int (*)(val*, val*))(var29->class->vft[COLOR_kernel__Object___61d_61d]))(var29, var_key) /* == on <var29:nullable Object(Object)>*/;
3940 if (var30){
3941 self->attrs[COLOR_array__ArrayMap___last_index].l = var_i; /* _last_index on <self:ArrayMap[Object, nullable Object]> */
3942 var = var_i;
3943 goto RET_LABEL;
3944 } else {
3945 }
3946 var31 = 1;
3947 { /* Inline kernel#Int#+ (var_i,var31) */
3948 var34 = var_i + var31;
3949 var32 = var34;
3950 goto RET_LABEL33;
3951 RET_LABEL33:(void)0;
3952 }
3953 var_i = var32;
3954 CONTINUE_label: (void)0;
3955 }
3956 BREAK_label: (void)0;
3957 var35 = 1;
3958 { /* Inline kernel#Int#unary - (var35) */
3959 var38 = -var35;
3960 var36 = var38;
3961 goto RET_LABEL37;
3962 RET_LABEL37:(void)0;
3963 }
3964 var = var36;
3965 goto RET_LABEL;
3966 RET_LABEL:;
3967 return var;
3968 }
3969 /* method array#ArrayMap#index for (self: Object, Object): Int */
3970 long VIRTUAL_array__ArrayMap__index(val* self, val* p0) {
3971 long var /* : Int */;
3972 long var1 /* : Int */;
3973 var1 = array__ArrayMap__index(self, p0);
3974 var = var1;
3975 RET_LABEL:;
3976 return var;
3977 }
3978 /* method array#ArrayMap#init for (self: ArrayMap[Object, nullable Object]) */
3979 void array__ArrayMap__init(val* self) {
3980 val* var /* : Array[Couple[Object, nullable Object]] */;
3981 var = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayabstract_collection__Couplearray__ArrayMap_FT0array__ArrayMap_FT1]);
3982 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[Couple[Object, nullable Object]]>*/;
3983 self->attrs[COLOR_array__ArrayMap___items].val = var; /* _items on <self:ArrayMap[Object, nullable Object]> */
3984 RET_LABEL:;
3985 }
3986 /* method array#ArrayMap#init for (self: Object) */
3987 void VIRTUAL_array__ArrayMap__init(val* self) {
3988 array__ArrayMap__init(self);
3989 RET_LABEL:;
3990 }
3991 /* method array#ArrayMapKeys#map for (self: ArrayMapKeys[Object, nullable Object]): ArrayMap[Object, nullable Object] */
3992 val* array__ArrayMapKeys__map(val* self) {
3993 val* var /* : ArrayMap[Object, nullable Object] */;
3994 val* var1 /* : ArrayMap[Object, nullable Object] */;
3995 var1 = self->attrs[COLOR_array__ArrayMapKeys___64dmap].val; /* @map on <self:ArrayMapKeys[Object, nullable Object]> */
3996 if (var1 == NULL) {
3997 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @map");
3998 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 536);
3999 show_backtrace(1);
4000 }
4001 var = var1;
4002 RET_LABEL:;
4003 return var;
4004 }
4005 /* method array#ArrayMapKeys#map for (self: Object): ArrayMap[Object, nullable Object] */
4006 val* VIRTUAL_array__ArrayMapKeys__map(val* self) {
4007 val* var /* : ArrayMap[Object, nullable Object] */;
4008 val* var1 /* : ArrayMap[Object, nullable Object] */;
4009 var1 = array__ArrayMapKeys__map(self);
4010 var = var1;
4011 RET_LABEL:;
4012 return var;
4013 }
4014 /* method array#ArrayMapKeys#map= for (self: ArrayMapKeys[Object, nullable Object], ArrayMap[Object, nullable Object]) */
4015 void array__ArrayMapKeys__map_61d(val* self, val* p0) {
4016 short int var /* : Bool */;
4017 int cltype;
4018 int idtype;
4019 const struct type* type_struct;
4020 const char* var_class_name;
4021 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4022 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4023 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1];
4024 cltype = type_struct->color;
4025 idtype = type_struct->id;
4026 if(cltype >= p0->type->table_size) {
4027 var = 0;
4028 } else {
4029 var = p0->type->type_table[cltype] == idtype;
4030 }
4031 if (!var) {
4032 var_class_name = p0 == NULL ? "null" : p0->type->name;
4033 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1]", var_class_name);
4034 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 536);
4035 show_backtrace(1);
4036 }
4037 self->attrs[COLOR_array__ArrayMapKeys___64dmap].val = p0; /* @map on <self:ArrayMapKeys[Object, nullable Object]> */
4038 RET_LABEL:;
4039 }
4040 /* method array#ArrayMapKeys#map= for (self: Object, ArrayMap[Object, nullable Object]) */
4041 void VIRTUAL_array__ArrayMapKeys__map_61d(val* self, val* p0) {
4042 array__ArrayMapKeys__map_61d(self, p0);
4043 RET_LABEL:;
4044 }
4045 /* method array#ArrayMapKeys#count for (self: ArrayMapKeys[Object, nullable Object], Object): Int */
4046 long array__ArrayMapKeys__count(val* self, val* p0) {
4047 long var /* : Int */;
4048 short int var1 /* : Bool */;
4049 int cltype;
4050 int idtype;
4051 const struct type* type_struct;
4052 const char* var_class_name;
4053 val* var_k /* var k: Object */;
4054 short int var2 /* : Bool */;
4055 long var3 /* : Int */;
4056 long var4 /* : Int */;
4057 /* Covariant cast for argument 0 (k) <p0:Object> isa Collection#0 */
4058 /* <p0:Object> isa Collection#0 */
4059 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4060 cltype = type_struct->color;
4061 idtype = type_struct->id;
4062 if(cltype >= p0->type->table_size) {
4063 var1 = 0;
4064 } else {
4065 var1 = p0->type->type_table[cltype] == idtype;
4066 }
4067 if (!var1) {
4068 var_class_name = p0 == NULL ? "null" : p0->type->name;
4069 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4070 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 538);
4071 show_backtrace(1);
4072 }
4073 var_k = p0;
4074 var2 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Collection__has]))(self, var_k) /* has on <self:ArrayMapKeys[Object, nullable Object]>*/;
4075 if (var2){
4076 var3 = 1;
4077 var = var3;
4078 goto RET_LABEL;
4079 } else {
4080 var4 = 0;
4081 var = var4;
4082 goto RET_LABEL;
4083 }
4084 RET_LABEL:;
4085 return var;
4086 }
4087 /* method array#ArrayMapKeys#count for (self: Object, nullable Object): Int */
4088 long VIRTUAL_array__ArrayMapKeys__count(val* self, val* p0) {
4089 long var /* : Int */;
4090 long var1 /* : Int */;
4091 var1 = array__ArrayMapKeys__count(self, p0);
4092 var = var1;
4093 RET_LABEL:;
4094 return var;
4095 }
4096 /* method array#ArrayMapKeys#first for (self: ArrayMapKeys[Object, nullable Object]): Object */
4097 val* array__ArrayMapKeys__first(val* self) {
4098 val* var /* : Object */;
4099 val* var1 /* : ArrayMap[Object, nullable Object] */;
4100 val* var2 /* : Array[Couple[Object, nullable Object]] */;
4101 val* var3 /* : nullable Object */;
4102 val* var4 /* : nullable Object */;
4103 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4104 var2 = var1->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var1:ArrayMap[Object, nullable Object]> */
4105 if (var2 == NULL) {
4106 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4107 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 539);
4108 show_backtrace(1);
4109 }
4110 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[Couple[Object, nullable Object]]>*/;
4111 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Couple__first]))(var3) /* first on <var3:nullable Object(Couple[Object, nullable Object])>*/;
4112 var = var4;
4113 goto RET_LABEL;
4114 RET_LABEL:;
4115 return var;
4116 }
4117 /* method array#ArrayMapKeys#first for (self: Object): nullable Object */
4118 val* VIRTUAL_array__ArrayMapKeys__first(val* self) {
4119 val* var /* : nullable Object */;
4120 val* var1 /* : Object */;
4121 var1 = array__ArrayMapKeys__first(self);
4122 var = var1;
4123 RET_LABEL:;
4124 return var;
4125 }
4126 /* method array#ArrayMapKeys#has for (self: ArrayMapKeys[Object, nullable Object], Object): Bool */
4127 short int array__ArrayMapKeys__has(val* self, val* p0) {
4128 short int var /* : Bool */;
4129 short int var1 /* : Bool */;
4130 int cltype;
4131 int idtype;
4132 const struct type* type_struct;
4133 const char* var_class_name;
4134 val* var_k /* var k: Object */;
4135 val* var2 /* : ArrayMap[Object, nullable Object] */;
4136 long var3 /* : Int */;
4137 long var4 /* : Int */;
4138 short int var5 /* : Bool */;
4139 short int var7 /* : Bool */;
4140 int cltype8;
4141 int idtype9;
4142 const char* var_class_name10;
4143 short int var11 /* : Bool */;
4144 /* Covariant cast for argument 0 (k) <p0:Object> isa Collection#0 */
4145 /* <p0:Object> isa Collection#0 */
4146 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4147 cltype = type_struct->color;
4148 idtype = type_struct->id;
4149 if(cltype >= p0->type->table_size) {
4150 var1 = 0;
4151 } else {
4152 var1 = p0->type->type_table[cltype] == idtype;
4153 }
4154 if (!var1) {
4155 var_class_name = p0 == NULL ? "null" : p0->type->name;
4156 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4157 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 540);
4158 show_backtrace(1);
4159 }
4160 var_k = p0;
4161 var2 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4162 var3 = ((long (*)(val*, val*))(var2->class->vft[COLOR_array__ArrayMap__index]))(var2, var_k) /* index on <var2:ArrayMap[Object, nullable Object]>*/;
4163 var4 = 0;
4164 { /* Inline kernel#Int#>= (var3,var4) */
4165 /* Covariant cast for argument 0 (i) <var4:Int> isa OTHER */
4166 /* <var4:Int> isa OTHER */
4167 var7 = 1; /* easy <var4:Int> isa OTHER*/
4168 if (!var7) {
4169 var_class_name10 = type_kernel__Int.name;
4170 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name10);
4171 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
4172 show_backtrace(1);
4173 }
4174 var11 = var3 >= var4;
4175 var5 = var11;
4176 goto RET_LABEL6;
4177 RET_LABEL6:(void)0;
4178 }
4179 var = var5;
4180 goto RET_LABEL;
4181 RET_LABEL:;
4182 return var;
4183 }
4184 /* method array#ArrayMapKeys#has for (self: Object, nullable Object): Bool */
4185 short int VIRTUAL_array__ArrayMapKeys__has(val* self, val* p0) {
4186 short int var /* : Bool */;
4187 short int var1 /* : Bool */;
4188 var1 = array__ArrayMapKeys__has(self, p0);
4189 var = var1;
4190 RET_LABEL:;
4191 return var;
4192 }
4193 /* method array#ArrayMapKeys#has_only for (self: ArrayMapKeys[Object, nullable Object], Object): Bool */
4194 short int array__ArrayMapKeys__has_only(val* self, val* p0) {
4195 short int var /* : Bool */;
4196 short int var1 /* : Bool */;
4197 int cltype;
4198 int idtype;
4199 const struct type* type_struct;
4200 const char* var_class_name;
4201 val* var_k /* var k: Object */;
4202 short int var2 /* : Bool */;
4203 short int var3 /* : Bool */;
4204 short int var4 /* : Bool */;
4205 short int var_ /* var : Bool */;
4206 long var5 /* : Int */;
4207 long var6 /* : Int */;
4208 short int var7 /* : Bool */;
4209 short int var9 /* : Bool */;
4210 short int var_10 /* var : Bool */;
4211 short int var11 /* : Bool */;
4212 /* Covariant cast for argument 0 (k) <p0:Object> isa Collection#0 */
4213 /* <p0:Object> isa Collection#0 */
4214 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4215 cltype = type_struct->color;
4216 idtype = type_struct->id;
4217 if(cltype >= p0->type->table_size) {
4218 var1 = 0;
4219 } else {
4220 var1 = p0->type->type_table[cltype] == idtype;
4221 }
4222 if (!var1) {
4223 var_class_name = p0 == NULL ? "null" : p0->type->name;
4224 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4225 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 541);
4226 show_backtrace(1);
4227 }
4228 var_k = p0;
4229 var4 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__Collection__has]))(self, var_k) /* has on <self:ArrayMapKeys[Object, nullable Object]>*/;
4230 var_ = var4;
4231 if (var4){
4232 var5 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:ArrayMapKeys[Object, nullable Object]>*/;
4233 var6 = 1;
4234 { /* Inline kernel#Int#== (var5,var6) */
4235 var9 = var5 == var6;
4236 var7 = var9;
4237 goto RET_LABEL8;
4238 RET_LABEL8:(void)0;
4239 }
4240 var3 = var7;
4241 } else {
4242 var3 = var_;
4243 }
4244 var_10 = var3;
4245 if (var3){
4246 var2 = var_10;
4247 } else {
4248 var11 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:ArrayMapKeys[Object, nullable Object]>*/;
4249 var2 = var11;
4250 }
4251 var = var2;
4252 goto RET_LABEL;
4253 RET_LABEL:;
4254 return var;
4255 }
4256 /* method array#ArrayMapKeys#has_only for (self: Object, nullable Object): Bool */
4257 short int VIRTUAL_array__ArrayMapKeys__has_only(val* self, val* p0) {
4258 short int var /* : Bool */;
4259 short int var1 /* : Bool */;
4260 var1 = array__ArrayMapKeys__has_only(self, p0);
4261 var = var1;
4262 RET_LABEL:;
4263 return var;
4264 }
4265 /* method array#ArrayMapKeys#is_empty for (self: ArrayMapKeys[Object, nullable Object]): Bool */
4266 short int array__ArrayMapKeys__is_empty(val* self) {
4267 short int var /* : Bool */;
4268 val* var1 /* : ArrayMap[Object, nullable Object] */;
4269 short int var2 /* : Bool */;
4270 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4271 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__is_empty]))(var1) /* is_empty on <var1:ArrayMap[Object, nullable Object]>*/;
4272 var = var2;
4273 goto RET_LABEL;
4274 RET_LABEL:;
4275 return var;
4276 }
4277 /* method array#ArrayMapKeys#is_empty for (self: Object): Bool */
4278 short int VIRTUAL_array__ArrayMapKeys__is_empty(val* self) {
4279 short int var /* : Bool */;
4280 short int var1 /* : Bool */;
4281 var1 = array__ArrayMapKeys__is_empty(self);
4282 var = var1;
4283 RET_LABEL:;
4284 return var;
4285 }
4286 /* method array#ArrayMapKeys#length for (self: ArrayMapKeys[Object, nullable Object]): Int */
4287 long array__ArrayMapKeys__length(val* self) {
4288 long var /* : Int */;
4289 val* var1 /* : ArrayMap[Object, nullable Object] */;
4290 long var2 /* : Int */;
4291 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4292 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__length]))(var1) /* length on <var1:ArrayMap[Object, nullable Object]>*/;
4293 var = var2;
4294 goto RET_LABEL;
4295 RET_LABEL:;
4296 return var;
4297 }
4298 /* method array#ArrayMapKeys#length for (self: Object): Int */
4299 long VIRTUAL_array__ArrayMapKeys__length(val* self) {
4300 long var /* : Int */;
4301 long var1 /* : Int */;
4302 var1 = array__ArrayMapKeys__length(self);
4303 var = var1;
4304 RET_LABEL:;
4305 return var;
4306 }
4307 /* method array#ArrayMapKeys#iterator for (self: ArrayMapKeys[Object, nullable Object]): Iterator[Object] */
4308 val* array__ArrayMapKeys__iterator(val* self) {
4309 val* var /* : Iterator[Object] */;
4310 val* var1 /* : MapKeysIterator[Object, nullable Object] */;
4311 val* var2 /* : ArrayMap[Object, nullable Object] */;
4312 val* var3 /* : MapIterator[Object, nullable Object] */;
4313 var1 = NEW_abstract_collection__MapKeysIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapKeysIteratorarray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1]);
4314 var2 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4315 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var2) /* iterator on <var2:ArrayMap[Object, nullable Object]>*/;
4316 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapKeysIterator__init]))(var1, var3) /* init on <var1:MapKeysIterator[Object, nullable Object]>*/;
4317 var = var1;
4318 goto RET_LABEL;
4319 RET_LABEL:;
4320 return var;
4321 }
4322 /* method array#ArrayMapKeys#iterator for (self: Object): Iterator[nullable Object] */
4323 val* VIRTUAL_array__ArrayMapKeys__iterator(val* self) {
4324 val* var /* : Iterator[nullable Object] */;
4325 val* var1 /* : Iterator[Object] */;
4326 var1 = array__ArrayMapKeys__iterator(self);
4327 var = var1;
4328 RET_LABEL:;
4329 return var;
4330 }
4331 /* method array#ArrayMapKeys#clear for (self: ArrayMapKeys[Object, nullable Object]) */
4332 void array__ArrayMapKeys__clear(val* self) {
4333 val* var /* : ArrayMap[Object, nullable Object] */;
4334 var = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4335 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Map__clear]))(var) /* clear on <var:ArrayMap[Object, nullable Object]>*/;
4336 RET_LABEL:;
4337 }
4338 /* method array#ArrayMapKeys#clear for (self: Object) */
4339 void VIRTUAL_array__ArrayMapKeys__clear(val* self) {
4340 array__ArrayMapKeys__clear(self);
4341 RET_LABEL:;
4342 }
4343 /* method array#ArrayMapKeys#remove for (self: ArrayMapKeys[Object, nullable Object], Object) */
4344 void array__ArrayMapKeys__remove(val* self, val* p0) {
4345 short int var /* : Bool */;
4346 int cltype;
4347 int idtype;
4348 const struct type* type_struct;
4349 const char* var_class_name;
4350 val* var_key /* var key: Object */;
4351 val* var1 /* : ArrayMap[Object, nullable Object] */;
4352 long var2 /* : Int */;
4353 long var_i /* var i: Int */;
4354 long var3 /* : Int */;
4355 short int var4 /* : Bool */;
4356 short int var6 /* : Bool */;
4357 int cltype7;
4358 int idtype8;
4359 const char* var_class_name9;
4360 short int var10 /* : Bool */;
4361 val* var11 /* : ArrayMap[Object, nullable Object] */;
4362 /* Covariant cast for argument 0 (key) <p0:Object> isa RemovableCollection#0 */
4363 /* <p0:Object> isa RemovableCollection#0 */
4364 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
4365 cltype = type_struct->color;
4366 idtype = type_struct->id;
4367 if(cltype >= p0->type->table_size) {
4368 var = 0;
4369 } else {
4370 var = p0->type->type_table[cltype] == idtype;
4371 }
4372 if (!var) {
4373 var_class_name = p0 == NULL ? "null" : p0->type->name;
4374 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
4375 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 546);
4376 show_backtrace(1);
4377 }
4378 var_key = p0;
4379 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4380 var2 = ((long (*)(val*, val*))(var1->class->vft[COLOR_array__ArrayMap__index]))(var1, var_key) /* index on <var1:ArrayMap[Object, nullable Object]>*/;
4381 var_i = var2;
4382 var3 = 0;
4383 { /* Inline kernel#Int#>= (var_i,var3) */
4384 /* Covariant cast for argument 0 (i) <var3:Int> isa OTHER */
4385 /* <var3:Int> isa OTHER */
4386 var6 = 1; /* easy <var3:Int> isa OTHER*/
4387 if (!var6) {
4388 var_class_name9 = type_kernel__Int.name;
4389 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
4390 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
4391 show_backtrace(1);
4392 }
4393 var10 = var_i >= var3;
4394 var4 = var10;
4395 goto RET_LABEL5;
4396 RET_LABEL5:(void)0;
4397 }
4398 if (var4){
4399 var11 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapKeys__map]))(self) /* map on <self:ArrayMapKeys[Object, nullable Object]>*/;
4400 ((void (*)(val*, long))(var11->class->vft[COLOR_array__ArrayMap__remove_at_index]))(var11, var_i) /* remove_at_index on <var11:ArrayMap[Object, nullable Object]>*/;
4401 } else {
4402 }
4403 RET_LABEL:;
4404 }
4405 /* method array#ArrayMapKeys#remove for (self: Object, nullable Object) */
4406 void VIRTUAL_array__ArrayMapKeys__remove(val* self, val* p0) {
4407 array__ArrayMapKeys__remove(self, p0);
4408 RET_LABEL:;
4409 }
4410 /* method array#ArrayMapKeys#remove_all for (self: ArrayMapKeys[Object, nullable Object], Object) */
4411 void array__ArrayMapKeys__remove_all(val* self, val* p0) {
4412 short int var /* : Bool */;
4413 int cltype;
4414 int idtype;
4415 const struct type* type_struct;
4416 const char* var_class_name;
4417 val* var_key /* var key: Object */;
4418 /* Covariant cast for argument 0 (key) <p0:Object> isa RemovableCollection#0 */
4419 /* <p0:Object> isa RemovableCollection#0 */
4420 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
4421 cltype = type_struct->color;
4422 idtype = type_struct->id;
4423 if(cltype >= p0->type->table_size) {
4424 var = 0;
4425 } else {
4426 var = p0->type->type_table[cltype] == idtype;
4427 }
4428 if (!var) {
4429 var_class_name = p0 == NULL ? "null" : p0->type->name;
4430 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
4431 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 551);
4432 show_backtrace(1);
4433 }
4434 var_key = p0;
4435 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(self, var_key) /* remove on <self:ArrayMapKeys[Object, nullable Object]>*/;
4436 RET_LABEL:;
4437 }
4438 /* method array#ArrayMapKeys#remove_all for (self: Object, nullable Object) */
4439 void VIRTUAL_array__ArrayMapKeys__remove_all(val* self, val* p0) {
4440 array__ArrayMapKeys__remove_all(self, p0);
4441 RET_LABEL:;
4442 }
4443 /* method array#ArrayMapKeys#init for (self: ArrayMapKeys[Object, nullable Object], ArrayMap[Object, nullable Object]) */
4444 void array__ArrayMapKeys__init(val* self, val* p0) {
4445 short int var /* : Bool */;
4446 int cltype;
4447 int idtype;
4448 const struct type* type_struct;
4449 const char* var_class_name;
4450 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4451 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1] */
4452 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapKeys_FT0array__ArrayMapKeys_FT1];
4453 cltype = type_struct->color;
4454 idtype = type_struct->id;
4455 if(cltype >= p0->type->table_size) {
4456 var = 0;
4457 } else {
4458 var = p0->type->type_table[cltype] == idtype;
4459 }
4460 if (!var) {
4461 var_class_name = p0 == NULL ? "null" : p0->type->name;
4462 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapKeys#0, ArrayMapKeys#1]", var_class_name);
4463 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 534);
4464 show_backtrace(1);
4465 }
4466 self->attrs[COLOR_array__ArrayMapKeys___64dmap].val = p0; /* @map on <self:ArrayMapKeys[Object, nullable Object]> */
4467 RET_LABEL:;
4468 }
4469 /* method array#ArrayMapKeys#init for (self: Object, ArrayMap[Object, nullable Object]) */
4470 void VIRTUAL_array__ArrayMapKeys__init(val* self, val* p0) {
4471 array__ArrayMapKeys__init(self, p0);
4472 RET_LABEL:;
4473 }
4474 /* method array#ArrayMapValues#map for (self: ArrayMapValues[Object, nullable Object]): ArrayMap[Object, nullable Object] */
4475 val* array__ArrayMapValues__map(val* self) {
4476 val* var /* : ArrayMap[Object, nullable Object] */;
4477 val* var1 /* : ArrayMap[Object, nullable Object] */;
4478 var1 = self->attrs[COLOR_array__ArrayMapValues___64dmap].val; /* @map on <self:ArrayMapValues[Object, nullable Object]> */
4479 if (var1 == NULL) {
4480 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @map");
4481 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 556);
4482 show_backtrace(1);
4483 }
4484 var = var1;
4485 RET_LABEL:;
4486 return var;
4487 }
4488 /* method array#ArrayMapValues#map for (self: Object): ArrayMap[Object, nullable Object] */
4489 val* VIRTUAL_array__ArrayMapValues__map(val* self) {
4490 val* var /* : ArrayMap[Object, nullable Object] */;
4491 val* var1 /* : ArrayMap[Object, nullable Object] */;
4492 var1 = array__ArrayMapValues__map(self);
4493 var = var1;
4494 RET_LABEL:;
4495 return var;
4496 }
4497 /* method array#ArrayMapValues#map= for (self: ArrayMapValues[Object, nullable Object], ArrayMap[Object, nullable Object]) */
4498 void array__ArrayMapValues__map_61d(val* self, val* p0) {
4499 short int var /* : Bool */;
4500 int cltype;
4501 int idtype;
4502 const struct type* type_struct;
4503 const char* var_class_name;
4504 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4505 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
4506 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapValues_FT0array__ArrayMapValues_FT1];
4507 cltype = type_struct->color;
4508 idtype = type_struct->id;
4509 if(cltype >= p0->type->table_size) {
4510 var = 0;
4511 } else {
4512 var = p0->type->type_table[cltype] == idtype;
4513 }
4514 if (!var) {
4515 var_class_name = p0 == NULL ? "null" : p0->type->name;
4516 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapValues#0, ArrayMapValues#1]", var_class_name);
4517 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 556);
4518 show_backtrace(1);
4519 }
4520 self->attrs[COLOR_array__ArrayMapValues___64dmap].val = p0; /* @map on <self:ArrayMapValues[Object, nullable Object]> */
4521 RET_LABEL:;
4522 }
4523 /* method array#ArrayMapValues#map= for (self: Object, ArrayMap[Object, nullable Object]) */
4524 void VIRTUAL_array__ArrayMapValues__map_61d(val* self, val* p0) {
4525 array__ArrayMapValues__map_61d(self, p0);
4526 RET_LABEL:;
4527 }
4528 /* method array#ArrayMapValues#first for (self: ArrayMapValues[Object, nullable Object]): nullable Object */
4529 val* array__ArrayMapValues__first(val* self) {
4530 val* var /* : nullable Object */;
4531 val* var1 /* : ArrayMap[Object, nullable Object] */;
4532 val* var2 /* : Array[Couple[Object, nullable Object]] */;
4533 val* var3 /* : nullable Object */;
4534 val* var4 /* : nullable Object */;
4535 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4536 var2 = var1->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var1:ArrayMap[Object, nullable Object]> */
4537 if (var2 == NULL) {
4538 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4539 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 558);
4540 show_backtrace(1);
4541 }
4542 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[Couple[Object, nullable Object]]>*/;
4543 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Couple__second]))(var3) /* second on <var3:nullable Object(Couple[Object, nullable Object])>*/;
4544 var = var4;
4545 goto RET_LABEL;
4546 RET_LABEL:;
4547 return var;
4548 }
4549 /* method array#ArrayMapValues#first for (self: Object): nullable Object */
4550 val* VIRTUAL_array__ArrayMapValues__first(val* self) {
4551 val* var /* : nullable Object */;
4552 val* var1 /* : nullable Object */;
4553 var1 = array__ArrayMapValues__first(self);
4554 var = var1;
4555 RET_LABEL:;
4556 return var;
4557 }
4558 /* method array#ArrayMapValues#is_empty for (self: ArrayMapValues[Object, nullable Object]): Bool */
4559 short int array__ArrayMapValues__is_empty(val* self) {
4560 short int var /* : Bool */;
4561 val* var1 /* : ArrayMap[Object, nullable Object] */;
4562 short int var2 /* : Bool */;
4563 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4564 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__is_empty]))(var1) /* is_empty on <var1:ArrayMap[Object, nullable Object]>*/;
4565 var = var2;
4566 goto RET_LABEL;
4567 RET_LABEL:;
4568 return var;
4569 }
4570 /* method array#ArrayMapValues#is_empty for (self: Object): Bool */
4571 short int VIRTUAL_array__ArrayMapValues__is_empty(val* self) {
4572 short int var /* : Bool */;
4573 short int var1 /* : Bool */;
4574 var1 = array__ArrayMapValues__is_empty(self);
4575 var = var1;
4576 RET_LABEL:;
4577 return var;
4578 }
4579 /* method array#ArrayMapValues#length for (self: ArrayMapValues[Object, nullable Object]): Int */
4580 long array__ArrayMapValues__length(val* self) {
4581 long var /* : Int */;
4582 val* var1 /* : ArrayMap[Object, nullable Object] */;
4583 long var2 /* : Int */;
4584 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4585 var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapRead__length]))(var1) /* length on <var1:ArrayMap[Object, nullable Object]>*/;
4586 var = var2;
4587 goto RET_LABEL;
4588 RET_LABEL:;
4589 return var;
4590 }
4591 /* method array#ArrayMapValues#length for (self: Object): Int */
4592 long VIRTUAL_array__ArrayMapValues__length(val* self) {
4593 long var /* : Int */;
4594 long var1 /* : Int */;
4595 var1 = array__ArrayMapValues__length(self);
4596 var = var1;
4597 RET_LABEL:;
4598 return var;
4599 }
4600 /* method array#ArrayMapValues#iterator for (self: ArrayMapValues[Object, nullable Object]): Iterator[nullable Object] */
4601 val* array__ArrayMapValues__iterator(val* self) {
4602 val* var /* : Iterator[nullable Object] */;
4603 val* var1 /* : MapValuesIterator[Object, nullable Object] */;
4604 val* var2 /* : ArrayMap[Object, nullable Object] */;
4605 val* var3 /* : MapIterator[Object, nullable Object] */;
4606 var1 = NEW_abstract_collection__MapValuesIterator(self->type->resolution_table->types[COLOR_abstract_collection__MapValuesIteratorarray__ArrayMapValues_FT0array__ArrayMapValues_FT1]);
4607 var2 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4608 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var2) /* iterator on <var2:ArrayMap[Object, nullable Object]>*/;
4609 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapValuesIterator__init]))(var1, var3) /* init on <var1:MapValuesIterator[Object, nullable Object]>*/;
4610 var = var1;
4611 goto RET_LABEL;
4612 RET_LABEL:;
4613 return var;
4614 }
4615 /* method array#ArrayMapValues#iterator for (self: Object): Iterator[nullable Object] */
4616 val* VIRTUAL_array__ArrayMapValues__iterator(val* self) {
4617 val* var /* : Iterator[nullable Object] */;
4618 val* var1 /* : Iterator[nullable Object] */;
4619 var1 = array__ArrayMapValues__iterator(self);
4620 var = var1;
4621 RET_LABEL:;
4622 return var;
4623 }
4624 /* method array#ArrayMapValues#has for (self: ArrayMapValues[Object, nullable Object], nullable Object): Bool */
4625 short int array__ArrayMapValues__has(val* self, val* p0) {
4626 short int var /* : Bool */;
4627 short int var1 /* : Bool */;
4628 int cltype;
4629 int idtype;
4630 const struct type* type_struct;
4631 short int is_nullable;
4632 const char* var_class_name;
4633 val* var_item /* var item: nullable Object */;
4634 val* var2 /* : ArrayMap[Object, nullable Object] */;
4635 val* var3 /* : Array[Couple[Object, nullable Object]] */;
4636 val* var4 /* : Iterator[nullable Object] */;
4637 short int var5 /* : Bool */;
4638 val* var6 /* : nullable Object */;
4639 val* var_i /* var i: Couple[Object, nullable Object] */;
4640 val* var7 /* : nullable Object */;
4641 short int var8 /* : Bool */;
4642 short int var9 /* : Bool */;
4643 short int var10 /* : Bool */;
4644 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
4645 /* <p0:nullable Object> isa Collection#0 */
4646 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4647 cltype = type_struct->color;
4648 idtype = type_struct->id;
4649 is_nullable = type_struct->is_nullable;
4650 if(p0 == NULL) {
4651 var1 = is_nullable;
4652 } else {
4653 if(cltype >= p0->type->table_size) {
4654 var1 = 0;
4655 } else {
4656 var1 = p0->type->type_table[cltype] == idtype;
4657 }
4658 }
4659 if (!var1) {
4660 var_class_name = p0 == NULL ? "null" : p0->type->name;
4661 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4662 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 563);
4663 show_backtrace(1);
4664 }
4665 var_item = p0;
4666 var2 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4667 var3 = var2->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var2:ArrayMap[Object, nullable Object]> */
4668 if (var3 == NULL) {
4669 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4670 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 566);
4671 show_backtrace(1);
4672 }
4673 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:Array[Couple[Object, nullable Object]]>*/;
4674 for(;;) {
4675 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
4676 if(!var5) break;
4677 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
4678 var_i = var6;
4679 var7 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Couple__second]))(var_i) /* second on <var_i:Couple[Object, nullable Object]>*/;
4680 if (var7 == NULL) {
4681 var8 = (var_item == NULL);
4682 } else {
4683 var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_kernel__Object___61d_61d]))(var7, var_item) /* == on <var7:nullable Object>*/;
4684 }
4685 if (var8){
4686 var9 = 1;
4687 var = var9;
4688 goto RET_LABEL;
4689 } else {
4690 }
4691 CONTINUE_label: (void)0;
4692 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
4693 }
4694 BREAK_label: (void)0;
4695 var10 = 0;
4696 var = var10;
4697 goto RET_LABEL;
4698 RET_LABEL:;
4699 return var;
4700 }
4701 /* method array#ArrayMapValues#has for (self: Object, nullable Object): Bool */
4702 short int VIRTUAL_array__ArrayMapValues__has(val* self, val* p0) {
4703 short int var /* : Bool */;
4704 short int var1 /* : Bool */;
4705 var1 = array__ArrayMapValues__has(self, p0);
4706 var = var1;
4707 RET_LABEL:;
4708 return var;
4709 }
4710 /* method array#ArrayMapValues#has_only for (self: ArrayMapValues[Object, nullable Object], nullable Object): Bool */
4711 short int array__ArrayMapValues__has_only(val* self, val* p0) {
4712 short int var /* : Bool */;
4713 short int var1 /* : Bool */;
4714 int cltype;
4715 int idtype;
4716 const struct type* type_struct;
4717 short int is_nullable;
4718 const char* var_class_name;
4719 val* var_item /* var item: nullable Object */;
4720 val* var2 /* : ArrayMap[Object, nullable Object] */;
4721 val* var3 /* : Array[Couple[Object, nullable Object]] */;
4722 val* var4 /* : Iterator[nullable Object] */;
4723 short int var5 /* : Bool */;
4724 val* var6 /* : nullable Object */;
4725 val* var_i /* var i: Couple[Object, nullable Object] */;
4726 val* var7 /* : nullable Object */;
4727 short int var8 /* : Bool */;
4728 short int var9 /* : Bool */;
4729 short int var10 /* : Bool */;
4730 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
4731 /* <p0:nullable Object> isa Collection#0 */
4732 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4733 cltype = type_struct->color;
4734 idtype = type_struct->id;
4735 is_nullable = type_struct->is_nullable;
4736 if(p0 == NULL) {
4737 var1 = is_nullable;
4738 } else {
4739 if(cltype >= p0->type->table_size) {
4740 var1 = 0;
4741 } else {
4742 var1 = p0->type->type_table[cltype] == idtype;
4743 }
4744 }
4745 if (!var1) {
4746 var_class_name = p0 == NULL ? "null" : p0->type->name;
4747 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4748 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 570);
4749 show_backtrace(1);
4750 }
4751 var_item = p0;
4752 var2 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4753 var3 = var2->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var2:ArrayMap[Object, nullable Object]> */
4754 if (var3 == NULL) {
4755 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4756 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 573);
4757 show_backtrace(1);
4758 }
4759 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:Array[Couple[Object, nullable Object]]>*/;
4760 for(;;) {
4761 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
4762 if(!var5) break;
4763 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
4764 var_i = var6;
4765 var7 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Couple__second]))(var_i) /* second on <var_i:Couple[Object, nullable Object]>*/;
4766 if (var7 == NULL) {
4767 var8 = (var_item != NULL);
4768 } else {
4769 var8 = ((short int (*)(val*, val*))(var7->class->vft[COLOR_kernel__Object___33d_61d]))(var7, var_item) /* != on <var7:nullable Object>*/;
4770 }
4771 if (var8){
4772 var9 = 0;
4773 var = var9;
4774 goto RET_LABEL;
4775 } else {
4776 }
4777 CONTINUE_label: (void)0;
4778 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
4779 }
4780 BREAK_label: (void)0;
4781 var10 = 1;
4782 var = var10;
4783 goto RET_LABEL;
4784 RET_LABEL:;
4785 return var;
4786 }
4787 /* method array#ArrayMapValues#has_only for (self: Object, nullable Object): Bool */
4788 short int VIRTUAL_array__ArrayMapValues__has_only(val* self, val* p0) {
4789 short int var /* : Bool */;
4790 short int var1 /* : Bool */;
4791 var1 = array__ArrayMapValues__has_only(self, p0);
4792 var = var1;
4793 RET_LABEL:;
4794 return var;
4795 }
4796 /* method array#ArrayMapValues#count for (self: ArrayMapValues[Object, nullable Object], nullable Object): Int */
4797 long array__ArrayMapValues__count(val* self, val* p0) {
4798 long var /* : Int */;
4799 short int var1 /* : Bool */;
4800 int cltype;
4801 int idtype;
4802 const struct type* type_struct;
4803 short int is_nullable;
4804 const char* var_class_name;
4805 val* var_item /* var item: nullable Object */;
4806 long var2 /* : Int */;
4807 long var_nb /* var nb: Int */;
4808 val* var3 /* : ArrayMap[Object, nullable Object] */;
4809 val* var4 /* : Array[Couple[Object, nullable Object]] */;
4810 val* var5 /* : Iterator[nullable Object] */;
4811 short int var6 /* : Bool */;
4812 val* var7 /* : nullable Object */;
4813 val* var_i /* var i: Couple[Object, nullable Object] */;
4814 val* var8 /* : nullable Object */;
4815 short int var9 /* : Bool */;
4816 long var10 /* : Int */;
4817 long var11 /* : Int */;
4818 long var13 /* : Int */;
4819 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa Collection#0 */
4820 /* <p0:nullable Object> isa Collection#0 */
4821 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collection_FT0];
4822 cltype = type_struct->color;
4823 idtype = type_struct->id;
4824 is_nullable = type_struct->is_nullable;
4825 if(p0 == NULL) {
4826 var1 = is_nullable;
4827 } else {
4828 if(cltype >= p0->type->table_size) {
4829 var1 = 0;
4830 } else {
4831 var1 = p0->type->type_table[cltype] == idtype;
4832 }
4833 }
4834 if (!var1) {
4835 var_class_name = p0 == NULL ? "null" : p0->type->name;
4836 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection#0", var_class_name);
4837 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 577);
4838 show_backtrace(1);
4839 }
4840 var_item = p0;
4841 var2 = 0;
4842 var_nb = var2;
4843 var3 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4844 var4 = var3->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var3:ArrayMap[Object, nullable Object]> */
4845 if (var4 == NULL) {
4846 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4847 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 581);
4848 show_backtrace(1);
4849 }
4850 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Array[Couple[Object, nullable Object]]>*/;
4851 for(;;) {
4852 var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
4853 if(!var6) break;
4854 var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
4855 var_i = var7;
4856 var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Couple__second]))(var_i) /* second on <var_i:Couple[Object, nullable Object]>*/;
4857 if (var8 == NULL) {
4858 var9 = (var_item == NULL);
4859 } else {
4860 var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___61d_61d]))(var8, var_item) /* == on <var8:nullable Object>*/;
4861 }
4862 if (var9){
4863 var10 = 1;
4864 { /* Inline kernel#Int#+ (var_nb,var10) */
4865 var13 = var_nb + var10;
4866 var11 = var13;
4867 goto RET_LABEL12;
4868 RET_LABEL12:(void)0;
4869 }
4870 var_nb = var11;
4871 } else {
4872 }
4873 CONTINUE_label: (void)0;
4874 ((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
4875 }
4876 BREAK_label: (void)0;
4877 var = var_nb;
4878 goto RET_LABEL;
4879 RET_LABEL:;
4880 return var;
4881 }
4882 /* method array#ArrayMapValues#count for (self: Object, nullable Object): Int */
4883 long VIRTUAL_array__ArrayMapValues__count(val* self, val* p0) {
4884 long var /* : Int */;
4885 long var1 /* : Int */;
4886 var1 = array__ArrayMapValues__count(self, p0);
4887 var = var1;
4888 RET_LABEL:;
4889 return var;
4890 }
4891 /* method array#ArrayMapValues#clear for (self: ArrayMapValues[Object, nullable Object]) */
4892 void array__ArrayMapValues__clear(val* self) {
4893 val* var /* : ArrayMap[Object, nullable Object] */;
4894 var = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4895 ((void (*)(val*))(var->class->vft[COLOR_abstract_collection__Map__clear]))(var) /* clear on <var:ArrayMap[Object, nullable Object]>*/;
4896 RET_LABEL:;
4897 }
4898 /* method array#ArrayMapValues#clear for (self: Object) */
4899 void VIRTUAL_array__ArrayMapValues__clear(val* self) {
4900 array__ArrayMapValues__clear(self);
4901 RET_LABEL:;
4902 }
4903 /* method array#ArrayMapValues#remove for (self: ArrayMapValues[Object, nullable Object], nullable Object) */
4904 void array__ArrayMapValues__remove(val* self, val* p0) {
4905 short int var /* : Bool */;
4906 int cltype;
4907 int idtype;
4908 const struct type* type_struct;
4909 short int is_nullable;
4910 const char* var_class_name;
4911 val* var_item /* var item: nullable Object */;
4912 val* var1 /* : ArrayMap[Object, nullable Object] */;
4913 val* var_map /* var map: ArrayMap[Object, nullable Object] */;
4914 val* var2 /* : Array[Couple[Object, nullable Object]] */;
4915 long var3 /* : Int */;
4916 long var4 /* : Int */;
4917 long var5 /* : Int */;
4918 long var7 /* : Int */;
4919 long var_i /* var i: Int */;
4920 long var8 /* : Int */;
4921 short int var9 /* : Bool */;
4922 short int var11 /* : Bool */;
4923 int cltype12;
4924 int idtype13;
4925 const char* var_class_name14;
4926 short int var15 /* : Bool */;
4927 val* var16 /* : Array[Couple[Object, nullable Object]] */;
4928 val* var17 /* : nullable Object */;
4929 val* var18 /* : nullable Object */;
4930 short int var19 /* : Bool */;
4931 long var20 /* : Int */;
4932 long var21 /* : Int */;
4933 long var23 /* : Int */;
4934 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
4935 /* <p0:nullable Object> isa RemovableCollection#0 */
4936 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
4937 cltype = type_struct->color;
4938 idtype = type_struct->id;
4939 is_nullable = type_struct->is_nullable;
4940 if(p0 == NULL) {
4941 var = is_nullable;
4942 } else {
4943 if(cltype >= p0->type->table_size) {
4944 var = 0;
4945 } else {
4946 var = p0->type->type_table[cltype] == idtype;
4947 }
4948 }
4949 if (!var) {
4950 var_class_name = p0 == NULL ? "null" : p0->type->name;
4951 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
4952 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 587);
4953 show_backtrace(1);
4954 }
4955 var_item = p0;
4956 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
4957 var_map = var1;
4958 var2 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
4959 if (var2 == NULL) {
4960 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4961 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 590);
4962 show_backtrace(1);
4963 }
4964 var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:Array[Couple[Object, nullable Object]]>*/;
4965 var4 = 1;
4966 { /* Inline kernel#Int#- (var3,var4) */
4967 var7 = var3 - var4;
4968 var5 = var7;
4969 goto RET_LABEL6;
4970 RET_LABEL6:(void)0;
4971 }
4972 var_i = var5;
4973 for(;;) {
4974 var8 = 0;
4975 { /* Inline kernel#Int#>= (var_i,var8) */
4976 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
4977 /* <var8:Int> isa OTHER */
4978 var11 = 1; /* easy <var8:Int> isa OTHER*/
4979 if (!var11) {
4980 var_class_name14 = type_kernel__Int.name;
4981 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
4982 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
4983 show_backtrace(1);
4984 }
4985 var15 = var_i >= var8;
4986 var9 = var15;
4987 goto RET_LABEL10;
4988 RET_LABEL10:(void)0;
4989 }
4990 if (!var9) break;
4991 var16 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
4992 if (var16 == NULL) {
4993 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
4994 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 592);
4995 show_backtrace(1);
4996 }
4997 var17 = ((val* (*)(val*, long))(var16->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var16, var_i) /* [] on <var16:Array[Couple[Object, nullable Object]]>*/;
4998 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Couple__second]))(var17) /* second on <var17:nullable Object(Couple[Object, nullable Object])>*/;
4999 if (var18 == NULL) {
5000 var19 = (var_item == NULL);
5001 } else {
5002 var19 = ((short int (*)(val*, val*))(var18->class->vft[COLOR_kernel__Object___61d_61d]))(var18, var_item) /* == on <var18:nullable Object>*/;
5003 }
5004 if (var19){
5005 ((void (*)(val*, long))(var_map->class->vft[COLOR_array__ArrayMap__remove_at_index]))(var_map, var_i) /* remove_at_index on <var_map:ArrayMap[Object, nullable Object]>*/;
5006 goto RET_LABEL;
5007 } else {
5008 }
5009 var20 = 1;
5010 { /* Inline kernel#Int#- (var_i,var20) */
5011 var23 = var_i - var20;
5012 var21 = var23;
5013 goto RET_LABEL22;
5014 RET_LABEL22:(void)0;
5015 }
5016 var_i = var21;
5017 CONTINUE_label: (void)0;
5018 }
5019 BREAK_label: (void)0;
5020 RET_LABEL:;
5021 }
5022 /* method array#ArrayMapValues#remove for (self: Object, nullable Object) */
5023 void VIRTUAL_array__ArrayMapValues__remove(val* self, val* p0) {
5024 array__ArrayMapValues__remove(self, p0);
5025 RET_LABEL:;
5026 }
5027 /* method array#ArrayMapValues#remove_all for (self: ArrayMapValues[Object, nullable Object], nullable Object) */
5028 void array__ArrayMapValues__remove_all(val* self, val* p0) {
5029 short int var /* : Bool */;
5030 int cltype;
5031 int idtype;
5032 const struct type* type_struct;
5033 short int is_nullable;
5034 const char* var_class_name;
5035 val* var_item /* var item: nullable Object */;
5036 val* var1 /* : ArrayMap[Object, nullable Object] */;
5037 val* var_map /* var map: ArrayMap[Object, nullable Object] */;
5038 val* var2 /* : Array[Couple[Object, nullable Object]] */;
5039 long var3 /* : Int */;
5040 long var4 /* : Int */;
5041 long var5 /* : Int */;
5042 long var7 /* : Int */;
5043 long var_i /* var i: Int */;
5044 long var8 /* : Int */;
5045 short int var9 /* : Bool */;
5046 short int var11 /* : Bool */;
5047 int cltype12;
5048 int idtype13;
5049 const char* var_class_name14;
5050 short int var15 /* : Bool */;
5051 val* var16 /* : Array[Couple[Object, nullable Object]] */;
5052 val* var17 /* : nullable Object */;
5053 val* var18 /* : nullable Object */;
5054 short int var19 /* : Bool */;
5055 long var20 /* : Int */;
5056 long var21 /* : Int */;
5057 long var23 /* : Int */;
5058 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa RemovableCollection#0 */
5059 /* <p0:nullable Object> isa RemovableCollection#0 */
5060 type_struct = self->type->resolution_table->types[COLOR_abstract_collection__RemovableCollection_FT0];
5061 cltype = type_struct->color;
5062 idtype = type_struct->id;
5063 is_nullable = type_struct->is_nullable;
5064 if(p0 == NULL) {
5065 var = is_nullable;
5066 } else {
5067 if(cltype >= p0->type->table_size) {
5068 var = 0;
5069 } else {
5070 var = p0->type->type_table[cltype] == idtype;
5071 }
5072 }
5073 if (!var) {
5074 var_class_name = p0 == NULL ? "null" : p0->type->name;
5075 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "RemovableCollection#0", var_class_name);
5076 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 600);
5077 show_backtrace(1);
5078 }
5079 var_item = p0;
5080 var1 = ((val* (*)(val*))(self->class->vft[COLOR_array__ArrayMapValues__map]))(self) /* map on <self:ArrayMapValues[Object, nullable Object]>*/;
5081 var_map = var1;
5082 var2 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
5083 if (var2 == NULL) {
5084 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
5085 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 603);
5086 show_backtrace(1);
5087 }
5088 var3 = ((long (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__length]))(var2) /* length on <var2:Array[Couple[Object, nullable Object]]>*/;
5089 var4 = 1;
5090 { /* Inline kernel#Int#- (var3,var4) */
5091 var7 = var3 - var4;
5092 var5 = var7;
5093 goto RET_LABEL6;
5094 RET_LABEL6:(void)0;
5095 }
5096 var_i = var5;
5097 for(;;) {
5098 var8 = 0;
5099 { /* Inline kernel#Int#>= (var_i,var8) */
5100 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
5101 /* <var8:Int> isa OTHER */
5102 var11 = 1; /* easy <var8:Int> isa OTHER*/
5103 if (!var11) {
5104 var_class_name14 = type_kernel__Int.name;
5105 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
5106 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
5107 show_backtrace(1);
5108 }
5109 var15 = var_i >= var8;
5110 var9 = var15;
5111 goto RET_LABEL10;
5112 RET_LABEL10:(void)0;
5113 }
5114 if (!var9) break;
5115 var16 = var_map->attrs[COLOR_array__ArrayMap___items].val; /* _items on <var_map:ArrayMap[Object, nullable Object]> */
5116 if (var16 == NULL) {
5117 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute _items");
5118 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 605);
5119 show_backtrace(1);
5120 }
5121 var17 = ((val* (*)(val*, long))(var16->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var16, var_i) /* [] on <var16:Array[Couple[Object, nullable Object]]>*/;
5122 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Couple__second]))(var17) /* second on <var17:nullable Object(Couple[Object, nullable Object])>*/;
5123 if (var18 == NULL) {
5124 var19 = (var_item == NULL);
5125 } else {
5126 var19 = ((short int (*)(val*, val*))(var18->class->vft[COLOR_kernel__Object___61d_61d]))(var18, var_item) /* == on <var18:nullable Object>*/;
5127 }
5128 if (var19){
5129 ((void (*)(val*, long))(var_map->class->vft[COLOR_array__ArrayMap__remove_at_index]))(var_map, var_i) /* remove_at_index on <var_map:ArrayMap[Object, nullable Object]>*/;
5130 } else {
5131 }
5132 var20 = 1;
5133 { /* Inline kernel#Int#- (var_i,var20) */
5134 var23 = var_i - var20;
5135 var21 = var23;
5136 goto RET_LABEL22;
5137 RET_LABEL22:(void)0;
5138 }
5139 var_i = var21;
5140 CONTINUE_label: (void)0;
5141 }
5142 BREAK_label: (void)0;
5143 RET_LABEL:;
5144 }
5145 /* method array#ArrayMapValues#remove_all for (self: Object, nullable Object) */
5146 void VIRTUAL_array__ArrayMapValues__remove_all(val* self, val* p0) {
5147 array__ArrayMapValues__remove_all(self, p0);
5148 RET_LABEL:;
5149 }
5150 /* method array#ArrayMapValues#init for (self: ArrayMapValues[Object, nullable Object], ArrayMap[Object, nullable Object]) */
5151 void array__ArrayMapValues__init(val* self, val* p0) {
5152 short int var /* : Bool */;
5153 int cltype;
5154 int idtype;
5155 const struct type* type_struct;
5156 const char* var_class_name;
5157 /* Covariant cast for argument 0 (map) <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
5158 /* <p0:ArrayMap[Object, nullable Object]> isa ArrayMap[ArrayMapValues#0, ArrayMapValues#1] */
5159 type_struct = self->type->resolution_table->types[COLOR_array__ArrayMaparray__ArrayMapValues_FT0array__ArrayMapValues_FT1];
5160 cltype = type_struct->color;
5161 idtype = type_struct->id;
5162 if(cltype >= p0->type->table_size) {
5163 var = 0;
5164 } else {
5165 var = p0->type->type_table[cltype] == idtype;
5166 }
5167 if (!var) {
5168 var_class_name = p0 == NULL ? "null" : p0->type->name;
5169 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "ArrayMap[ArrayMapValues#0, ArrayMapValues#1]", var_class_name);
5170 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 554);
5171 show_backtrace(1);
5172 }
5173 self->attrs[COLOR_array__ArrayMapValues___64dmap].val = p0; /* @map on <self:ArrayMapValues[Object, nullable Object]> */
5174 RET_LABEL:;
5175 }
5176 /* method array#ArrayMapValues#init for (self: Object, ArrayMap[Object, nullable Object]) */
5177 void VIRTUAL_array__ArrayMapValues__init(val* self, val* p0) {
5178 array__ArrayMapValues__init(self, p0);
5179 RET_LABEL:;
5180 }
5181 /* method array#Iterator#to_a for (self: Iterator[nullable Object]): Array[nullable Object] */
5182 val* array__Iterator__to_a(val* self) {
5183 val* var /* : Array[nullable Object] */;
5184 val* var1 /* : Array[nullable Object] */;
5185 val* var_res /* var res: Array[nullable Object] */;
5186 short int var2 /* : Bool */;
5187 val* var3 /* : nullable Object */;
5188 var1 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arrayabstract_collection__Iterator_FT0]);
5189 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[nullable Object]>*/;
5190 var_res = var1;
5191 for(;;) {
5192 var2 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(self) /* is_ok on <self:Iterator[nullable Object]>*/;
5193 if (!var2) break;
5194 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__item]))(self) /* item on <self:Iterator[nullable Object]>*/;
5195 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var3) /* add on <var_res:Array[nullable Object]>*/;
5196 ((void (*)(val*))(self->class->vft[COLOR_abstract_collection__Iterator__next]))(self) /* next on <self:Iterator[nullable Object]>*/;
5197 CONTINUE_label: (void)0;
5198 }
5199 BREAK_label: (void)0;
5200 var = var_res;
5201 goto RET_LABEL;
5202 RET_LABEL:;
5203 return var;
5204 }
5205 /* method array#Iterator#to_a for (self: Object): Array[nullable Object] */
5206 val* VIRTUAL_array__Iterator__to_a(val* self) {
5207 val* var /* : Array[nullable Object] */;
5208 val* var1 /* : Array[nullable Object] */;
5209 var1 = array__Iterator__to_a(self);
5210 var = var1;
5211 RET_LABEL:;
5212 return var;
5213 }
5214 /* method array#Collection#to_a for (self: Collection[nullable Object]): Array[nullable Object] */
5215 val* array__Collection__to_a(val* self) {
5216 val* var /* : Array[nullable Object] */;
5217 val* var1 /* : Iterator[nullable Object] */;
5218 val* var2 /* : Array[nullable Object] */;
5219 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
5220 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_array__Iterator__to_a]))(var1) /* to_a on <var1:Iterator[nullable Object]>*/;
5221 var = var2;
5222 goto RET_LABEL;
5223 RET_LABEL:;
5224 return var;
5225 }
5226 /* method array#Collection#to_a for (self: Object): Array[nullable Object] */
5227 val* VIRTUAL_array__Collection__to_a(val* self) {
5228 val* var /* : Array[nullable Object] */;
5229 val* var1 /* : Array[nullable Object] */;
5230 var1 = array__Collection__to_a(self);
5231 var = var1;
5232 RET_LABEL:;
5233 return var;
5234 }
5235 /* method array#ArrayCapable#calloc_array for (self: ArrayCapable[nullable Object], Int): NativeArray[nullable Object] */
5236 val* array__ArrayCapable__calloc_array(val* self, long p0) {
5237 val* var /* : NativeArray[nullable Object] */;
5238 val* var1 /* : NativeArray[nullable Object] */;
5239 var1 = NEW_array__NativeArray(p0, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
5240 var = var1;
5241 goto RET_LABEL;
5242 RET_LABEL:;
5243 return var;
5244 }
5245 /* method array#ArrayCapable#calloc_array for (self: Object, Int): NativeArray[nullable Object] */
5246 val* VIRTUAL_array__ArrayCapable__calloc_array(val* self, long p0) {
5247 val* var /* : NativeArray[nullable Object] */;
5248 val* var1 /* : NativeArray[nullable Object] */;
5249 val* var3 /* : NativeArray[nullable Object] */;
5250 { /* Inline array#ArrayCapable#calloc_array (self,p0) */
5251 var3 = NEW_array__NativeArray(p0, self->type->resolution_table->types[COLOR_array__NativeArrayarray__ArrayCapable_FT0]);
5252 var1 = var3;
5253 goto RET_LABEL2;
5254 RET_LABEL2:(void)0;
5255 }
5256 var = var1;
5257 RET_LABEL:;
5258 return var;
5259 }
5260 /* method array#NativeArray#[] for (self: NativeArray[nullable Object], Int): nullable Object */
5261 val* array__NativeArray___91d_93d(val* self, long p0) {
5262 val* var /* : nullable Object */;
5263 val* var1 /* : nullable Object */;
5264 var1 = ((struct instance_array__NativeArray*)self)->values[p0];
5265 var = var1;
5266 goto RET_LABEL;
5267 RET_LABEL:;
5268 return var;
5269 }
5270 /* method array#NativeArray#[] for (self: Object, Int): nullable Object */
5271 val* VIRTUAL_array__NativeArray___91d_93d(val* self, long p0) {
5272 val* var /* : nullable Object */;
5273 val* var1 /* : nullable Object */;
5274 val* var3 /* : nullable Object */;
5275 { /* Inline array#NativeArray#[] (self,p0) */
5276 var3 = ((struct instance_array__NativeArray*)self)->values[p0];
5277 var1 = var3;
5278 goto RET_LABEL2;
5279 RET_LABEL2:(void)0;
5280 }
5281 var = var1;
5282 RET_LABEL:;
5283 return var;
5284 }
5285 /* method array#NativeArray#[]= for (self: NativeArray[nullable Object], Int, nullable Object) */
5286 void array__NativeArray___91d_93d_61d(val* self, long p0, val* p1) {
5287 short int var /* : Bool */;
5288 int cltype;
5289 int idtype;
5290 const struct type* type_struct;
5291 short int is_nullable;
5292 const char* var_class_name;
5293 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa NativeArray#0 */
5294 /* <p1:nullable Object> isa NativeArray#0 */
5295 type_struct = self->type->resolution_table->types[COLOR_array__NativeArray_FT0];
5296 cltype = type_struct->color;
5297 idtype = type_struct->id;
5298 is_nullable = type_struct->is_nullable;
5299 if(p1 == NULL) {
5300 var = is_nullable;
5301 } else {
5302 if(cltype >= p1->type->table_size) {
5303 var = 0;
5304 } else {
5305 var = p1->type->type_table[cltype] == idtype;
5306 }
5307 }
5308 if (!var) {
5309 var_class_name = p1 == NULL ? "null" : p1->type->name;
5310 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name);
5311 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 648);
5312 show_backtrace(1);
5313 }
5314 ((struct instance_array__NativeArray*)self)->values[p0]=p1;
5315 RET_LABEL:;
5316 }
5317 /* method array#NativeArray#[]= for (self: Object, Int, nullable Object) */
5318 void VIRTUAL_array__NativeArray___91d_93d_61d(val* self, long p0, val* p1) {
5319 short int var /* : Bool */;
5320 int cltype;
5321 int idtype;
5322 const struct type* type_struct;
5323 short int is_nullable;
5324 const char* var_class_name;
5325 { /* Inline array#NativeArray#[]= (self,p0,p1) */
5326 /* Covariant cast for argument 1 (item) <p1:nullable Object> isa NativeArray#0 */
5327 /* <p1:nullable Object> isa NativeArray#0 */
5328 type_struct = self->type->resolution_table->types[COLOR_array__NativeArray_FT0];
5329 cltype = type_struct->color;
5330 idtype = type_struct->id;
5331 is_nullable = type_struct->is_nullable;
5332 if(p1 == NULL) {
5333 var = is_nullable;
5334 } else {
5335 if(cltype >= p1->type->table_size) {
5336 var = 0;
5337 } else {
5338 var = p1->type->type_table[cltype] == idtype;
5339 }
5340 }
5341 if (!var) {
5342 var_class_name = p1 == NULL ? "null" : p1->type->name;
5343 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray#0", var_class_name);
5344 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 648);
5345 show_backtrace(1);
5346 }
5347 ((struct instance_array__NativeArray*)self)->values[p0]=p1;
5348 RET_LABEL1:(void)0;
5349 }
5350 RET_LABEL:;
5351 }
5352 /* method array#NativeArray#copy_to for (self: NativeArray[nullable Object], NativeArray[nullable Object], Int) */
5353 void array__NativeArray__copy_to(val* self, val* p0, long p1) {
5354 short int var /* : Bool */;
5355 int cltype;
5356 int idtype;
5357 const struct type* type_struct;
5358 const char* var_class_name;
5359 /* Covariant cast for argument 0 (dest) <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5360 /* <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5361 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__NativeArray_FT0];
5362 cltype = type_struct->color;
5363 idtype = type_struct->id;
5364 if(cltype >= p0->type->table_size) {
5365 var = 0;
5366 } else {
5367 var = p0->type->type_table[cltype] == idtype;
5368 }
5369 if (!var) {
5370 var_class_name = p0 == NULL ? "null" : p0->type->name;
5371 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[NativeArray#0]", var_class_name);
5372 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 649);
5373 show_backtrace(1);
5374 }
5375 memcpy(((struct instance_array__NativeArray*)p0)->values, ((struct instance_array__NativeArray*)self)->values, p1*sizeof(val*));
5376 RET_LABEL:;
5377 }
5378 /* method array#NativeArray#copy_to for (self: Object, NativeArray[nullable Object], Int) */
5379 void VIRTUAL_array__NativeArray__copy_to(val* self, val* p0, long p1) {
5380 short int var /* : Bool */;
5381 int cltype;
5382 int idtype;
5383 const struct type* type_struct;
5384 const char* var_class_name;
5385 { /* Inline array#NativeArray#copy_to (self,p0,p1) */
5386 /* Covariant cast for argument 0 (dest) <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5387 /* <p0:NativeArray[nullable Object]> isa NativeArray[NativeArray#0] */
5388 type_struct = self->type->resolution_table->types[COLOR_array__NativeArrayarray__NativeArray_FT0];
5389 cltype = type_struct->color;
5390 idtype = type_struct->id;
5391 if(cltype >= p0->type->table_size) {
5392 var = 0;
5393 } else {
5394 var = p0->type->type_table[cltype] == idtype;
5395 }
5396 if (!var) {
5397 var_class_name = p0 == NULL ? "null" : p0->type->name;
5398 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "NativeArray[NativeArray#0]", var_class_name);
5399 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/array.nit", 649);
5400 show_backtrace(1);
5401 }
5402 memcpy(((struct instance_array__NativeArray*)p0)->values, ((struct instance_array__NativeArray*)self)->values, p1*sizeof(val*));
5403 RET_LABEL1:(void)0;
5404 }
5405 RET_LABEL:;
5406 }