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