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