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