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