c_src: update with CString
[nit.git] / c_src / core__abstract_collection.sep.1.c
1 #include "core__abstract_collection.sep.0.h"
2 /* method abstract_collection#Collection#is_empty for (self: Collection[nullable Object]): Bool */
3 short int core___core__Collection___is_empty(val* self) {
4 short int var /* : Bool */;
5 long var1 /* : Int */;
6 short int var2 /* : Bool */;
7 short int var4 /* : Bool */;
8 {
9 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
10 }
11 {
12 { /* Inline kernel#Int#== (var1,0l) on <var1:Int> */
13 var4 = var1 == 0l;
14 var2 = var4;
15 goto RET_LABEL3;
16 RET_LABEL3:(void)0;
17 }
18 }
19 var = var2;
20 goto RET_LABEL;
21 RET_LABEL:;
22 return var;
23 }
24 /* method abstract_collection#Collection#not_empty for (self: Collection[nullable Object]): Bool */
25 short int core___core__Collection___not_empty(val* self) {
26 short int var /* : Bool */;
27 short int var1 /* : Bool */;
28 short int var2 /* : Bool */;
29 {
30 var1 = ((short int(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__is_empty]))(self); /* is_empty on <self:Collection[nullable Object]>*/
31 }
32 var2 = !var1;
33 var = var2;
34 goto RET_LABEL;
35 RET_LABEL:;
36 return var;
37 }
38 /* method abstract_collection#Collection#length for (self: Collection[nullable Object]): Int */
39 long core___core__Collection___length(val* self) {
40 long var /* : Int */;
41 long var_nb /* var nb: Int */;
42 val* var_ /* var : Collection[nullable Object] */;
43 val* var1 /* : Iterator[nullable Object] */;
44 val* var_2 /* var : Iterator[nullable Object] */;
45 short int var3 /* : Bool */;
46 val* var4 /* : nullable Object */;
47 val* var_i /* var i: nullable Object */;
48 long var5 /* : Int */;
49 short int var7 /* : Bool */;
50 int cltype;
51 int idtype;
52 const char* var_class_name;
53 long var8 /* : Int */;
54 var_nb = 0l;
55 var_ = self;
56 {
57 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
58 }
59 var_2 = var1;
60 for(;;) {
61 {
62 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
63 }
64 if (var3){
65 } else {
66 goto BREAK_label;
67 }
68 {
69 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
70 }
71 var_i = var4;
72 {
73 { /* Inline kernel#Int#+ (var_nb,1l) on <var_nb:Int> */
74 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
75 /* <1l:Int> isa OTHER */
76 var7 = 1; /* easy <1l:Int> isa OTHER*/
77 if (unlikely(!var7)) {
78 var_class_name = type_core__Int.name;
79 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
80 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
81 fatal_exit(1);
82 }
83 var8 = var_nb + 1l;
84 var5 = var8;
85 goto RET_LABEL6;
86 RET_LABEL6:(void)0;
87 }
88 }
89 var_nb = var5;
90 {
91 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
92 }
93 }
94 BREAK_label: (void)0;
95 {
96 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
97 }
98 var = var_nb;
99 goto RET_LABEL;
100 RET_LABEL:;
101 return var;
102 }
103 /* method abstract_collection#Collection#has for (self: Collection[nullable Object], nullable Object): Bool */
104 short int core___core__Collection___has(val* self, val* p0) {
105 short int var /* : Bool */;
106 val* var_item /* var item: nullable Object */;
107 val* var_ /* var : Collection[nullable Object] */;
108 val* var1 /* : Iterator[nullable Object] */;
109 val* var_2 /* var : Iterator[nullable Object] */;
110 short int var3 /* : Bool */;
111 val* var4 /* : nullable Object */;
112 val* var_i /* var i: nullable Object */;
113 short int var5 /* : Bool */;
114 short int var6 /* : Bool */;
115 var_item = p0;
116 var_ = self;
117 {
118 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
119 }
120 var_2 = var1;
121 for(;;) {
122 {
123 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
124 }
125 if (var3){
126 } else {
127 goto BREAK_label;
128 }
129 {
130 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
131 }
132 var_i = var4;
133 if (var_i == NULL) {
134 var5 = (var_item == NULL);
135 } else {
136 var6 = ((short int(*)(val* self, val* p0))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_i, var_item); /* == on <var_i:nullable Object>*/
137 var5 = var6;
138 }
139 if (var5){
140 var = 1;
141 goto RET_LABEL;
142 } else {
143 }
144 {
145 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
146 }
147 }
148 BREAK_label: (void)0;
149 {
150 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
151 }
152 var = 0;
153 goto RET_LABEL;
154 RET_LABEL:;
155 return var;
156 }
157 /* method abstract_collection#Collection#first for (self: Collection[nullable Object]): nullable Object */
158 val* core___core__Collection___first(val* self) {
159 val* var /* : nullable Object */;
160 long var1 /* : Int */;
161 short int var2 /* : Bool */;
162 short int var4 /* : Bool */;
163 int cltype;
164 int idtype;
165 const char* var_class_name;
166 short int var5 /* : Bool */;
167 val* var6 /* : Iterator[nullable Object] */;
168 val* var7 /* : nullable Object */;
169 {
170 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Collection[nullable Object]>*/
171 }
172 {
173 { /* Inline kernel#Int#> (var1,0l) on <var1:Int> */
174 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
175 /* <0l:Int> isa OTHER */
176 var4 = 1; /* easy <0l:Int> isa OTHER*/
177 if (unlikely(!var4)) {
178 var_class_name = type_core__Int.name;
179 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
180 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
181 fatal_exit(1);
182 }
183 var5 = var1 > 0l;
184 var2 = var5;
185 goto RET_LABEL3;
186 RET_LABEL3:(void)0;
187 }
188 }
189 if (unlikely(!var2)) {
190 PRINT_ERROR("Runtime error: %s", "Assert failed");
191 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 134);
192 fatal_exit(1);
193 }
194 {
195 var6 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(self); /* iterator on <self:Collection[nullable Object]>*/
196 }
197 {
198 var7 = ((val*(*)(val* self))((((long)var6&3)?class_info[((long)var6&3)]:var6->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var6); /* item on <var6:Iterator[nullable Object]>*/
199 }
200 var = var7;
201 goto RET_LABEL;
202 RET_LABEL:;
203 return var;
204 }
205 /* method abstract_collection#Collection#has_all for (self: Collection[nullable Object], Collection[nullable Object]): Bool */
206 short int core___core__Collection___has_all(val* self, val* p0) {
207 short int var /* : Bool */;
208 val* var_other /* var other: Collection[nullable Object] */;
209 val* var_ /* var : Collection[nullable Object] */;
210 val* var1 /* : Iterator[nullable Object] */;
211 val* var_2 /* var : Iterator[nullable Object] */;
212 short int var3 /* : Bool */;
213 val* var4 /* : nullable Object */;
214 val* var_x /* var x: nullable Object */;
215 short int var5 /* : Bool */;
216 short int var6 /* : Bool */;
217 var_other = p0;
218 var_ = var_other;
219 {
220 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
221 }
222 var_2 = var1;
223 for(;;) {
224 {
225 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
226 }
227 if (var3){
228 } else {
229 goto BREAK_label;
230 }
231 {
232 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
233 }
234 var_x = var4;
235 {
236 var5 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__has]))(self, var_x); /* has on <self:Collection[nullable Object]>*/
237 }
238 var6 = !var5;
239 if (var6){
240 var = 0;
241 goto RET_LABEL;
242 } else {
243 }
244 {
245 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
246 }
247 }
248 BREAK_label: (void)0;
249 {
250 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
251 }
252 var = 1;
253 goto RET_LABEL;
254 RET_LABEL:;
255 return var;
256 }
257 /* method abstract_collection#Iterator#iterator for (self: Iterator[nullable Object]): Iterator[nullable Object] */
258 val* core___core__Iterator___iterator(val* self) {
259 val* var /* : Iterator[nullable Object] */;
260 var = self;
261 goto RET_LABEL;
262 RET_LABEL:;
263 return var;
264 }
265 /* method abstract_collection#Iterator#finish for (self: Iterator[nullable Object]) */
266 void core___core__Iterator___finish(val* self) {
267 RET_LABEL:;
268 }
269 /* method abstract_collection#Ref#first for (self: Ref[nullable Object]): nullable Object */
270 val* core___core__Ref___Collection__first(val* self) {
271 val* var /* : nullable Object */;
272 val* var1 /* : nullable Object */;
273 val* var3 /* : nullable Object */;
274 {
275 { /* Inline abstract_collection#Ref#item (self) on <self:Ref[nullable Object]> */
276 var3 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
277 var1 = var3;
278 RET_LABEL2:(void)0;
279 }
280 }
281 var = var1;
282 goto RET_LABEL;
283 RET_LABEL:;
284 return var;
285 }
286 /* method abstract_collection#Ref#is_empty for (self: Ref[nullable Object]): Bool */
287 short int core___core__Ref___Collection__is_empty(val* self) {
288 short int var /* : Bool */;
289 var = 0;
290 goto RET_LABEL;
291 RET_LABEL:;
292 return var;
293 }
294 /* method abstract_collection#Ref#length for (self: Ref[nullable Object]): Int */
295 long core___core__Ref___Collection__length(val* self) {
296 long var /* : Int */;
297 var = 1l;
298 goto RET_LABEL;
299 RET_LABEL:;
300 return var;
301 }
302 /* method abstract_collection#Ref#has for (self: Ref[nullable Object], nullable Object): Bool */
303 short int core___core__Ref___Collection__has(val* self, val* p0) {
304 short int var /* : Bool */;
305 val* var_an_item /* var an_item: nullable Object */;
306 val* var1 /* : nullable Object */;
307 val* var3 /* : nullable Object */;
308 short int var4 /* : Bool */;
309 short int var5 /* : Bool */;
310 var_an_item = p0;
311 {
312 { /* Inline abstract_collection#Ref#item (self) on <self:Ref[nullable Object]> */
313 var3 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
314 var1 = var3;
315 RET_LABEL2:(void)0;
316 }
317 }
318 if (var1 == NULL) {
319 var4 = (var_an_item == NULL);
320 } else {
321 var5 = ((short int(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var1, var_an_item); /* == on <var1:nullable Object>*/
322 var4 = var5;
323 }
324 var = var4;
325 goto RET_LABEL;
326 RET_LABEL:;
327 return var;
328 }
329 /* method abstract_collection#Ref#iterator for (self: Ref[nullable Object]): Iterator[nullable Object] */
330 val* core___core__Ref___Collection__iterator(val* self) {
331 val* var /* : Iterator[nullable Object] */;
332 val* var1 /* : RefIterator[nullable Object] */;
333 var1 = NEW_core__abstract_collection__RefIterator(self->type->resolution_table->types[COLOR_core__abstract_collection__RefIterator__core__Ref___35dE]);
334 {
335 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__abstract_collection__RefIterator__container_61d]))(var1, self); /* container= on <var1:RefIterator[nullable Object]>*/
336 }
337 {
338 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:RefIterator[nullable Object]>*/
339 }
340 var = var1;
341 goto RET_LABEL;
342 RET_LABEL:;
343 return var;
344 }
345 /* method abstract_collection#Ref#item for (self: Ref[nullable Object]): nullable Object */
346 val* core___core__Ref___item(val* self) {
347 val* var /* : nullable Object */;
348 val* var1 /* : nullable Object */;
349 var1 = self->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <self:Ref[nullable Object]> */
350 var = var1;
351 RET_LABEL:;
352 return var;
353 }
354 /* method abstract_collection#Ref#item= for (self: Ref[nullable Object], nullable Object) */
355 void core___core__Ref___item_61d(val* self, val* p0) {
356 short int var /* : Bool */;
357 int cltype;
358 int idtype;
359 const struct type* type_struct;
360 short int is_nullable;
361 const char* var_class_name;
362 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa E */
363 /* <p0:nullable Object> isa E */
364 type_struct = self->type->resolution_table->types[COLOR_core__Ref___35dE];
365 cltype = type_struct->color;
366 idtype = type_struct->id;
367 is_nullable = type_struct->is_nullable;
368 if(p0 == NULL) {
369 var = is_nullable;
370 } else {
371 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
372 var = 0;
373 } else {
374 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
375 }
376 }
377 if (unlikely(!var)) {
378 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
379 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
380 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 334);
381 fatal_exit(1);
382 }
383 self->attrs[COLOR_core__abstract_collection__Ref___item].val = p0; /* _item on <self:Ref[nullable Object]> */
384 RET_LABEL:;
385 }
386 /* method abstract_collection#Ref#init for (self: Ref[nullable Object]) */
387 void core___core__Ref___core__kernel__Object__init(val* self) {
388 {
389 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Ref___core__kernel__Object__init]))(self); /* init on <self:Ref[nullable Object]>*/
390 }
391 RET_LABEL:;
392 }
393 /* method abstract_collection#RefIterator#item for (self: RefIterator[nullable Object]): nullable Object */
394 val* core__abstract_collection___core__abstract_collection__RefIterator___Iterator__item(val* self) {
395 val* var /* : nullable Object */;
396 val* var1 /* : Ref[nullable Object] */;
397 val* var2 /* : nullable Object */;
398 val* var4 /* : nullable Object */;
399 var1 = self->attrs[COLOR_core__abstract_collection__RefIterator___container].val; /* _container on <self:RefIterator[nullable Object]> */
400 if (unlikely(var1 == NULL)) {
401 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _container");
402 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 341);
403 fatal_exit(1);
404 }
405 {
406 { /* Inline abstract_collection#Ref#item (var1) on <var1:Ref[nullable Object]> */
407 var4 = var1->attrs[COLOR_core__abstract_collection__Ref___item].val; /* _item on <var1:Ref[nullable Object]> */
408 var2 = var4;
409 RET_LABEL3:(void)0;
410 }
411 }
412 var = var2;
413 goto RET_LABEL;
414 RET_LABEL:;
415 return var;
416 }
417 /* method abstract_collection#RefIterator#next for (self: RefIterator[nullable Object]) */
418 void core__abstract_collection___core__abstract_collection__RefIterator___Iterator__next(val* self) {
419 {
420 { /* Inline abstract_collection#RefIterator#is_ok= (self,0) on <self:RefIterator[nullable Object]> */
421 self->attrs[COLOR_core__abstract_collection__RefIterator___is_ok].s = 0; /* _is_ok on <self:RefIterator[nullable Object]> */
422 RET_LABEL1:(void)0;
423 }
424 }
425 RET_LABEL:;
426 }
427 /* method abstract_collection#RefIterator#is_ok for (self: RefIterator[nullable Object]): Bool */
428 short int core__abstract_collection___core__abstract_collection__RefIterator___Iterator__is_ok(val* self) {
429 short int var /* : Bool */;
430 short int var1 /* : Bool */;
431 var1 = self->attrs[COLOR_core__abstract_collection__RefIterator___is_ok].s; /* _is_ok on <self:RefIterator[nullable Object]> */
432 var = var1;
433 RET_LABEL:;
434 return var;
435 }
436 /* method abstract_collection#RefIterator#is_ok= for (self: RefIterator[nullable Object], Bool) */
437 void core__abstract_collection___core__abstract_collection__RefIterator___is_ok_61d(val* self, short int p0) {
438 self->attrs[COLOR_core__abstract_collection__RefIterator___is_ok].s = p0; /* _is_ok on <self:RefIterator[nullable Object]> */
439 RET_LABEL:;
440 }
441 /* method abstract_collection#RefIterator#container= for (self: RefIterator[nullable Object], Ref[nullable Object]) */
442 void core__abstract_collection___core__abstract_collection__RefIterator___container_61d(val* self, val* p0) {
443 short int var /* : Bool */;
444 int cltype;
445 int idtype;
446 const struct type* type_struct;
447 const char* var_class_name;
448 /* Covariant cast for argument 0 (container) <p0:Ref[nullable Object]> isa Ref[E] */
449 /* <p0:Ref[nullable Object]> isa Ref[E] */
450 type_struct = self->type->resolution_table->types[COLOR_core__Ref__core__abstract_collection__RefIterator___35dE];
451 cltype = type_struct->color;
452 idtype = type_struct->id;
453 if(cltype >= p0->type->table_size) {
454 var = 0;
455 } else {
456 var = p0->type->type_table[cltype] == idtype;
457 }
458 if (unlikely(!var)) {
459 var_class_name = p0 == NULL ? "null" : p0->type->name;
460 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Ref[E]", var_class_name);
461 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 347);
462 fatal_exit(1);
463 }
464 self->attrs[COLOR_core__abstract_collection__RefIterator___container].val = p0; /* _container on <self:RefIterator[nullable Object]> */
465 RET_LABEL:;
466 }
467 /* method abstract_collection#RefIterator#init for (self: RefIterator[nullable Object]) */
468 void core__abstract_collection___core__abstract_collection__RefIterator___core__kernel__Object__init(val* self) {
469 {
470 ((void(*)(val* self))(self->class->vft[COLOR_core__abstract_collection___core__abstract_collection__RefIterator___core__kernel__Object__init]))(self); /* init on <self:RefIterator[nullable Object]>*/
471 }
472 RET_LABEL:;
473 }
474 /* method abstract_collection#RemovableCollection#clear for (self: RemovableCollection[nullable Object]) */
475 void core___core__RemovableCollection___clear(val* self) {
476 const char* var_class_name;
477 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
478 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "clear", var_class_name);
479 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 354);
480 fatal_exit(1);
481 RET_LABEL:;
482 }
483 /* method abstract_collection#RemovableCollection#remove for (self: RemovableCollection[nullable Object], nullable Object) */
484 void core___core__RemovableCollection___remove(val* self, val* p0) {
485 const char* var_class_name;
486 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
487 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "remove", var_class_name);
488 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 363);
489 fatal_exit(1);
490 RET_LABEL:;
491 }
492 /* method abstract_collection#SimpleCollection#add_all for (self: SimpleCollection[nullable Object], Collection[nullable Object]) */
493 void core___core__SimpleCollection___add_all(val* self, val* p0) {
494 short int var /* : Bool */;
495 int cltype;
496 int idtype;
497 const struct type* type_struct;
498 const char* var_class_name;
499 val* var_coll /* var coll: Collection[nullable Object] */;
500 val* var_ /* var : Collection[nullable Object] */;
501 val* var1 /* : Iterator[nullable Object] */;
502 val* var_2 /* var : Iterator[nullable Object] */;
503 short int var3 /* : Bool */;
504 val* var4 /* : nullable Object */;
505 val* var_i /* var i: nullable Object */;
506 /* Covariant cast for argument 0 (coll) <p0:Collection[nullable Object]> isa Collection[E] */
507 /* <p0:Collection[nullable Object]> isa Collection[E] */
508 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Collection__core__SimpleCollection___35dE];
509 cltype = type_struct->color;
510 idtype = type_struct->id;
511 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
512 var = 0;
513 } else {
514 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
515 }
516 if (unlikely(!var)) {
517 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
518 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
519 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 392);
520 fatal_exit(1);
521 }
522 var_coll = p0;
523 var_ = var_coll;
524 {
525 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
526 }
527 var_2 = var1;
528 for(;;) {
529 {
530 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
531 }
532 if (var3){
533 } else {
534 goto BREAK_label;
535 }
536 {
537 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
538 }
539 var_i = var4;
540 {
541 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(self, var_i); /* add on <self:SimpleCollection[nullable Object]>*/
542 }
543 {
544 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
545 }
546 }
547 BREAK_label: (void)0;
548 {
549 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
550 }
551 RET_LABEL:;
552 }
553 /* method abstract_collection#Set#== for (self: Set[nullable Object], nullable Object): Bool */
554 short int core___core__Set___core__kernel__Object___61d_61d(val* self, val* p0) {
555 short int var /* : Bool */;
556 val* var_other /* var other: nullable Object */;
557 short int var1 /* : Bool */;
558 int cltype;
559 int idtype;
560 short int var2 /* : Bool */;
561 long var3 /* : Int */;
562 long var4 /* : Int */;
563 short int var5 /* : Bool */;
564 short int var7 /* : Bool */;
565 short int var8 /* : Bool */;
566 short int var9 /* : Bool */;
567 var_other = p0;
568 /* <var_other:nullable Object> isa Set[nullable Object] */
569 cltype = type_core__Set__nullable__core__Object.color;
570 idtype = type_core__Set__nullable__core__Object.id;
571 if(var_other == NULL) {
572 var1 = 0;
573 } else {
574 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
575 var1 = 0;
576 } else {
577 var1 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
578 }
579 }
580 var2 = !var1;
581 if (var2){
582 var = 0;
583 goto RET_LABEL;
584 } else {
585 }
586 {
587 var3 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_other); /* length on <var_other:nullable Object(Set[nullable Object])>*/
588 }
589 {
590 var4 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Set[nullable Object]>*/
591 }
592 {
593 { /* Inline kernel#Int#!= (var3,var4) on <var3:Int> */
594 var7 = var3 == var4;
595 var8 = !var7;
596 var5 = var8;
597 goto RET_LABEL6;
598 RET_LABEL6:(void)0;
599 }
600 }
601 if (var5){
602 var = 0;
603 goto RET_LABEL;
604 } else {
605 }
606 {
607 var9 = core___core__Collection___has_all(self, var_other);
608 }
609 var = var9;
610 goto RET_LABEL;
611 RET_LABEL:;
612 return var;
613 }
614 /* method abstract_collection#Set#hash for (self: Set[nullable Object]): Int */
615 long core___core__Set___core__kernel__Object__hash(val* self) {
616 long var /* : Int */;
617 long var1 /* : Int */;
618 long var2 /* : Int */;
619 short int var4 /* : Bool */;
620 int cltype;
621 int idtype;
622 const char* var_class_name;
623 long var5 /* : Int */;
624 long var_res /* var res: Int */;
625 val* var_ /* var : Set[nullable Object] */;
626 val* var6 /* : Iterator[nullable Object] */;
627 val* var_7 /* var : Iterator[nullable Object] */;
628 short int var8 /* : Bool */;
629 val* var9 /* : nullable Object */;
630 val* var_e /* var e: nullable Object */;
631 long var10 /* : Int */;
632 long var11 /* : Int */;
633 short int var13 /* : Bool */;
634 int cltype14;
635 int idtype15;
636 const char* var_class_name16;
637 long var17 /* : Int */;
638 {
639 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Set[nullable Object]>*/
640 }
641 {
642 { /* Inline kernel#Int#+ (23l,var1) on <23l:Int> */
643 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
644 /* <var1:Int> isa OTHER */
645 var4 = 1; /* easy <var1:Int> isa OTHER*/
646 if (unlikely(!var4)) {
647 var_class_name = type_core__Int.name;
648 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
649 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
650 fatal_exit(1);
651 }
652 var5 = 23l + var1;
653 var2 = var5;
654 goto RET_LABEL3;
655 RET_LABEL3:(void)0;
656 }
657 }
658 var_res = var2;
659 var_ = self;
660 {
661 var6 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[nullable Object]>*/
662 }
663 var_7 = var6;
664 for(;;) {
665 {
666 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
667 }
668 if (var8){
669 } else {
670 goto BREAK_label;
671 }
672 {
673 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
674 }
675 var_e = var9;
676 if (var_e == NULL) {
677 PRINT_ERROR("Runtime error: %s", "Receiver is null");
678 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 454);
679 fatal_exit(1);
680 } else {
681 var10 = ((long(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object__hash]))(var_e); /* hash on <var_e:nullable Object>*/
682 }
683 {
684 { /* Inline kernel#Int#+ (var_res,var10) on <var_res:Int> */
685 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
686 /* <var10:Int> isa OTHER */
687 var13 = 1; /* easy <var10:Int> isa OTHER*/
688 if (unlikely(!var13)) {
689 var_class_name16 = type_core__Int.name;
690 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name16);
691 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
692 fatal_exit(1);
693 }
694 var17 = var_res + var10;
695 var11 = var17;
696 goto RET_LABEL12;
697 RET_LABEL12:(void)0;
698 }
699 }
700 var_res = var11;
701 {
702 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
703 }
704 }
705 BREAK_label: (void)0;
706 {
707 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
708 }
709 var = var_res;
710 goto RET_LABEL;
711 RET_LABEL:;
712 return var;
713 }
714 /* method abstract_collection#MapRead#get_or_null for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
715 val* core___core__MapRead___get_or_null(val* self, val* p0) {
716 val* var /* : nullable Object */;
717 val* var_key /* var key: nullable Object */;
718 short int var1 /* : Bool */;
719 val* var2 /* : nullable Object */;
720 var_key = p0;
721 {
722 var1 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__has_key]))(self, var_key); /* has_key on <self:MapRead[nullable Object, nullable Object]>*/
723 }
724 if (var1){
725 {
726 var2 = ((val*(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(self, var_key); /* [] on <self:MapRead[nullable Object, nullable Object]>*/
727 }
728 var = var2;
729 goto RET_LABEL;
730 } else {
731 }
732 var = ((val*)NULL);
733 goto RET_LABEL;
734 RET_LABEL:;
735 return var;
736 }
737 /* method abstract_collection#MapRead#provide_default_value for (self: MapRead[nullable Object, nullable Object], nullable Object): nullable Object */
738 val* core___core__MapRead___provide_default_value(val* self, val* p0) {
739 val* var /* : nullable Object */;
740 val* var_key /* var key: nullable Object */;
741 var_key = p0;
742 PRINT_ERROR("Runtime error: %s", "Aborted");
743 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 590);
744 fatal_exit(1);
745 RET_LABEL:;
746 return var;
747 }
748 /* method abstract_collection#MapRead#== for (self: MapRead[nullable Object, nullable Object], nullable Object): Bool */
749 short int core___core__MapRead___core__kernel__Object___61d_61d(val* self, val* p0) {
750 short int var /* : Bool */;
751 val* var_other /* var other: nullable Object */;
752 short int var1 /* : Bool */;
753 int cltype;
754 int idtype;
755 short int var2 /* : Bool */;
756 long var3 /* : Int */;
757 long var4 /* : Int */;
758 short int var5 /* : Bool */;
759 short int var7 /* : Bool */;
760 short int var8 /* : Bool */;
761 val* var_ /* var : MapRead[nullable Object, nullable Object] */;
762 val* var9 /* : MapIterator[nullable Object, nullable Object] */;
763 val* var_10 /* var : MapIterator[nullable Object, nullable Object] */;
764 short int var11 /* : Bool */;
765 val* var12 /* : nullable Object */;
766 val* var_k /* var k: nullable Object */;
767 val* var13 /* : nullable Object */;
768 val* var_v /* var v: nullable Object */;
769 short int var14 /* : Bool */;
770 short int var15 /* : Bool */;
771 val* var16 /* : nullable Object */;
772 short int var17 /* : Bool */;
773 short int var18 /* : Bool */;
774 var_other = p0;
775 /* <var_other:nullable Object> isa MapRead[nullable Object, nullable Object] */
776 cltype = type_core__MapRead__nullable__core__Object__nullable__core__Object.color;
777 idtype = type_core__MapRead__nullable__core__Object__nullable__core__Object.id;
778 if(var_other == NULL) {
779 var1 = 0;
780 } else {
781 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
782 var1 = 0;
783 } else {
784 var1 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
785 }
786 }
787 var2 = !var1;
788 if (var2){
789 var = 0;
790 goto RET_LABEL;
791 } else {
792 }
793 {
794 var3 = ((long(*)(val* self))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__MapRead__length]))(var_other); /* length on <var_other:nullable Object(MapRead[nullable Object, nullable Object])>*/
795 }
796 {
797 var4 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__length]))(self); /* length on <self:MapRead[nullable Object, nullable Object]>*/
798 }
799 {
800 { /* Inline kernel#Int#!= (var3,var4) on <var3:Int> */
801 var7 = var3 == var4;
802 var8 = !var7;
803 var5 = var8;
804 goto RET_LABEL6;
805 RET_LABEL6:(void)0;
806 }
807 }
808 if (var5){
809 var = 0;
810 goto RET_LABEL;
811 } else {
812 }
813 var_ = self;
814 {
815 var9 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:MapRead[nullable Object, nullable Object]>*/
816 }
817 var_10 = var9;
818 for(;;) {
819 {
820 var11 = ((short int(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_10); /* is_ok on <var_10:MapIterator[nullable Object, nullable Object]>*/
821 }
822 if (var11){
823 } else {
824 goto BREAK_label;
825 }
826 {
827 var12 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_10); /* key on <var_10:MapIterator[nullable Object, nullable Object]>*/
828 }
829 var_k = var12;
830 {
831 var13 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_10); /* item on <var_10:MapIterator[nullable Object, nullable Object]>*/
832 }
833 var_v = var13;
834 {
835 var14 = ((short int(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__MapRead__has_key]))(var_other, var_k); /* has_key on <var_other:nullable Object(MapRead[nullable Object, nullable Object])>*/
836 }
837 var15 = !var14;
838 if (var15){
839 var = 0;
840 goto RET_LABEL;
841 } else {
842 }
843 {
844 var16 = ((val*(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var_other, var_k); /* [] on <var_other:nullable Object(MapRead[nullable Object, nullable Object])>*/
845 }
846 if (var16 == NULL) {
847 var17 = (var_v != NULL);
848 } else {
849 var18 = ((short int(*)(val* self, val* p0))((((long)var16&3)?class_info[((long)var16&3)]:var16->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var16, var_v); /* != on <var16:nullable Object>*/
850 var17 = var18;
851 }
852 if (var17){
853 var = 0;
854 goto RET_LABEL;
855 } else {
856 }
857 {
858 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_10); /* next on <var_10:MapIterator[nullable Object, nullable Object]>*/
859 }
860 }
861 BREAK_label: (void)0;
862 {
863 { /* Inline abstract_collection#MapIterator#finish (var_10) on <var_10:MapIterator[nullable Object, nullable Object]> */
864 RET_LABEL19:(void)0;
865 }
866 }
867 var = 1;
868 goto RET_LABEL;
869 RET_LABEL:;
870 return var;
871 }
872 /* method abstract_collection#MapRead#hash for (self: MapRead[nullable Object, nullable Object]): Int */
873 long core___core__MapRead___core__kernel__Object__hash(val* self) {
874 long var /* : Int */;
875 long var1 /* : Int */;
876 long var_res /* var res: Int */;
877 val* var_ /* var : MapRead[nullable Object, nullable Object] */;
878 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
879 val* var_3 /* var : MapIterator[nullable Object, nullable Object] */;
880 short int var4 /* : Bool */;
881 val* var5 /* : nullable Object */;
882 val* var_k /* var k: nullable Object */;
883 val* var6 /* : nullable Object */;
884 val* var_v /* var v: nullable Object */;
885 short int var7 /* : Bool */;
886 short int var8 /* : Bool */;
887 long var9 /* : Int */;
888 long var10 /* : Int */;
889 short int var12 /* : Bool */;
890 int cltype;
891 int idtype;
892 const char* var_class_name;
893 long var13 /* : Int */;
894 long var14 /* : Int */;
895 short int var16 /* : Bool */;
896 int cltype17;
897 int idtype18;
898 const char* var_class_name19;
899 long var20 /* : Int */;
900 short int var21 /* : Bool */;
901 short int var22 /* : Bool */;
902 long var23 /* : Int */;
903 long var24 /* : Int */;
904 short int var26 /* : Bool */;
905 int cltype27;
906 int idtype28;
907 const char* var_class_name29;
908 long var30 /* : Int */;
909 long var31 /* : Int */;
910 short int var33 /* : Bool */;
911 int cltype34;
912 int idtype35;
913 const char* var_class_name36;
914 long var37 /* : Int */;
915 {
916 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__MapRead__length]))(self); /* length on <self:MapRead[nullable Object, nullable Object]>*/
917 }
918 var_res = var1;
919 var_ = self;
920 {
921 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:MapRead[nullable Object, nullable Object]>*/
922 }
923 var_3 = var2;
924 for(;;) {
925 {
926 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_3); /* is_ok on <var_3:MapIterator[nullable Object, nullable Object]>*/
927 }
928 if (var4){
929 } else {
930 goto BREAK_label;
931 }
932 {
933 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_3); /* key on <var_3:MapIterator[nullable Object, nullable Object]>*/
934 }
935 var_k = var5;
936 {
937 var6 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_3); /* item on <var_3:MapIterator[nullable Object, nullable Object]>*/
938 }
939 var_v = var6;
940 if (var_k == NULL) {
941 var7 = 0; /* is null */
942 } else {
943 var7 = 1; /* arg is null and recv is not */
944 }
945 if (0) {
946 var8 = ((short int(*)(val* self, val* p0))((((long)var_k&3)?class_info[((long)var_k&3)]:var_k->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_k, ((val*)NULL)); /* != on <var_k:nullable Object>*/
947 var7 = var8;
948 }
949 if (var7){
950 {
951 var9 = ((long(*)(val* self))((((long)var_k&3)?class_info[((long)var_k&3)]:var_k->class)->vft[COLOR_core__kernel__Object__hash]))(var_k); /* hash on <var_k:nullable Object(Object)>*/
952 }
953 {
954 { /* Inline kernel#Int#* (var9,7l) on <var9:Int> */
955 /* Covariant cast for argument 0 (i) <7l:Int> isa OTHER */
956 /* <7l:Int> isa OTHER */
957 var12 = 1; /* easy <7l:Int> isa OTHER*/
958 if (unlikely(!var12)) {
959 var_class_name = type_core__Int.name;
960 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
961 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
962 fatal_exit(1);
963 }
964 var13 = var9 * 7l;
965 var10 = var13;
966 goto RET_LABEL11;
967 RET_LABEL11:(void)0;
968 }
969 }
970 {
971 { /* Inline kernel#Int#+ (var_res,var10) on <var_res:Int> */
972 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
973 /* <var10:Int> isa OTHER */
974 var16 = 1; /* easy <var10:Int> isa OTHER*/
975 if (unlikely(!var16)) {
976 var_class_name19 = type_core__Int.name;
977 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
978 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
979 fatal_exit(1);
980 }
981 var20 = var_res + var10;
982 var14 = var20;
983 goto RET_LABEL15;
984 RET_LABEL15:(void)0;
985 }
986 }
987 var_res = var14;
988 } else {
989 }
990 if (var_v == NULL) {
991 var21 = 0; /* is null */
992 } else {
993 var21 = 1; /* arg is null and recv is not */
994 }
995 if (0) {
996 var22 = ((short int(*)(val* self, val* p0))((((long)var_v&3)?class_info[((long)var_v&3)]:var_v->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_v, ((val*)NULL)); /* != on <var_v:nullable Object>*/
997 var21 = var22;
998 }
999 if (var21){
1000 {
1001 var23 = ((long(*)(val* self))((((long)var_v&3)?class_info[((long)var_v&3)]:var_v->class)->vft[COLOR_core__kernel__Object__hash]))(var_v); /* hash on <var_v:nullable Object(Object)>*/
1002 }
1003 {
1004 { /* Inline kernel#Int#* (var23,11l) on <var23:Int> */
1005 /* Covariant cast for argument 0 (i) <11l:Int> isa OTHER */
1006 /* <11l:Int> isa OTHER */
1007 var26 = 1; /* easy <11l:Int> isa OTHER*/
1008 if (unlikely(!var26)) {
1009 var_class_name29 = type_core__Int.name;
1010 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
1011 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
1012 fatal_exit(1);
1013 }
1014 var30 = var23 * 11l;
1015 var24 = var30;
1016 goto RET_LABEL25;
1017 RET_LABEL25:(void)0;
1018 }
1019 }
1020 {
1021 { /* Inline kernel#Int#+ (var_res,var24) on <var_res:Int> */
1022 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
1023 /* <var24:Int> isa OTHER */
1024 var33 = 1; /* easy <var24:Int> isa OTHER*/
1025 if (unlikely(!var33)) {
1026 var_class_name36 = type_core__Int.name;
1027 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name36);
1028 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1029 fatal_exit(1);
1030 }
1031 var37 = var_res + var24;
1032 var31 = var37;
1033 goto RET_LABEL32;
1034 RET_LABEL32:(void)0;
1035 }
1036 }
1037 var_res = var31;
1038 } else {
1039 }
1040 {
1041 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_3); /* next on <var_3:MapIterator[nullable Object, nullable Object]>*/
1042 }
1043 }
1044 BREAK_label: (void)0;
1045 {
1046 { /* Inline abstract_collection#MapIterator#finish (var_3) on <var_3:MapIterator[nullable Object, nullable Object]> */
1047 RET_LABEL38:(void)0;
1048 }
1049 }
1050 var = var_res;
1051 goto RET_LABEL;
1052 RET_LABEL:;
1053 return var;
1054 }
1055 /* method abstract_collection#MapIterator#finish for (self: MapIterator[nullable Object, nullable Object]) */
1056 void core___core__MapIterator___finish(val* self) {
1057 RET_LABEL:;
1058 }
1059 /* method abstract_collection#MapKeysIterator#original_iterator for (self: MapKeysIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
1060 val* core___core__MapKeysIterator___original_iterator(val* self) {
1061 val* var /* : MapIterator[nullable Object, nullable Object] */;
1062 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1063 var1 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
1064 if (unlikely(var1 == NULL)) {
1065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1066 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
1067 fatal_exit(1);
1068 }
1069 var = var1;
1070 RET_LABEL:;
1071 return var;
1072 }
1073 /* method abstract_collection#MapKeysIterator#original_iterator= for (self: MapKeysIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
1074 void core___core__MapKeysIterator___original_iterator_61d(val* self, val* p0) {
1075 short int var /* : Bool */;
1076 int cltype;
1077 int idtype;
1078 const struct type* type_struct;
1079 const char* var_class_name;
1080 /* Covariant cast for argument 0 (original_iterator) <p0:MapIterator[nullable Object, nullable Object]> isa MapIterator[K, V] */
1081 /* <p0:MapIterator[nullable Object, nullable Object]> isa MapIterator[K, V] */
1082 type_struct = self->type->resolution_table->types[COLOR_core__MapIterator__core__MapKeysIterator___35dK__core__MapKeysIterator___35dV];
1083 cltype = type_struct->color;
1084 idtype = type_struct->id;
1085 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1086 var = 0;
1087 } else {
1088 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1089 }
1090 if (unlikely(!var)) {
1091 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1092 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[K, V]", var_class_name);
1093 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
1094 fatal_exit(1);
1095 }
1096 self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val = p0; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
1097 RET_LABEL:;
1098 }
1099 /* method abstract_collection#MapKeysIterator#is_ok for (self: MapKeysIterator[nullable Object, nullable Object]): Bool */
1100 short int core___core__MapKeysIterator___Iterator__is_ok(val* self) {
1101 short int var /* : Bool */;
1102 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1103 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
1104 short int var4 /* : Bool */;
1105 {
1106 { /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
1107 var3 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
1108 if (unlikely(var3 == NULL)) {
1109 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1110 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
1111 fatal_exit(1);
1112 }
1113 var1 = var3;
1114 RET_LABEL2:(void)0;
1115 }
1116 }
1117 {
1118 var4 = ((short int(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var1); /* is_ok on <var1:MapIterator[nullable Object, nullable Object]>*/
1119 }
1120 var = var4;
1121 goto RET_LABEL;
1122 RET_LABEL:;
1123 return var;
1124 }
1125 /* method abstract_collection#MapKeysIterator#next for (self: MapKeysIterator[nullable Object, nullable Object]) */
1126 void core___core__MapKeysIterator___Iterator__next(val* self) {
1127 val* var /* : MapIterator[nullable Object, nullable Object] */;
1128 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
1129 {
1130 { /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
1131 var2 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
1132 if (unlikely(var2 == NULL)) {
1133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1134 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
1135 fatal_exit(1);
1136 }
1137 var = var2;
1138 RET_LABEL1:(void)0;
1139 }
1140 }
1141 {
1142 ((void(*)(val* self))((((long)var&3)?class_info[((long)var&3)]:var->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var); /* next on <var:MapIterator[nullable Object, nullable Object]>*/
1143 }
1144 RET_LABEL:;
1145 }
1146 /* method abstract_collection#MapKeysIterator#item for (self: MapKeysIterator[nullable Object, nullable Object]): nullable Object */
1147 val* core___core__MapKeysIterator___Iterator__item(val* self) {
1148 val* var /* : nullable Object */;
1149 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1150 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
1151 val* var4 /* : nullable Object */;
1152 {
1153 { /* Inline abstract_collection#MapKeysIterator#original_iterator (self) on <self:MapKeysIterator[nullable Object, nullable Object]> */
1154 var3 = self->attrs[COLOR_core__abstract_collection__MapKeysIterator___original_iterator].val; /* _original_iterator on <self:MapKeysIterator[nullable Object, nullable Object]> */
1155 if (unlikely(var3 == NULL)) {
1156 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1157 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 763);
1158 fatal_exit(1);
1159 }
1160 var1 = var3;
1161 RET_LABEL2:(void)0;
1162 }
1163 }
1164 {
1165 var4 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var1); /* key on <var1:MapIterator[nullable Object, nullable Object]>*/
1166 }
1167 var = var4;
1168 goto RET_LABEL;
1169 RET_LABEL:;
1170 return var;
1171 }
1172 /* method abstract_collection#MapKeysIterator#init for (self: MapKeysIterator[nullable Object, nullable Object]) */
1173 void core___core__MapKeysIterator___core__kernel__Object__init(val* self) {
1174 {
1175 ((void(*)(val* self))(self->class->vft[COLOR_core___core__MapKeysIterator___core__kernel__Object__init]))(self); /* init on <self:MapKeysIterator[nullable Object, nullable Object]>*/
1176 }
1177 RET_LABEL:;
1178 }
1179 /* method abstract_collection#MapValuesIterator#original_iterator for (self: MapValuesIterator[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
1180 val* core___core__MapValuesIterator___original_iterator(val* self) {
1181 val* var /* : MapIterator[nullable Object, nullable Object] */;
1182 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1183 var1 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
1184 if (unlikely(var1 == NULL)) {
1185 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1186 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
1187 fatal_exit(1);
1188 }
1189 var = var1;
1190 RET_LABEL:;
1191 return var;
1192 }
1193 /* method abstract_collection#MapValuesIterator#original_iterator= for (self: MapValuesIterator[nullable Object, nullable Object], MapIterator[nullable Object, nullable Object]) */
1194 void core___core__MapValuesIterator___original_iterator_61d(val* self, val* p0) {
1195 short int var /* : Bool */;
1196 int cltype;
1197 int idtype;
1198 const struct type* type_struct;
1199 const char* var_class_name;
1200 /* Covariant cast for argument 0 (original_iterator) <p0:MapIterator[nullable Object, nullable Object]> isa MapIterator[K, V] */
1201 /* <p0:MapIterator[nullable Object, nullable Object]> isa MapIterator[K, V] */
1202 type_struct = self->type->resolution_table->types[COLOR_core__MapIterator__core__MapValuesIterator___35dK__core__MapValuesIterator___35dV];
1203 cltype = type_struct->color;
1204 idtype = type_struct->id;
1205 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1206 var = 0;
1207 } else {
1208 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1209 }
1210 if (unlikely(!var)) {
1211 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1212 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MapIterator[K, V]", var_class_name);
1213 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
1214 fatal_exit(1);
1215 }
1216 self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val = p0; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
1217 RET_LABEL:;
1218 }
1219 /* method abstract_collection#MapValuesIterator#is_ok for (self: MapValuesIterator[nullable Object, nullable Object]): Bool */
1220 short int core___core__MapValuesIterator___Iterator__is_ok(val* self) {
1221 short int var /* : Bool */;
1222 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1223 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
1224 short int var4 /* : Bool */;
1225 {
1226 { /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
1227 var3 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
1228 if (unlikely(var3 == NULL)) {
1229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1230 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
1231 fatal_exit(1);
1232 }
1233 var1 = var3;
1234 RET_LABEL2:(void)0;
1235 }
1236 }
1237 {
1238 var4 = ((short int(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var1); /* is_ok on <var1:MapIterator[nullable Object, nullable Object]>*/
1239 }
1240 var = var4;
1241 goto RET_LABEL;
1242 RET_LABEL:;
1243 return var;
1244 }
1245 /* method abstract_collection#MapValuesIterator#next for (self: MapValuesIterator[nullable Object, nullable Object]) */
1246 void core___core__MapValuesIterator___Iterator__next(val* self) {
1247 val* var /* : MapIterator[nullable Object, nullable Object] */;
1248 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
1249 {
1250 { /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
1251 var2 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
1252 if (unlikely(var2 == NULL)) {
1253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1254 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
1255 fatal_exit(1);
1256 }
1257 var = var2;
1258 RET_LABEL1:(void)0;
1259 }
1260 }
1261 {
1262 ((void(*)(val* self))((((long)var&3)?class_info[((long)var&3)]:var->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var); /* next on <var:MapIterator[nullable Object, nullable Object]>*/
1263 }
1264 RET_LABEL:;
1265 }
1266 /* method abstract_collection#MapValuesIterator#item for (self: MapValuesIterator[nullable Object, nullable Object]): nullable Object */
1267 val* core___core__MapValuesIterator___Iterator__item(val* self) {
1268 val* var /* : nullable Object */;
1269 val* var1 /* : MapIterator[nullable Object, nullable Object] */;
1270 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
1271 val* var4 /* : nullable Object */;
1272 {
1273 { /* Inline abstract_collection#MapValuesIterator#original_iterator (self) on <self:MapValuesIterator[nullable Object, nullable Object]> */
1274 var3 = self->attrs[COLOR_core__abstract_collection__MapValuesIterator___original_iterator].val; /* _original_iterator on <self:MapValuesIterator[nullable Object, nullable Object]> */
1275 if (unlikely(var3 == NULL)) {
1276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _original_iterator");
1277 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 774);
1278 fatal_exit(1);
1279 }
1280 var1 = var3;
1281 RET_LABEL2:(void)0;
1282 }
1283 }
1284 {
1285 var4 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var1); /* item on <var1:MapIterator[nullable Object, nullable Object]>*/
1286 }
1287 var = var4;
1288 goto RET_LABEL;
1289 RET_LABEL:;
1290 return var;
1291 }
1292 /* method abstract_collection#MapValuesIterator#init for (self: MapValuesIterator[nullable Object, nullable Object]) */
1293 void core___core__MapValuesIterator___core__kernel__Object__init(val* self) {
1294 {
1295 ((void(*)(val* self))(self->class->vft[COLOR_core___core__MapValuesIterator___core__kernel__Object__init]))(self); /* init on <self:MapValuesIterator[nullable Object, nullable Object]>*/
1296 }
1297 RET_LABEL:;
1298 }
1299 /* method abstract_collection#SequenceRead#first for (self: SequenceRead[nullable Object]): nullable Object */
1300 val* core___core__SequenceRead___Collection__first(val* self) {
1301 val* var /* : nullable Object */;
1302 short int var1 /* : Bool */;
1303 short int var2 /* : Bool */;
1304 val* var3 /* : nullable Object */;
1305 {
1306 var1 = ((short int(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__is_empty]))(self); /* is_empty on <self:SequenceRead[nullable Object]>*/
1307 }
1308 var2 = !var1;
1309 if (unlikely(!var2)) {
1310 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
1311 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 799);
1312 fatal_exit(1);
1313 }
1314 {
1315 var3 = ((val*(*)(val* self, long p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(self, 0l); /* [] on <self:SequenceRead[nullable Object]>*/
1316 }
1317 var = var3;
1318 goto RET_LABEL;
1319 RET_LABEL:;
1320 return var;
1321 }
1322 /* method abstract_collection#SequenceRead#last for (self: SequenceRead[nullable Object]): nullable Object */
1323 val* core___core__SequenceRead___last(val* self) {
1324 val* var /* : nullable Object */;
1325 short int var1 /* : Bool */;
1326 short int var2 /* : Bool */;
1327 long var3 /* : Int */;
1328 long var4 /* : Int */;
1329 short int var6 /* : Bool */;
1330 int cltype;
1331 int idtype;
1332 const char* var_class_name;
1333 long var7 /* : Int */;
1334 val* var8 /* : nullable Object */;
1335 {
1336 var1 = ((short int(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__is_empty]))(self); /* is_empty on <self:SequenceRead[nullable Object]>*/
1337 }
1338 var2 = !var1;
1339 if (unlikely(!var2)) {
1340 PRINT_ERROR("Runtime error: %s", "Assert \'not_empty\' failed");
1341 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 862);
1342 fatal_exit(1);
1343 }
1344 {
1345 var3 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
1346 }
1347 {
1348 { /* Inline kernel#Int#- (var3,1l) on <var3:Int> */
1349 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1350 /* <1l:Int> isa OTHER */
1351 var6 = 1; /* easy <1l:Int> isa OTHER*/
1352 if (unlikely(!var6)) {
1353 var_class_name = type_core__Int.name;
1354 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1355 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
1356 fatal_exit(1);
1357 }
1358 var7 = var3 - 1l;
1359 var4 = var7;
1360 goto RET_LABEL5;
1361 RET_LABEL5:(void)0;
1362 }
1363 }
1364 {
1365 var8 = ((val*(*)(val* self, long p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(self, var4); /* [] on <self:SequenceRead[nullable Object]>*/
1366 }
1367 var = var8;
1368 goto RET_LABEL;
1369 RET_LABEL:;
1370 return var;
1371 }
1372 /* method abstract_collection#SequenceRead#index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
1373 long core___core__SequenceRead___index_of(val* self, val* p0) {
1374 long var /* : Int */;
1375 val* var_item /* var item: nullable Object */;
1376 long var1 /* : Int */;
1377 var_item = p0;
1378 {
1379 var1 = ((long(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead__index_of_from]))(self, var_item, 0l); /* index_of_from on <self:SequenceRead[nullable Object]>*/
1380 }
1381 var = var1;
1382 goto RET_LABEL;
1383 RET_LABEL:;
1384 return var;
1385 }
1386 /* method abstract_collection#SequenceRead#last_index_of for (self: SequenceRead[nullable Object], nullable Object): Int */
1387 long core___core__SequenceRead___last_index_of(val* self, val* p0) {
1388 long var /* : Int */;
1389 val* var_item /* var item: nullable Object */;
1390 long var1 /* : Int */;
1391 long var2 /* : Int */;
1392 short int var4 /* : Bool */;
1393 int cltype;
1394 int idtype;
1395 const char* var_class_name;
1396 long var5 /* : Int */;
1397 long var6 /* : Int */;
1398 var_item = p0;
1399 {
1400 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
1401 }
1402 {
1403 { /* Inline kernel#Int#- (var1,1l) on <var1:Int> */
1404 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1405 /* <1l:Int> isa OTHER */
1406 var4 = 1; /* easy <1l:Int> isa OTHER*/
1407 if (unlikely(!var4)) {
1408 var_class_name = type_core__Int.name;
1409 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1410 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
1411 fatal_exit(1);
1412 }
1413 var5 = var1 - 1l;
1414 var2 = var5;
1415 goto RET_LABEL3;
1416 RET_LABEL3:(void)0;
1417 }
1418 }
1419 {
1420 var6 = ((long(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of_from]))(self, var_item, var2); /* last_index_of_from on <self:SequenceRead[nullable Object]>*/
1421 }
1422 var = var6;
1423 goto RET_LABEL;
1424 RET_LABEL:;
1425 return var;
1426 }
1427 /* method abstract_collection#SequenceRead#index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
1428 long core___core__SequenceRead___index_of_from(val* self, val* p0, long p1) {
1429 long var /* : Int */;
1430 val* var_item /* var item: nullable Object */;
1431 long var_pos /* var pos: Int */;
1432 long var_p /* var p: Int */;
1433 val* var1 /* : Iterator[nullable Object] */;
1434 val* var_i /* var i: IndexedIterator[nullable Object] */;
1435 short int var2 /* : Bool */;
1436 short int var3 /* : Bool */;
1437 short int var4 /* : Bool */;
1438 short int var6 /* : Bool */;
1439 int cltype;
1440 int idtype;
1441 const char* var_class_name;
1442 short int var7 /* : Bool */;
1443 short int var_ /* var : Bool */;
1444 val* var8 /* : nullable Object */;
1445 short int var9 /* : Bool */;
1446 short int var10 /* : Bool */;
1447 long var11 /* : Int */;
1448 long var12 /* : Int */;
1449 short int var14 /* : Bool */;
1450 int cltype15;
1451 int idtype16;
1452 const char* var_class_name17;
1453 long var18 /* : Int */;
1454 long var19 /* : Int */;
1455 long var21 /* : Int */;
1456 var_item = p0;
1457 var_pos = p1;
1458 var_p = 0l;
1459 {
1460 var1 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(self); /* iterator on <self:SequenceRead[nullable Object]>*/
1461 }
1462 var_i = var1;
1463 for(;;) {
1464 {
1465 var2 = ((short int(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_i); /* is_ok on <var_i:IndexedIterator[nullable Object]>*/
1466 }
1467 if (var2){
1468 {
1469 { /* Inline kernel#Int#>= (var_p,var_pos) on <var_p:Int> */
1470 /* Covariant cast for argument 0 (i) <var_pos:Int> isa OTHER */
1471 /* <var_pos:Int> isa OTHER */
1472 var6 = 1; /* easy <var_pos:Int> isa OTHER*/
1473 if (unlikely(!var6)) {
1474 var_class_name = type_core__Int.name;
1475 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1476 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
1477 fatal_exit(1);
1478 }
1479 var7 = var_p >= var_pos;
1480 var4 = var7;
1481 goto RET_LABEL5;
1482 RET_LABEL5:(void)0;
1483 }
1484 }
1485 var_ = var4;
1486 if (var4){
1487 {
1488 var8 = ((val*(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_i); /* item on <var_i:IndexedIterator[nullable Object]>*/
1489 }
1490 if (var8 == NULL) {
1491 var9 = (var_item == NULL);
1492 } else {
1493 var10 = ((short int(*)(val* self, val* p0))((((long)var8&3)?class_info[((long)var8&3)]:var8->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var8, var_item); /* == on <var8:nullable Object>*/
1494 var9 = var10;
1495 }
1496 var3 = var9;
1497 } else {
1498 var3 = var_;
1499 }
1500 if (var3){
1501 {
1502 var11 = ((long(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__IndexedIterator__index]))(var_i); /* index on <var_i:IndexedIterator[nullable Object]>*/
1503 }
1504 var = var11;
1505 goto RET_LABEL;
1506 } else {
1507 }
1508 {
1509 ((void(*)(val* self))((((long)var_i&3)?class_info[((long)var_i&3)]:var_i->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_i); /* next on <var_i:IndexedIterator[nullable Object]>*/
1510 }
1511 {
1512 { /* Inline kernel#Int#+ (var_p,1l) on <var_p:Int> */
1513 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1514 /* <1l:Int> isa OTHER */
1515 var14 = 1; /* easy <1l:Int> isa OTHER*/
1516 if (unlikely(!var14)) {
1517 var_class_name17 = type_core__Int.name;
1518 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
1519 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1520 fatal_exit(1);
1521 }
1522 var18 = var_p + 1l;
1523 var12 = var18;
1524 goto RET_LABEL13;
1525 RET_LABEL13:(void)0;
1526 }
1527 }
1528 var_p = var12;
1529 } else {
1530 goto BREAK_label;
1531 }
1532 }
1533 BREAK_label: (void)0;
1534 {
1535 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
1536 var21 = -1l;
1537 var19 = var21;
1538 goto RET_LABEL20;
1539 RET_LABEL20:(void)0;
1540 }
1541 }
1542 var = var19;
1543 goto RET_LABEL;
1544 RET_LABEL:;
1545 return var;
1546 }
1547 /* method abstract_collection#SequenceRead#last_index_of_from for (self: SequenceRead[nullable Object], nullable Object, Int): Int */
1548 long core___core__SequenceRead___last_index_of_from(val* self, val* p0, long p1) {
1549 long var /* : Int */;
1550 val* var_item /* var item: nullable Object */;
1551 long var_pos /* var pos: Int */;
1552 long var_i /* var i: Int */;
1553 short int var1 /* : Bool */;
1554 short int var3 /* : Bool */;
1555 int cltype;
1556 int idtype;
1557 const char* var_class_name;
1558 short int var4 /* : Bool */;
1559 val* var5 /* : nullable Object */;
1560 short int var6 /* : Bool */;
1561 short int var7 /* : Bool */;
1562 long var8 /* : Int */;
1563 short int var10 /* : Bool */;
1564 int cltype11;
1565 int idtype12;
1566 const char* var_class_name13;
1567 long var14 /* : Int */;
1568 long var15 /* : Int */;
1569 long var17 /* : Int */;
1570 var_item = p0;
1571 var_pos = p1;
1572 var_i = var_pos;
1573 for(;;) {
1574 {
1575 { /* Inline kernel#Int#>= (var_i,0l) on <var_i:Int> */
1576 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1577 /* <0l:Int> isa OTHER */
1578 var3 = 1; /* easy <0l:Int> isa OTHER*/
1579 if (unlikely(!var3)) {
1580 var_class_name = type_core__Int.name;
1581 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1582 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
1583 fatal_exit(1);
1584 }
1585 var4 = var_i >= 0l;
1586 var1 = var4;
1587 goto RET_LABEL2;
1588 RET_LABEL2:(void)0;
1589 }
1590 }
1591 if (var1){
1592 {
1593 var5 = ((val*(*)(val* self, long p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(self, var_i); /* [] on <self:SequenceRead[nullable Object]>*/
1594 }
1595 if (var5 == NULL) {
1596 var6 = (var_item == NULL);
1597 } else {
1598 var7 = ((short int(*)(val* self, val* p0))((((long)var5&3)?class_info[((long)var5&3)]:var5->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var5, var_item); /* == on <var5:nullable Object>*/
1599 var6 = var7;
1600 }
1601 if (var6){
1602 var = var_i;
1603 goto RET_LABEL;
1604 } else {
1605 }
1606 {
1607 { /* Inline kernel#Int#- (var_i,1l) on <var_i:Int> */
1608 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1609 /* <1l:Int> isa OTHER */
1610 var10 = 1; /* easy <1l:Int> isa OTHER*/
1611 if (unlikely(!var10)) {
1612 var_class_name13 = type_core__Int.name;
1613 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
1614 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
1615 fatal_exit(1);
1616 }
1617 var14 = var_i - 1l;
1618 var8 = var14;
1619 goto RET_LABEL9;
1620 RET_LABEL9:(void)0;
1621 }
1622 }
1623 var_i = var8;
1624 } else {
1625 goto BREAK_label;
1626 }
1627 }
1628 BREAK_label: (void)0;
1629 {
1630 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
1631 var17 = -1l;
1632 var15 = var17;
1633 goto RET_LABEL16;
1634 RET_LABEL16:(void)0;
1635 }
1636 }
1637 var = var15;
1638 goto RET_LABEL;
1639 RET_LABEL:;
1640 return var;
1641 }
1642 /* method abstract_collection#SequenceRead#== for (self: SequenceRead[nullable Object], nullable Object): Bool */
1643 short int core___core__SequenceRead___core__kernel__Object___61d_61d(val* self, val* p0) {
1644 short int var /* : Bool */;
1645 val* var_o /* var o: nullable Object */;
1646 short int var1 /* : Bool */;
1647 int cltype;
1648 int idtype;
1649 short int var2 /* : Bool */;
1650 long var3 /* : Int */;
1651 long var_l /* var l: Int */;
1652 long var4 /* : Int */;
1653 short int var5 /* : Bool */;
1654 short int var7 /* : Bool */;
1655 short int var8 /* : Bool */;
1656 long var_i /* var i: Int */;
1657 short int var9 /* : Bool */;
1658 short int var11 /* : Bool */;
1659 int cltype12;
1660 int idtype13;
1661 const char* var_class_name;
1662 short int var14 /* : Bool */;
1663 val* var15 /* : nullable Object */;
1664 val* var16 /* : nullable Object */;
1665 short int var17 /* : Bool */;
1666 short int var18 /* : Bool */;
1667 long var19 /* : Int */;
1668 short int var21 /* : Bool */;
1669 int cltype22;
1670 int idtype23;
1671 const char* var_class_name24;
1672 long var25 /* : Int */;
1673 var_o = p0;
1674 /* <var_o:nullable Object> isa SequenceRead[nullable Object] */
1675 cltype = type_core__SequenceRead__nullable__core__Object.color;
1676 idtype = type_core__SequenceRead__nullable__core__Object.id;
1677 if(var_o == NULL) {
1678 var1 = 0;
1679 } else {
1680 if(cltype >= (((long)var_o&3)?type_info[((long)var_o&3)]:var_o->type)->table_size) {
1681 var1 = 0;
1682 } else {
1683 var1 = (((long)var_o&3)?type_info[((long)var_o&3)]:var_o->type)->type_table[cltype] == idtype;
1684 }
1685 }
1686 var2 = !var1;
1687 if (var2){
1688 var = 0;
1689 goto RET_LABEL;
1690 } else {
1691 }
1692 {
1693 var3 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
1694 }
1695 var_l = var3;
1696 {
1697 var4 = ((long(*)(val* self))((((long)var_o&3)?class_info[((long)var_o&3)]:var_o->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_o); /* length on <var_o:nullable Object(SequenceRead[nullable Object])>*/
1698 }
1699 {
1700 { /* Inline kernel#Int#!= (var4,var_l) on <var4:Int> */
1701 var7 = var4 == var_l;
1702 var8 = !var7;
1703 var5 = var8;
1704 goto RET_LABEL6;
1705 RET_LABEL6:(void)0;
1706 }
1707 }
1708 if (var5){
1709 var = 0;
1710 goto RET_LABEL;
1711 } else {
1712 }
1713 var_i = 0l;
1714 for(;;) {
1715 {
1716 { /* Inline kernel#Int#< (var_i,var_l) on <var_i:Int> */
1717 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
1718 /* <var_l:Int> isa OTHER */
1719 var11 = 1; /* easy <var_l:Int> isa OTHER*/
1720 if (unlikely(!var11)) {
1721 var_class_name = type_core__Int.name;
1722 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1723 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1724 fatal_exit(1);
1725 }
1726 var14 = var_i < var_l;
1727 var9 = var14;
1728 goto RET_LABEL10;
1729 RET_LABEL10:(void)0;
1730 }
1731 }
1732 if (var9){
1733 {
1734 var15 = ((val*(*)(val* self, long p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(self, var_i); /* [] on <self:SequenceRead[nullable Object]>*/
1735 }
1736 {
1737 var16 = ((val*(*)(val* self, long p0))((((long)var_o&3)?class_info[((long)var_o&3)]:var_o->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var_o, var_i); /* [] on <var_o:nullable Object(SequenceRead[nullable Object])>*/
1738 }
1739 if (var15 == NULL) {
1740 var17 = (var16 != NULL);
1741 } else {
1742 var18 = ((short int(*)(val* self, val* p0))((((long)var15&3)?class_info[((long)var15&3)]:var15->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var15, var16); /* != on <var15:nullable Object>*/
1743 var17 = var18;
1744 }
1745 if (var17){
1746 var = 0;
1747 goto RET_LABEL;
1748 } else {
1749 }
1750 {
1751 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
1752 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1753 /* <1l:Int> isa OTHER */
1754 var21 = 1; /* easy <1l:Int> isa OTHER*/
1755 if (unlikely(!var21)) {
1756 var_class_name24 = type_core__Int.name;
1757 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
1758 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1759 fatal_exit(1);
1760 }
1761 var25 = var_i + 1l;
1762 var19 = var25;
1763 goto RET_LABEL20;
1764 RET_LABEL20:(void)0;
1765 }
1766 }
1767 var_i = var19;
1768 } else {
1769 goto BREAK_label;
1770 }
1771 }
1772 BREAK_label: (void)0;
1773 var = 1;
1774 goto RET_LABEL;
1775 RET_LABEL:;
1776 return var;
1777 }
1778 /* method abstract_collection#SequenceRead#hash for (self: SequenceRead[nullable Object]): Int */
1779 long core___core__SequenceRead___core__kernel__Object__hash(val* self) {
1780 long var /* : Int */;
1781 long var1 /* : Int */;
1782 long var2 /* : Int */;
1783 short int var4 /* : Bool */;
1784 int cltype;
1785 int idtype;
1786 const char* var_class_name;
1787 long var5 /* : Int */;
1788 long var_res /* var res: Int */;
1789 val* var_ /* var : SequenceRead[nullable Object] */;
1790 val* var6 /* : Iterator[nullable Object] */;
1791 val* var_7 /* var : IndexedIterator[nullable Object] */;
1792 short int var8 /* : Bool */;
1793 val* var9 /* : nullable Object */;
1794 val* var_e /* var e: nullable Object */;
1795 long var10 /* : Int */;
1796 short int var12 /* : Bool */;
1797 int cltype13;
1798 int idtype14;
1799 const char* var_class_name15;
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 short int var24 /* : Bool */;
1808 short int var25 /* : Bool */;
1809 long var26 /* : Int */;
1810 long var27 /* : Int */;
1811 short int var29 /* : Bool */;
1812 int cltype30;
1813 int idtype31;
1814 const char* var_class_name32;
1815 long var33 /* : Int */;
1816 {
1817 var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:SequenceRead[nullable Object]>*/
1818 }
1819 {
1820 { /* Inline kernel#Int#+ (17l,var1) on <17l:Int> */
1821 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
1822 /* <var1:Int> isa OTHER */
1823 var4 = 1; /* easy <var1:Int> isa OTHER*/
1824 if (unlikely(!var4)) {
1825 var_class_name = type_core__Int.name;
1826 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1827 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1828 fatal_exit(1);
1829 }
1830 var5 = 17l + var1;
1831 var2 = var5;
1832 goto RET_LABEL3;
1833 RET_LABEL3:(void)0;
1834 }
1835 }
1836 var_res = var2;
1837 var_ = self;
1838 {
1839 var6 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:SequenceRead[nullable Object]>*/
1840 }
1841 var_7 = var6;
1842 for(;;) {
1843 {
1844 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:IndexedIterator[nullable Object]>*/
1845 }
1846 if (var8){
1847 } else {
1848 goto BREAK_label;
1849 }
1850 {
1851 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:IndexedIterator[nullable Object]>*/
1852 }
1853 var_e = var9;
1854 {
1855 { /* Inline kernel#Int#* (var_res,3l) on <var_res:Int> */
1856 /* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
1857 /* <3l:Int> isa OTHER */
1858 var12 = 1; /* easy <3l:Int> isa OTHER*/
1859 if (unlikely(!var12)) {
1860 var_class_name15 = type_core__Int.name;
1861 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
1862 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 735);
1863 fatal_exit(1);
1864 }
1865 var16 = var_res * 3l;
1866 var10 = var16;
1867 goto RET_LABEL11;
1868 RET_LABEL11:(void)0;
1869 }
1870 }
1871 {
1872 { /* Inline kernel#Int#/ (var10,2l) on <var10:Int> */
1873 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
1874 /* <2l:Int> isa OTHER */
1875 var19 = 1; /* easy <2l:Int> isa OTHER*/
1876 if (unlikely(!var19)) {
1877 var_class_name22 = type_core__Int.name;
1878 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name22);
1879 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 736);
1880 fatal_exit(1);
1881 }
1882 var23 = var10 / 2l;
1883 var17 = var23;
1884 goto RET_LABEL18;
1885 RET_LABEL18:(void)0;
1886 }
1887 }
1888 var_res = var17;
1889 if (var_e == NULL) {
1890 var24 = 0; /* is null */
1891 } else {
1892 var24 = 1; /* arg is null and recv is not */
1893 }
1894 if (0) {
1895 var25 = ((short int(*)(val* self, val* p0))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_e, ((val*)NULL)); /* != on <var_e:nullable Object>*/
1896 var24 = var25;
1897 }
1898 if (var24){
1899 {
1900 var26 = ((long(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__kernel__Object__hash]))(var_e); /* hash on <var_e:nullable Object(Object)>*/
1901 }
1902 {
1903 { /* Inline kernel#Int#+ (var_res,var26) on <var_res:Int> */
1904 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
1905 /* <var26:Int> isa OTHER */
1906 var29 = 1; /* easy <var26:Int> isa OTHER*/
1907 if (unlikely(!var29)) {
1908 var_class_name32 = type_core__Int.name;
1909 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
1910 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1911 fatal_exit(1);
1912 }
1913 var33 = var_res + var26;
1914 var27 = var33;
1915 goto RET_LABEL28;
1916 RET_LABEL28:(void)0;
1917 }
1918 }
1919 var_res = var27;
1920 } else {
1921 }
1922 {
1923 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:IndexedIterator[nullable Object]>*/
1924 }
1925 }
1926 BREAK_label: (void)0;
1927 {
1928 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:IndexedIterator[nullable Object]>*/
1929 }
1930 var = var_res;
1931 goto RET_LABEL;
1932 RET_LABEL:;
1933 return var;
1934 }
1935 /* method abstract_collection#SequenceRead#iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
1936 val* core___core__SequenceRead___iterator_from(val* self, long p0) {
1937 val* var /* : IndexedIterator[nullable Object] */;
1938 long var_pos /* var pos: Int */;
1939 val* var1 /* : Iterator[nullable Object] */;
1940 val* var_res /* var res: IndexedIterator[nullable Object] */;
1941 short int var2 /* : Bool */;
1942 short int var3 /* : Bool */;
1943 short int var5 /* : Bool */;
1944 int cltype;
1945 int idtype;
1946 const char* var_class_name;
1947 short int var6 /* : Bool */;
1948 short int var_ /* var : Bool */;
1949 short int var7 /* : Bool */;
1950 long var8 /* : Int */;
1951 short int var10 /* : Bool */;
1952 int cltype11;
1953 int idtype12;
1954 const char* var_class_name13;
1955 long var14 /* : Int */;
1956 var_pos = p0;
1957 {
1958 var1 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(self); /* iterator on <self:SequenceRead[nullable Object]>*/
1959 }
1960 var_res = var1;
1961 for(;;) {
1962 {
1963 { /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
1964 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
1965 /* <0l:Int> isa OTHER */
1966 var5 = 1; /* easy <0l:Int> isa OTHER*/
1967 if (unlikely(!var5)) {
1968 var_class_name = type_core__Int.name;
1969 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1970 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
1971 fatal_exit(1);
1972 }
1973 var6 = var_pos > 0l;
1974 var3 = var6;
1975 goto RET_LABEL4;
1976 RET_LABEL4:(void)0;
1977 }
1978 }
1979 var_ = var3;
1980 if (var3){
1981 {
1982 var7 = ((short int(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_res); /* is_ok on <var_res:IndexedIterator[nullable Object]>*/
1983 }
1984 var2 = var7;
1985 } else {
1986 var2 = var_;
1987 }
1988 if (var2){
1989 {
1990 ((void(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_res); /* next on <var_res:IndexedIterator[nullable Object]>*/
1991 }
1992 {
1993 { /* Inline kernel#Int#- (var_pos,1l) on <var_pos:Int> */
1994 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1995 /* <1l:Int> isa OTHER */
1996 var10 = 1; /* easy <1l:Int> isa OTHER*/
1997 if (unlikely(!var10)) {
1998 var_class_name13 = type_core__Int.name;
1999 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
2000 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2001 fatal_exit(1);
2002 }
2003 var14 = var_pos - 1l;
2004 var8 = var14;
2005 goto RET_LABEL9;
2006 RET_LABEL9:(void)0;
2007 }
2008 }
2009 var_pos = var8;
2010 } else {
2011 goto BREAK_label;
2012 }
2013 }
2014 BREAK_label: (void)0;
2015 var = var_res;
2016 goto RET_LABEL;
2017 RET_LABEL:;
2018 return var;
2019 }
2020 /* method abstract_collection#SequenceRead#reverse_iterator for (self: SequenceRead[nullable Object]): IndexedIterator[nullable Object] */
2021 val* core___core__SequenceRead___reverse_iterator(val* self) {
2022 val* var /* : IndexedIterator[nullable Object] */;
2023 const char* var_class_name;
2024 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2025 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "reverse_iterator", var_class_name);
2026 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 972);
2027 fatal_exit(1);
2028 RET_LABEL:;
2029 return var;
2030 }
2031 /* method abstract_collection#SequenceRead#reverse_iterator_from for (self: SequenceRead[nullable Object], Int): IndexedIterator[nullable Object] */
2032 val* core___core__SequenceRead___reverse_iterator_from(val* self, long p0) {
2033 val* var /* : IndexedIterator[nullable Object] */;
2034 long var_pos /* var pos: Int */;
2035 val* var1 /* : IndexedIterator[nullable Object] */;
2036 val* var_res /* var res: IndexedIterator[nullable Object] */;
2037 short int var2 /* : Bool */;
2038 short int var3 /* : Bool */;
2039 short int var5 /* : Bool */;
2040 int cltype;
2041 int idtype;
2042 const char* var_class_name;
2043 short int var6 /* : Bool */;
2044 short int var_ /* var : Bool */;
2045 short int var7 /* : Bool */;
2046 long var8 /* : Int */;
2047 short int var10 /* : Bool */;
2048 int cltype11;
2049 int idtype12;
2050 const char* var_class_name13;
2051 long var14 /* : Int */;
2052 var_pos = p0;
2053 {
2054 var1 = ((val*(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SequenceRead__reverse_iterator]))(self); /* reverse_iterator on <self:SequenceRead[nullable Object]>*/
2055 }
2056 var_res = var1;
2057 for(;;) {
2058 {
2059 { /* Inline kernel#Int#> (var_pos,0l) on <var_pos:Int> */
2060 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2061 /* <0l:Int> isa OTHER */
2062 var5 = 1; /* easy <0l:Int> isa OTHER*/
2063 if (unlikely(!var5)) {
2064 var_class_name = type_core__Int.name;
2065 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
2066 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
2067 fatal_exit(1);
2068 }
2069 var6 = var_pos > 0l;
2070 var3 = var6;
2071 goto RET_LABEL4;
2072 RET_LABEL4:(void)0;
2073 }
2074 }
2075 var_ = var3;
2076 if (var3){
2077 {
2078 var7 = ((short int(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_res); /* is_ok on <var_res:IndexedIterator[nullable Object]>*/
2079 }
2080 var2 = var7;
2081 } else {
2082 var2 = var_;
2083 }
2084 if (var2){
2085 {
2086 ((void(*)(val* self))((((long)var_res&3)?class_info[((long)var_res&3)]:var_res->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_res); /* next on <var_res:IndexedIterator[nullable Object]>*/
2087 }
2088 {
2089 { /* Inline kernel#Int#- (var_pos,1l) on <var_pos:Int> */
2090 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2091 /* <1l:Int> isa OTHER */
2092 var10 = 1; /* easy <1l:Int> isa OTHER*/
2093 if (unlikely(!var10)) {
2094 var_class_name13 = type_core__Int.name;
2095 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
2096 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
2097 fatal_exit(1);
2098 }
2099 var14 = var_pos - 1l;
2100 var8 = var14;
2101 goto RET_LABEL9;
2102 RET_LABEL9:(void)0;
2103 }
2104 }
2105 var_pos = var8;
2106 } else {
2107 goto BREAK_label;
2108 }
2109 }
2110 BREAK_label: (void)0;
2111 var = var_res;
2112 goto RET_LABEL;
2113 RET_LABEL:;
2114 return var;
2115 }
2116 /* method abstract_collection#Sequence#first= for (self: Sequence[nullable Object], nullable Object) */
2117 void core___core__Sequence___first_61d(val* self, val* p0) {
2118 short int var /* : Bool */;
2119 int cltype;
2120 int idtype;
2121 const struct type* type_struct;
2122 short int is_nullable;
2123 const char* var_class_name;
2124 val* var_item /* var item: nullable Object */;
2125 /* Covariant cast for argument 0 (item) <p0:nullable Object> isa E */
2126 /* <p0:nullable Object> isa E */
2127 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Sequence___35dE];
2128 cltype = type_struct->color;
2129 idtype = type_struct->id;
2130 is_nullable = type_struct->is_nullable;
2131 if(p0 == NULL) {
2132 var = is_nullable;
2133 } else {
2134 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2135 var = 0;
2136 } else {
2137 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2138 }
2139 }
2140 if (unlikely(!var)) {
2141 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2142 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2143 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 999);
2144 fatal_exit(1);
2145 }
2146 var_item = p0;
2147 {
2148 ((void(*)(val* self, long p0, val* p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Sequence___91d_93d_61d]))(self, 0l, var_item); /* []= on <self:Sequence[nullable Object]>*/
2149 }
2150 RET_LABEL:;
2151 }
2152 /* method abstract_collection#Sequence#add for (self: Sequence[nullable Object], nullable Object) */
2153 void core___core__Sequence___SimpleCollection__add(val* self, val* p0) {
2154 short int var /* : Bool */;
2155 int cltype;
2156 int idtype;
2157 const struct type* type_struct;
2158 short int is_nullable;
2159 const char* var_class_name;
2160 val* var_e /* var e: nullable Object */;
2161 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
2162 /* <p0:nullable Object> isa E */
2163 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Sequence___35dE];
2164 cltype = type_struct->color;
2165 idtype = type_struct->id;
2166 is_nullable = type_struct->is_nullable;
2167 if(p0 == NULL) {
2168 var = is_nullable;
2169 } else {
2170 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2171 var = 0;
2172 } else {
2173 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2174 }
2175 }
2176 if (unlikely(!var)) {
2177 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2178 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2179 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1030);
2180 fatal_exit(1);
2181 }
2182 var_e = p0;
2183 {
2184 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Sequence__push]))(self, var_e); /* push on <self:Sequence[nullable Object]>*/
2185 }
2186 RET_LABEL:;
2187 }
2188 /* method abstract_collection#Sequence#append for (self: Sequence[nullable Object], Collection[nullable Object]) */
2189 void core___core__Sequence___append(val* self, val* p0) {
2190 short int var /* : Bool */;
2191 int cltype;
2192 int idtype;
2193 const struct type* type_struct;
2194 const char* var_class_name;
2195 val* var_coll /* var coll: Collection[nullable Object] */;
2196 /* Covariant cast for argument 0 (coll) <p0:Collection[nullable Object]> isa Collection[E] */
2197 /* <p0:Collection[nullable Object]> isa Collection[E] */
2198 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Collection__core__Sequence___35dE];
2199 cltype = type_struct->color;
2200 idtype = type_struct->id;
2201 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2202 var = 0;
2203 } else {
2204 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2205 }
2206 if (unlikely(!var)) {
2207 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2208 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2209 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1041);
2210 fatal_exit(1);
2211 }
2212 var_coll = p0;
2213 {
2214 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add_all]))(self, var_coll); /* add_all on <self:Sequence[nullable Object]>*/
2215 }
2216 RET_LABEL:;
2217 }
2218 /* method abstract_collection#Sequence#pop for (self: Sequence[nullable Object]): nullable Object */
2219 val* core___core__Sequence___pop(val* self) {
2220 val* var /* : nullable Object */;
2221 const char* var_class_name;
2222 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2223 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "pop", var_class_name);
2224 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1050);
2225 fatal_exit(1);
2226 RET_LABEL:;
2227 return var;
2228 }
2229 /* method abstract_collection#Sequence#unshift for (self: Sequence[nullable Object], nullable Object) */
2230 void core___core__Sequence___unshift(val* self, val* p0) {
2231 const char* var_class_name;
2232 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2233 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "unshift", var_class_name);
2234 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1060);
2235 fatal_exit(1);
2236 RET_LABEL:;
2237 }
2238 /* method abstract_collection#Sequence#prepend for (self: Sequence[nullable Object], Collection[nullable Object]) */
2239 void core___core__Sequence___prepend(val* self, val* p0) {
2240 short int var /* : Bool */;
2241 int cltype;
2242 int idtype;
2243 const struct type* type_struct;
2244 const char* var_class_name;
2245 val* var_coll /* var coll: Collection[nullable Object] */;
2246 /* Covariant cast for argument 0 (coll) <p0:Collection[nullable Object]> isa Collection[E] */
2247 /* <p0:Collection[nullable Object]> isa Collection[E] */
2248 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Collection__core__Sequence___35dE];
2249 cltype = type_struct->color;
2250 idtype = type_struct->id;
2251 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2252 var = 0;
2253 } else {
2254 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2255 }
2256 if (unlikely(!var)) {
2257 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2258 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2259 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1068);
2260 fatal_exit(1);
2261 }
2262 var_coll = p0;
2263 {
2264 ((void(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Sequence__insert_all]))(self, var_coll, 0l); /* insert_all on <self:Sequence[nullable Object]>*/
2265 }
2266 RET_LABEL:;
2267 }
2268 /* method abstract_collection#Sequence#shift for (self: Sequence[nullable Object]): nullable Object */
2269 val* core___core__Sequence___shift(val* self) {
2270 val* var /* : nullable Object */;
2271 const char* var_class_name;
2272 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2273 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "shift", var_class_name);
2274 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1077);
2275 fatal_exit(1);
2276 RET_LABEL:;
2277 return var;
2278 }
2279 /* method abstract_collection#Sequence#insert for (self: Sequence[nullable Object], nullable Object, Int) */
2280 void core___core__Sequence___insert(val* self, val* p0, long p1) {
2281 const char* var_class_name;
2282 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2283 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "insert", var_class_name);
2284 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1121);
2285 fatal_exit(1);
2286 RET_LABEL:;
2287 }
2288 /* method abstract_collection#Sequence#insert_all for (self: Sequence[nullable Object], Collection[nullable Object], Int) */
2289 void core___core__Sequence___insert_all(val* self, val* p0, long p1) {
2290 short int var /* : Bool */;
2291 int cltype;
2292 int idtype;
2293 const struct type* type_struct;
2294 const char* var_class_name;
2295 val* var_coll /* var coll: Collection[nullable Object] */;
2296 long var_index /* var index: Int */;
2297 short int var1 /* : Bool */;
2298 short int var2 /* : Bool */;
2299 short int var4 /* : Bool */;
2300 int cltype5;
2301 int idtype6;
2302 const char* var_class_name7;
2303 short int var8 /* : Bool */;
2304 short int var_ /* var : Bool */;
2305 long var9 /* : Int */;
2306 short int var10 /* : Bool */;
2307 short int var12 /* : Bool */;
2308 int cltype13;
2309 int idtype14;
2310 const char* var_class_name15;
2311 short int var16 /* : Bool */;
2312 long var17 /* : Int */;
2313 short int var18 /* : Bool */;
2314 short int var20 /* : Bool */;
2315 val* var_21 /* var : Collection[nullable Object] */;
2316 val* var22 /* : Iterator[nullable Object] */;
2317 val* var_23 /* var : Iterator[nullable Object] */;
2318 short int var24 /* : Bool */;
2319 val* var25 /* : nullable Object */;
2320 val* var_c /* var c: nullable Object */;
2321 long var26 /* : Int */;
2322 short int var28 /* : Bool */;
2323 int cltype29;
2324 int idtype30;
2325 const char* var_class_name31;
2326 long var32 /* : Int */;
2327 /* Covariant cast for argument 0 (coll) <p0:Collection[nullable Object]> isa Collection[E] */
2328 /* <p0:Collection[nullable Object]> isa Collection[E] */
2329 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Collection__core__Sequence___35dE];
2330 cltype = type_struct->color;
2331 idtype = type_struct->id;
2332 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2333 var = 0;
2334 } else {
2335 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2336 }
2337 if (unlikely(!var)) {
2338 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2339 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2340 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1131);
2341 fatal_exit(1);
2342 }
2343 var_coll = p0;
2344 var_index = p1;
2345 {
2346 { /* Inline kernel#Int#>= (var_index,0l) on <var_index:Int> */
2347 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
2348 /* <0l:Int> isa OTHER */
2349 var4 = 1; /* easy <0l:Int> isa OTHER*/
2350 if (unlikely(!var4)) {
2351 var_class_name7 = type_core__Int.name;
2352 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
2353 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
2354 fatal_exit(1);
2355 }
2356 var8 = var_index >= 0l;
2357 var2 = var8;
2358 goto RET_LABEL3;
2359 RET_LABEL3:(void)0;
2360 }
2361 }
2362 var_ = var2;
2363 if (var2){
2364 {
2365 var9 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Sequence[nullable Object]>*/
2366 }
2367 {
2368 { /* Inline kernel#Int#< (var_index,var9) on <var_index:Int> */
2369 /* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
2370 /* <var9:Int> isa OTHER */
2371 var12 = 1; /* easy <var9:Int> isa OTHER*/
2372 if (unlikely(!var12)) {
2373 var_class_name15 = type_core__Int.name;
2374 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
2375 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
2376 fatal_exit(1);
2377 }
2378 var16 = var_index < var9;
2379 var10 = var16;
2380 goto RET_LABEL11;
2381 RET_LABEL11:(void)0;
2382 }
2383 }
2384 var1 = var10;
2385 } else {
2386 var1 = var_;
2387 }
2388 if (unlikely(!var1)) {
2389 PRINT_ERROR("Runtime error: %s", "Assert failed");
2390 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1141);
2391 fatal_exit(1);
2392 }
2393 {
2394 var17 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Collection__length]))(self); /* length on <self:Sequence[nullable Object]>*/
2395 }
2396 {
2397 { /* Inline kernel#Int#== (var_index,var17) on <var_index:Int> */
2398 var20 = var_index == var17;
2399 var18 = var20;
2400 goto RET_LABEL19;
2401 RET_LABEL19:(void)0;
2402 }
2403 }
2404 if (var18){
2405 {
2406 ((void(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add_all]))(self, var_coll); /* add_all on <self:Sequence[nullable Object]>*/
2407 }
2408 } else {
2409 }
2410 var_21 = var_coll;
2411 {
2412 var22 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_21); /* iterator on <var_21:Collection[nullable Object]>*/
2413 }
2414 var_23 = var22;
2415 for(;;) {
2416 {
2417 var24 = ((short int(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_23); /* is_ok on <var_23:Iterator[nullable Object]>*/
2418 }
2419 if (var24){
2420 } else {
2421 goto BREAK_label;
2422 }
2423 {
2424 var25 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_23); /* item on <var_23:Iterator[nullable Object]>*/
2425 }
2426 var_c = var25;
2427 {
2428 ((void(*)(val* self, val* p0, long p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__abstract_collection__Sequence__insert]))(self, var_c, var_index); /* insert on <self:Sequence[nullable Object]>*/
2429 }
2430 {
2431 { /* Inline kernel#Int#+ (var_index,1l) on <var_index:Int> */
2432 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2433 /* <1l:Int> isa OTHER */
2434 var28 = 1; /* easy <1l:Int> isa OTHER*/
2435 if (unlikely(!var28)) {
2436 var_class_name31 = type_core__Int.name;
2437 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
2438 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2439 fatal_exit(1);
2440 }
2441 var32 = var_index + 1l;
2442 var26 = var32;
2443 goto RET_LABEL27;
2444 RET_LABEL27:(void)0;
2445 }
2446 }
2447 var_index = var26;
2448 {
2449 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_23); /* next on <var_23:Iterator[nullable Object]>*/
2450 }
2451 }
2452 BREAK_label: (void)0;
2453 {
2454 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_23); /* finish on <var_23:Iterator[nullable Object]>*/
2455 }
2456 RET_LABEL:;
2457 }
2458 /* method abstract_collection#Sequence#remove_at for (self: Sequence[nullable Object], Int) */
2459 void core___core__Sequence___remove_at(val* self, long p0) {
2460 const char* var_class_name;
2461 var_class_name = self == NULL ? "null" : (((long)self&3)?type_info[((long)self&3)]:self->type)->name;
2462 PRINT_ERROR("Runtime error: Abstract method `%s` called on `%s`", "remove_at", var_class_name);
2463 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1151);
2464 fatal_exit(1);
2465 RET_LABEL:;
2466 }
2467 /* method abstract_collection#CoupleMap#iterator for (self: CoupleMap[nullable Object, nullable Object]): MapIterator[nullable Object, nullable Object] */
2468 val* core___core__CoupleMap___MapRead__iterator(val* self) {
2469 val* var /* : MapIterator[nullable Object, nullable Object] */;
2470 val* var1 /* : CoupleMapIterator[nullable Object, nullable Object] */;
2471 val* var2 /* : Iterator[Couple[nullable Object, nullable Object]] */;
2472 var1 = NEW_core__abstract_collection__CoupleMapIterator((((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__abstract_collection__CoupleMapIterator__core__CoupleMap___35dK__core__CoupleMap___35dV]);
2473 {
2474 var2 = core___core__ArrayMap___core__abstract_collection__CoupleMap__couple_iterator(self);
2475 }
2476 {
2477 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_core__abstract_collection__CoupleMapIterator__iter_61d]))(var1, var2); /* iter= on <var1:CoupleMapIterator[nullable Object, nullable Object]>*/
2478 }
2479 {
2480 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:CoupleMapIterator[nullable Object, nullable Object]>*/
2481 }
2482 var = var1;
2483 goto RET_LABEL;
2484 RET_LABEL:;
2485 return var;
2486 }
2487 /* method abstract_collection#CoupleMap#has_key for (self: CoupleMap[nullable Object, nullable Object], nullable Object): Bool */
2488 short int core___core__CoupleMap___MapRead__has_key(val* self, val* p0) {
2489 short int var /* : Bool */;
2490 val* var_key /* var key: nullable Object */;
2491 val* var1 /* : nullable Couple[nullable Object, nullable Object] */;
2492 short int var2 /* : Bool */;
2493 short int var3 /* : Bool */;
2494 val* var_other /* var other: nullable Object */;
2495 short int var5 /* : Bool */;
2496 short int var6 /* : Bool */;
2497 var_key = p0;
2498 {
2499 var1 = core___core__ArrayMap___core__abstract_collection__CoupleMap__couple_at(self, var_key);
2500 }
2501 if (var1 == NULL) {
2502 var2 = 0; /* is null */
2503 } else {
2504 var2 = 1; /* arg is null and recv is not */
2505 }
2506 if (0) {
2507 { /* Inline kernel#Object#!= (var1,((val*)NULL)) on <var1:nullable Couple[nullable Object, nullable Object]> */
2508 var_other = ((val*)NULL);
2509 {
2510 var5 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1, var_other); /* == on <var1:nullable Couple[nullable Object, nullable Object](Couple[nullable Object, nullable Object])>*/
2511 }
2512 var6 = !var5;
2513 var3 = var6;
2514 goto RET_LABEL4;
2515 RET_LABEL4:(void)0;
2516 }
2517 var2 = var3;
2518 }
2519 var = var2;
2520 goto RET_LABEL;
2521 RET_LABEL:;
2522 return var;
2523 }
2524 /* method abstract_collection#CoupleMapIterator#item for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
2525 val* core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__item(val* self) {
2526 val* var /* : nullable Object */;
2527 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
2528 val* var2 /* : nullable Object */;
2529 val* var3 /* : nullable Object */;
2530 val* var5 /* : nullable Object */;
2531 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
2532 if (unlikely(var1 == NULL)) {
2533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2534 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1201);
2535 fatal_exit(1);
2536 }
2537 {
2538 var2 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var1); /* item on <var1:Iterator[Couple[nullable Object, nullable Object]]>*/
2539 }
2540 {
2541 { /* Inline abstract_collection#Couple#second (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
2542 var5 = var2->attrs[COLOR_core__abstract_collection__Couple___second].val; /* _second on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
2543 var3 = var5;
2544 RET_LABEL4:(void)0;
2545 }
2546 }
2547 var = var3;
2548 goto RET_LABEL;
2549 RET_LABEL:;
2550 return var;
2551 }
2552 /* method abstract_collection#CoupleMapIterator#key for (self: CoupleMapIterator[nullable Object, nullable Object]): nullable Object */
2553 val* core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__key(val* self) {
2554 val* var /* : nullable Object */;
2555 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
2556 val* var2 /* : nullable Object */;
2557 val* var3 /* : nullable Object */;
2558 val* var5 /* : nullable Object */;
2559 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
2560 if (unlikely(var1 == NULL)) {
2561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2562 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1205);
2563 fatal_exit(1);
2564 }
2565 {
2566 var2 = ((val*(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var1); /* item on <var1:Iterator[Couple[nullable Object, nullable Object]]>*/
2567 }
2568 {
2569 { /* Inline abstract_collection#Couple#first (var2) on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
2570 var5 = var2->attrs[COLOR_core__abstract_collection__Couple___first].val; /* _first on <var2:nullable Object(Couple[nullable Object, nullable Object])> */
2571 var3 = var5;
2572 RET_LABEL4:(void)0;
2573 }
2574 }
2575 var = var3;
2576 goto RET_LABEL;
2577 RET_LABEL:;
2578 return var;
2579 }
2580 /* method abstract_collection#CoupleMapIterator#is_ok for (self: CoupleMapIterator[nullable Object, nullable Object]): Bool */
2581 short int core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__is_ok(val* self) {
2582 short int var /* : Bool */;
2583 val* var1 /* : Iterator[Couple[nullable Object, nullable Object]] */;
2584 short int var2 /* : Bool */;
2585 var1 = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
2586 if (unlikely(var1 == NULL)) {
2587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2588 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1207);
2589 fatal_exit(1);
2590 }
2591 {
2592 var2 = ((short int(*)(val* self))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var1); /* is_ok on <var1:Iterator[Couple[nullable Object, nullable Object]]>*/
2593 }
2594 var = var2;
2595 goto RET_LABEL;
2596 RET_LABEL:;
2597 return var;
2598 }
2599 /* method abstract_collection#CoupleMapIterator#next for (self: CoupleMapIterator[nullable Object, nullable Object]) */
2600 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___MapIterator__next(val* self) {
2601 val* var /* : Iterator[Couple[nullable Object, nullable Object]] */;
2602 var = self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
2603 if (unlikely(var == NULL)) {
2604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iter");
2605 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1211);
2606 fatal_exit(1);
2607 }
2608 {
2609 ((void(*)(val* self))((((long)var&3)?class_info[((long)var&3)]:var->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var); /* next on <var:Iterator[Couple[nullable Object, nullable Object]]>*/
2610 }
2611 RET_LABEL:;
2612 }
2613 /* method abstract_collection#CoupleMapIterator#iter= for (self: CoupleMapIterator[nullable Object, nullable Object], Iterator[Couple[nullable Object, nullable Object]]) */
2614 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___iter_61d(val* self, val* p0) {
2615 short int var /* : Bool */;
2616 int cltype;
2617 int idtype;
2618 const struct type* type_struct;
2619 const char* var_class_name;
2620 /* Covariant cast for argument 0 (iter) <p0:Iterator[Couple[nullable Object, nullable Object]]> isa Iterator[Couple[K, V]] */
2621 /* <p0:Iterator[Couple[nullable Object, nullable Object]]> isa Iterator[Couple[K, V]] */
2622 type_struct = self->type->resolution_table->types[COLOR_core__Iterator__core__Couple__core__abstract_collection__CoupleMapIterator___35dK__core__abstract_collection__CoupleMapIterator___35dV];
2623 cltype = type_struct->color;
2624 idtype = type_struct->id;
2625 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2626 var = 0;
2627 } else {
2628 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2629 }
2630 if (unlikely(!var)) {
2631 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2632 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Iterator[Couple[K, V]]", var_class_name);
2633 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1214);
2634 fatal_exit(1);
2635 }
2636 self->attrs[COLOR_core__abstract_collection__CoupleMapIterator___iter].val = p0; /* _iter on <self:CoupleMapIterator[nullable Object, nullable Object]> */
2637 RET_LABEL:;
2638 }
2639 /* method abstract_collection#CoupleMapIterator#init for (self: CoupleMapIterator[nullable Object, nullable Object]) */
2640 void core__abstract_collection___core__abstract_collection__CoupleMapIterator___core__kernel__Object__init(val* self) {
2641 {
2642 ((void(*)(val* self))(self->class->vft[COLOR_core__abstract_collection___core__abstract_collection__CoupleMapIterator___core__kernel__Object__init]))(self); /* init on <self:CoupleMapIterator[nullable Object, nullable Object]>*/
2643 }
2644 RET_LABEL:;
2645 }
2646 /* method abstract_collection#Couple#first for (self: Couple[nullable Object, nullable Object]): nullable Object */
2647 val* core___core__Couple___first(val* self) {
2648 val* var /* : nullable Object */;
2649 val* var1 /* : nullable Object */;
2650 var1 = self->attrs[COLOR_core__abstract_collection__Couple___first].val; /* _first on <self:Couple[nullable Object, nullable Object]> */
2651 var = var1;
2652 RET_LABEL:;
2653 return var;
2654 }
2655 /* method abstract_collection#Couple#first= for (self: Couple[nullable Object, nullable Object], nullable Object) */
2656 void core___core__Couple___first_61d(val* self, val* p0) {
2657 short int var /* : Bool */;
2658 int cltype;
2659 int idtype;
2660 const struct type* type_struct;
2661 short int is_nullable;
2662 const char* var_class_name;
2663 /* Covariant cast for argument 0 (first) <p0:nullable Object> isa F */
2664 /* <p0:nullable Object> isa F */
2665 type_struct = self->type->resolution_table->types[COLOR_core__Couple___35dF];
2666 cltype = type_struct->color;
2667 idtype = type_struct->id;
2668 is_nullable = type_struct->is_nullable;
2669 if(p0 == NULL) {
2670 var = is_nullable;
2671 } else {
2672 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2673 var = 0;
2674 } else {
2675 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2676 }
2677 }
2678 if (unlikely(!var)) {
2679 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2680 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "F", var_class_name);
2681 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1222);
2682 fatal_exit(1);
2683 }
2684 self->attrs[COLOR_core__abstract_collection__Couple___first].val = p0; /* _first on <self:Couple[nullable Object, nullable Object]> */
2685 RET_LABEL:;
2686 }
2687 /* method abstract_collection#Couple#second for (self: Couple[nullable Object, nullable Object]): nullable Object */
2688 val* core___core__Couple___second(val* self) {
2689 val* var /* : nullable Object */;
2690 val* var1 /* : nullable Object */;
2691 var1 = self->attrs[COLOR_core__abstract_collection__Couple___second].val; /* _second on <self:Couple[nullable Object, nullable Object]> */
2692 var = var1;
2693 RET_LABEL:;
2694 return var;
2695 }
2696 /* method abstract_collection#Couple#second= for (self: Couple[nullable Object, nullable Object], nullable Object) */
2697 void core___core__Couple___second_61d(val* self, val* p0) {
2698 short int var /* : Bool */;
2699 int cltype;
2700 int idtype;
2701 const struct type* type_struct;
2702 short int is_nullable;
2703 const char* var_class_name;
2704 /* Covariant cast for argument 0 (second) <p0:nullable Object> isa S */
2705 /* <p0:nullable Object> isa S */
2706 type_struct = self->type->resolution_table->types[COLOR_core__Couple___35dS];
2707 cltype = type_struct->color;
2708 idtype = type_struct->id;
2709 is_nullable = type_struct->is_nullable;
2710 if(p0 == NULL) {
2711 var = is_nullable;
2712 } else {
2713 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2714 var = 0;
2715 } else {
2716 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2717 }
2718 }
2719 if (unlikely(!var)) {
2720 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2721 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "S", var_class_name);
2722 PRINT_ERROR(" (%s:%d)\n", FILE_core__abstract_collection, 1225);
2723 fatal_exit(1);
2724 }
2725 self->attrs[COLOR_core__abstract_collection__Couple___second].val = p0; /* _second on <self:Couple[nullable Object, nullable Object]> */
2726 RET_LABEL:;
2727 }
2728 /* method abstract_collection#Couple#init for (self: Couple[nullable Object, nullable Object]) */
2729 void core___core__Couple___core__kernel__Object__init(val* self) {
2730 {
2731 ((void(*)(val* self))(self->class->vft[COLOR_core___core__Couple___core__kernel__Object__init]))(self); /* init on <self:Couple[nullable Object, nullable Object]>*/
2732 }
2733 RET_LABEL:;
2734 }