README: document nit_env.sh
[nit.git] / c_src / poset.sep.1.c
1 #include "poset.sep.0.h"
2 /* method poset#POSet#iterator for (self: POSet[nullable Object]): Iterator[nullable Object] */
3 val* poset___poset__POSet___standard__abstract_collection__Collection__iterator(val* self) {
4 val* var /* : Iterator[nullable Object] */;
5 val* var1 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
6 val* var3 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
7 val* var4 /* : RemovableCollection[nullable Object] */;
8 val* var5 /* : Iterator[nullable Object] */;
9 {
10 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
11 var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
12 if (unlikely(var3 == NULL)) {
13 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
14 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
15 fatal_exit(1);
16 }
17 var1 = var3;
18 RET_LABEL2:(void)0;
19 }
20 }
21 {
22 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var1);
23 }
24 {
25 var5 = ((val*(*)(val* self))((((long)var4&3)?class_info[((long)var4&3)]:var4->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var4); /* iterator on <var4:RemovableCollection[nullable Object]>*/
26 }
27 var = var5;
28 goto RET_LABEL;
29 RET_LABEL:;
30 return var;
31 }
32 /* method poset#POSet#elements for (self: POSet[nullable Object]): HashMap[nullable Object, POSetElement[nullable Object]] */
33 val* poset___poset__POSet___elements(val* self) {
34 val* var /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
35 val* var1 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
36 var1 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
37 if (unlikely(var1 == NULL)) {
38 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
39 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
40 fatal_exit(1);
41 }
42 var = var1;
43 RET_LABEL:;
44 return var;
45 }
46 /* method poset#POSet#has for (self: POSet[nullable Object], nullable Object): Bool */
47 short int poset___poset__POSet___standard__abstract_collection__Collection__has(val* self, val* p0) {
48 short int var /* : Bool */;
49 val* var_e /* var e: nullable Object */;
50 val* var1 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
51 val* var3 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
52 val* var4 /* : RemovableCollection[nullable Object] */;
53 short int var5 /* : Bool */;
54 var_e = p0;
55 {
56 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
57 var3 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
58 if (unlikely(var3 == NULL)) {
59 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
60 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
61 fatal_exit(1);
62 }
63 var1 = var3;
64 RET_LABEL2:(void)0;
65 }
66 }
67 {
68 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var1);
69 }
70 {
71 var5 = ((short int(*)(val* self, val* p0))((((long)var4&3)?class_info[((long)var4&3)]:var4->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var4, var_e); /* has on <var4:RemovableCollection[nullable Object]>*/
72 }
73 var = var5;
74 goto RET_LABEL;
75 RET_LABEL:;
76 return var;
77 }
78 /* method poset#POSet#add_node for (self: POSet[nullable Object], nullable Object): POSetElement[nullable Object] */
79 val* poset___poset__POSet___add_node(val* self, val* p0) {
80 val* var /* : POSetElement[nullable Object] */;
81 short int var1 /* : Bool */;
82 int cltype;
83 int idtype;
84 const struct type* type_struct;
85 short int is_nullable;
86 const char* var_class_name;
87 val* var_e /* var e: nullable Object */;
88 val* var2 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
89 val* var4 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
90 val* var5 /* : RemovableCollection[nullable Object] */;
91 short int var6 /* : Bool */;
92 val* var7 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
93 val* var9 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
94 val* var10 /* : nullable Object */;
95 val* var11 /* : POSetElement[nullable Object] */;
96 val* var12 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
97 val* var14 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
98 long var15 /* : Int */;
99 val* var_poe /* var poe: POSetElement[nullable Object] */;
100 val* var16 /* : HashSet[nullable Object] */;
101 val* var18 /* : HashSet[nullable Object] */;
102 val* var19 /* : HashSet[nullable Object] */;
103 val* var21 /* : HashSet[nullable Object] */;
104 val* var22 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
105 val* var24 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
106 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
107 /* <p0:nullable Object> isa E */
108 type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
109 cltype = type_struct->color;
110 idtype = type_struct->id;
111 is_nullable = type_struct->is_nullable;
112 if(p0 == NULL) {
113 var1 = is_nullable;
114 } else {
115 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
116 var1 = 0;
117 } else {
118 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
119 }
120 }
121 if (unlikely(!var1)) {
122 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
123 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
124 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 87);
125 fatal_exit(1);
126 }
127 var_e = p0;
128 {
129 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
130 var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
131 if (unlikely(var4 == NULL)) {
132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
133 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
134 fatal_exit(1);
135 }
136 var2 = var4;
137 RET_LABEL3:(void)0;
138 }
139 }
140 {
141 var5 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var2);
142 }
143 {
144 var6 = ((short int(*)(val* self, val* p0))((((long)var5&3)?class_info[((long)var5&3)]:var5->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var5, var_e); /* has on <var5:RemovableCollection[nullable Object]>*/
145 }
146 if (var6){
147 {
148 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
149 var9 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
150 if (unlikely(var9 == NULL)) {
151 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
152 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
153 fatal_exit(1);
154 }
155 var7 = var9;
156 RET_LABEL8:(void)0;
157 }
158 }
159 {
160 var10 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var7, var_e);
161 }
162 var = var10;
163 goto RET_LABEL;
164 } else {
165 }
166 var11 = NEW_poset__POSetElement(self->type->resolution_table->types[COLOR_poset__POSetElement__poset__POSet___35dE]);
167 {
168 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
169 var14 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
170 if (unlikely(var14 == NULL)) {
171 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
172 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
173 fatal_exit(1);
174 }
175 var12 = var14;
176 RET_LABEL13:(void)0;
177 }
178 }
179 {
180 var15 = standard___standard__HashMap___standard__abstract_collection__MapRead__length(var12);
181 }
182 {
183 ((void(*)(val* self, val* p0))(var11->class->vft[COLOR_poset__POSetElement__poset_61d]))(var11, self); /* poset= on <var11:POSetElement[nullable Object]>*/
184 }
185 {
186 ((void(*)(val* self, val* p0))(var11->class->vft[COLOR_poset__POSetElement__element_61d]))(var11, var_e); /* element= on <var11:POSetElement[nullable Object]>*/
187 }
188 {
189 ((void(*)(val* self, long p0))(var11->class->vft[COLOR_poset__POSetElement__count_61d]))(var11, var15); /* count= on <var11:POSetElement[nullable Object]>*/
190 }
191 {
192 ((void(*)(val* self))(var11->class->vft[COLOR_standard__kernel__Object__init]))(var11); /* init on <var11:POSetElement[nullable Object]>*/
193 }
194 var_poe = var11;
195 {
196 { /* Inline poset#POSetElement#tos (var_poe) on <var_poe:POSetElement[nullable Object]> */
197 var18 = var_poe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_poe:POSetElement[nullable Object]> */
198 if (unlikely(var18 == NULL)) {
199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
200 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
201 fatal_exit(1);
202 }
203 var16 = var18;
204 RET_LABEL17:(void)0;
205 }
206 }
207 {
208 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var16, var_e); /* Direct call hash_collection#HashSet#add on <var16:HashSet[nullable Object]>*/
209 }
210 {
211 { /* Inline poset#POSetElement#froms (var_poe) on <var_poe:POSetElement[nullable Object]> */
212 var21 = var_poe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_poe:POSetElement[nullable Object]> */
213 if (unlikely(var21 == NULL)) {
214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
215 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 407);
216 fatal_exit(1);
217 }
218 var19 = var21;
219 RET_LABEL20:(void)0;
220 }
221 }
222 {
223 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var19, var_e); /* Direct call hash_collection#HashSet#add on <var19:HashSet[nullable Object]>*/
224 }
225 {
226 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
227 var24 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
228 if (unlikely(var24 == NULL)) {
229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
230 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
231 fatal_exit(1);
232 }
233 var22 = var24;
234 RET_LABEL23:(void)0;
235 }
236 }
237 {
238 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var22, var_e, var_poe); /* Direct call hash_collection#HashMap#[]= on <var22:HashMap[nullable Object, POSetElement[nullable Object]]>*/
239 }
240 var = var_poe;
241 goto RET_LABEL;
242 RET_LABEL:;
243 return var;
244 }
245 /* method poset#POSet#[] for (self: POSet[nullable Object], nullable Object): POSetElement[nullable Object] */
246 val* poset___poset__POSet____91d_93d(val* self, val* p0) {
247 val* var /* : POSetElement[nullable Object] */;
248 short int var1 /* : Bool */;
249 int cltype;
250 int idtype;
251 const struct type* type_struct;
252 short int is_nullable;
253 const char* var_class_name;
254 val* var_e /* var e: nullable Object */;
255 val* var2 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
256 val* var4 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
257 val* var5 /* : RemovableCollection[nullable Object] */;
258 short int var6 /* : Bool */;
259 val* var7 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
260 val* var9 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
261 val* var10 /* : nullable Object */;
262 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
263 /* <p0:nullable Object> isa E */
264 type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
265 cltype = type_struct->color;
266 idtype = type_struct->id;
267 is_nullable = type_struct->is_nullable;
268 if(p0 == NULL) {
269 var1 = is_nullable;
270 } else {
271 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
272 var1 = 0;
273 } else {
274 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
275 }
276 }
277 if (unlikely(!var1)) {
278 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
279 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
280 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 101);
281 fatal_exit(1);
282 }
283 var_e = p0;
284 {
285 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
286 var4 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
287 if (unlikely(var4 == NULL)) {
288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
289 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
290 fatal_exit(1);
291 }
292 var2 = var4;
293 RET_LABEL3:(void)0;
294 }
295 }
296 {
297 var5 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var2);
298 }
299 {
300 var6 = ((short int(*)(val* self, val* p0))((((long)var5&3)?class_info[((long)var5&3)]:var5->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var5, var_e); /* has on <var5:RemovableCollection[nullable Object]>*/
301 }
302 if (unlikely(!var6)) {
303 PRINT_ERROR("Runtime error: %s", "Assert failed");
304 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 115);
305 fatal_exit(1);
306 }
307 {
308 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
309 var9 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
310 if (unlikely(var9 == NULL)) {
311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
312 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
313 fatal_exit(1);
314 }
315 var7 = var9;
316 RET_LABEL8:(void)0;
317 }
318 }
319 {
320 var10 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var7, var_e);
321 }
322 var = var10;
323 goto RET_LABEL;
324 RET_LABEL:;
325 return var;
326 }
327 /* method poset#POSet#add_edge for (self: POSet[nullable Object], nullable Object, nullable Object) */
328 void poset___poset__POSet___add_edge(val* self, val* p0, val* p1) {
329 short int var /* : Bool */;
330 int cltype;
331 int idtype;
332 const struct type* type_struct;
333 short int is_nullable;
334 const char* var_class_name;
335 short int var1 /* : Bool */;
336 int cltype2;
337 int idtype3;
338 const struct type* type_struct4;
339 short int is_nullable5;
340 const char* var_class_name6;
341 val* var_f /* var f: nullable Object */;
342 val* var_t /* var t: nullable Object */;
343 val* var7 /* : POSetElement[nullable Object] */;
344 val* var_fe /* var fe: POSetElement[nullable Object] */;
345 val* var8 /* : POSetElement[nullable Object] */;
346 val* var_te /* var te: POSetElement[nullable Object] */;
347 val* var9 /* : HashSet[nullable Object] */;
348 val* var11 /* : HashSet[nullable Object] */;
349 short int var12 /* : Bool */;
350 val* var13 /* : HashSet[nullable Object] */;
351 val* var15 /* : HashSet[nullable Object] */;
352 val* var_ /* var : HashSet[nullable Object] */;
353 val* var16 /* : Iterator[nullable Object] */;
354 val* var_17 /* var : Iterator[nullable Object] */;
355 short int var18 /* : Bool */;
356 val* var19 /* : nullable Object */;
357 val* var_ff /* var ff: nullable Object */;
358 val* var20 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
359 val* var22 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
360 val* var23 /* : nullable Object */;
361 val* var_ffe /* var ffe: POSetElement[nullable Object] */;
362 val* var24 /* : HashSet[nullable Object] */;
363 val* var26 /* : HashSet[nullable Object] */;
364 val* var_27 /* var : HashSet[nullable Object] */;
365 val* var28 /* : Iterator[nullable Object] */;
366 val* var_29 /* var : Iterator[nullable Object] */;
367 short int var30 /* : Bool */;
368 val* var31 /* : nullable Object */;
369 val* var_tt /* var tt: nullable Object */;
370 val* var32 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
371 val* var34 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
372 val* var35 /* : nullable Object */;
373 val* var_tte /* var tte: POSetElement[nullable Object] */;
374 val* var36 /* : HashSet[nullable Object] */;
375 val* var38 /* : HashSet[nullable Object] */;
376 val* var39 /* : HashSet[nullable Object] */;
377 val* var41 /* : HashSet[nullable Object] */;
378 val* var43 /* : HashSet[nullable Object] */;
379 val* var45 /* : HashSet[nullable Object] */;
380 short int var46 /* : Bool */;
381 val* var_to_remove /* var to_remove: nullable Array[nullable Object] */;
382 val* var47 /* : HashSet[nullable Object] */;
383 val* var49 /* : HashSet[nullable Object] */;
384 val* var_50 /* var : HashSet[nullable Object] */;
385 val* var51 /* : Iterator[nullable Object] */;
386 val* var_52 /* var : Iterator[nullable Object] */;
387 short int var53 /* : Bool */;
388 val* var54 /* : nullable Object */;
389 val* var_x /* var x: nullable Object */;
390 val* var55 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
391 val* var57 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
392 val* var58 /* : nullable Object */;
393 val* var_xe /* var xe: POSetElement[nullable Object] */;
394 val* var59 /* : HashSet[nullable Object] */;
395 val* var61 /* : HashSet[nullable Object] */;
396 short int var62 /* : Bool */;
397 short int var63 /* : Bool */;
398 short int var64 /* : Bool */;
399 val* var65 /* : Array[nullable Object] */;
400 val* var66 /* : HashSet[nullable Object] */;
401 val* var68 /* : HashSet[nullable Object] */;
402 short int var70 /* : Bool */;
403 short int var71 /* : Bool */;
404 val* var_other /* var other: nullable Object */;
405 short int var73 /* : Bool */;
406 short int var74 /* : Bool */;
407 val* var_75 /* var : Array[nullable Object] */;
408 val* var76 /* : ArrayIterator[nullable Object] */;
409 val* var_77 /* var : ArrayIterator[nullable Object] */;
410 short int var78 /* : Bool */;
411 val* var79 /* : nullable Object */;
412 val* var_x80 /* var x: nullable Object */;
413 val* var81 /* : HashSet[nullable Object] */;
414 val* var83 /* : HashSet[nullable Object] */;
415 val* var85 /* : HashSet[nullable Object] */;
416 val* var87 /* : HashSet[nullable Object] */;
417 val* var_88 /* var : HashSet[nullable Object] */;
418 val* var89 /* : Iterator[nullable Object] */;
419 val* var_90 /* var : Iterator[nullable Object] */;
420 short int var91 /* : Bool */;
421 val* var92 /* : nullable Object */;
422 val* var_x93 /* var x: nullable Object */;
423 val* var94 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
424 val* var96 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
425 val* var97 /* : nullable Object */;
426 val* var_xe98 /* var xe: POSetElement[nullable Object] */;
427 val* var99 /* : HashSet[nullable Object] */;
428 val* var101 /* : HashSet[nullable Object] */;
429 short int var102 /* : Bool */;
430 val* var103 /* : HashSet[nullable Object] */;
431 val* var105 /* : HashSet[nullable Object] */;
432 short int var106 /* : Bool */;
433 short int var107 /* : Bool */;
434 val* var108 /* : Array[nullable Object] */;
435 short int var110 /* : Bool */;
436 short int var111 /* : Bool */;
437 short int var113 /* : Bool */;
438 short int var114 /* : Bool */;
439 val* var_115 /* var : Array[nullable Object] */;
440 val* var116 /* : ArrayIterator[nullable Object] */;
441 val* var_117 /* var : ArrayIterator[nullable Object] */;
442 short int var118 /* : Bool */;
443 val* var119 /* : nullable Object */;
444 val* var_x120 /* var x: nullable Object */;
445 val* var121 /* : HashSet[nullable Object] */;
446 val* var123 /* : HashSet[nullable Object] */;
447 val* var125 /* : HashSet[nullable Object] */;
448 val* var127 /* : HashSet[nullable Object] */;
449 val* var128 /* : HashSet[nullable Object] */;
450 val* var130 /* : HashSet[nullable Object] */;
451 /* Covariant cast for argument 0 (f) <p0:nullable Object> isa E */
452 /* <p0:nullable Object> isa E */
453 type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
454 cltype = type_struct->color;
455 idtype = type_struct->id;
456 is_nullable = type_struct->is_nullable;
457 if(p0 == NULL) {
458 var = is_nullable;
459 } else {
460 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
461 var = 0;
462 } else {
463 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
464 }
465 }
466 if (unlikely(!var)) {
467 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
468 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
469 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 119);
470 fatal_exit(1);
471 }
472 /* Covariant cast for argument 1 (t) <p1:nullable Object> isa E */
473 /* <p1:nullable Object> isa E */
474 type_struct4 = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
475 cltype2 = type_struct4->color;
476 idtype3 = type_struct4->id;
477 is_nullable5 = type_struct4->is_nullable;
478 if(p1 == NULL) {
479 var1 = is_nullable5;
480 } else {
481 if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
482 var1 = 0;
483 } else {
484 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
485 }
486 }
487 if (unlikely(!var1)) {
488 var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
489 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name6);
490 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 119);
491 fatal_exit(1);
492 }
493 var_f = p0;
494 var_t = p1;
495 {
496 var7 = poset___poset__POSet___add_node(self, var_f);
497 }
498 var_fe = var7;
499 {
500 var8 = poset___poset__POSet___add_node(self, var_t);
501 }
502 var_te = var8;
503 {
504 { /* Inline poset#POSetElement#tos (var_fe) on <var_fe:POSetElement[nullable Object]> */
505 var11 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_fe:POSetElement[nullable Object]> */
506 if (unlikely(var11 == NULL)) {
507 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
508 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
509 fatal_exit(1);
510 }
511 var9 = var11;
512 RET_LABEL10:(void)0;
513 }
514 }
515 {
516 var12 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var9, var_t);
517 }
518 if (var12){
519 goto RET_LABEL;
520 } else {
521 }
522 {
523 { /* Inline poset#POSetElement#froms (var_fe) on <var_fe:POSetElement[nullable Object]> */
524 var15 = var_fe->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_fe:POSetElement[nullable Object]> */
525 if (unlikely(var15 == NULL)) {
526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
527 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 407);
528 fatal_exit(1);
529 }
530 var13 = var15;
531 RET_LABEL14:(void)0;
532 }
533 }
534 var_ = var13;
535 {
536 var16 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
537 }
538 var_17 = var16;
539 for(;;) {
540 {
541 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[nullable Object]>*/
542 }
543 if (var18){
544 {
545 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[nullable Object]>*/
546 }
547 var_ff = var19;
548 {
549 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
550 var22 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
551 if (unlikely(var22 == NULL)) {
552 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
553 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
554 fatal_exit(1);
555 }
556 var20 = var22;
557 RET_LABEL21:(void)0;
558 }
559 }
560 {
561 var23 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var20, var_ff);
562 }
563 var_ffe = var23;
564 {
565 { /* Inline poset#POSetElement#tos (var_te) on <var_te:POSetElement[nullable Object]> */
566 var26 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_te:POSetElement[nullable Object]> */
567 if (unlikely(var26 == NULL)) {
568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
569 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
570 fatal_exit(1);
571 }
572 var24 = var26;
573 RET_LABEL25:(void)0;
574 }
575 }
576 var_27 = var24;
577 {
578 var28 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_27);
579 }
580 var_29 = var28;
581 for(;;) {
582 {
583 var30 = ((short int(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_29); /* is_ok on <var_29:Iterator[nullable Object]>*/
584 }
585 if (var30){
586 {
587 var31 = ((val*(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_29); /* item on <var_29:Iterator[nullable Object]>*/
588 }
589 var_tt = var31;
590 {
591 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
592 var34 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
593 if (unlikely(var34 == NULL)) {
594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
595 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
596 fatal_exit(1);
597 }
598 var32 = var34;
599 RET_LABEL33:(void)0;
600 }
601 }
602 {
603 var35 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var32, var_tt);
604 }
605 var_tte = var35;
606 {
607 { /* Inline poset#POSetElement#froms (var_tte) on <var_tte:POSetElement[nullable Object]> */
608 var38 = var_tte->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_tte:POSetElement[nullable Object]> */
609 if (unlikely(var38 == NULL)) {
610 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
611 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 407);
612 fatal_exit(1);
613 }
614 var36 = var38;
615 RET_LABEL37:(void)0;
616 }
617 }
618 {
619 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var36, var_ff); /* Direct call hash_collection#HashSet#add on <var36:HashSet[nullable Object]>*/
620 }
621 {
622 { /* Inline poset#POSetElement#tos (var_ffe) on <var_ffe:POSetElement[nullable Object]> */
623 var41 = var_ffe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_ffe:POSetElement[nullable Object]> */
624 if (unlikely(var41 == NULL)) {
625 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
626 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
627 fatal_exit(1);
628 }
629 var39 = var41;
630 RET_LABEL40:(void)0;
631 }
632 }
633 {
634 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var39, var_tt); /* Direct call hash_collection#HashSet#add on <var39:HashSet[nullable Object]>*/
635 }
636 {
637 ((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_29); /* next on <var_29:Iterator[nullable Object]>*/
638 }
639 } else {
640 goto BREAK_label;
641 }
642 }
643 BREAK_label: (void)0;
644 {
645 ((void(*)(val* self))((((long)var_29&3)?class_info[((long)var_29&3)]:var_29->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_29); /* finish on <var_29:Iterator[nullable Object]>*/
646 }
647 {
648 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[nullable Object]>*/
649 }
650 } else {
651 goto BREAK_label42;
652 }
653 }
654 BREAK_label42: (void)0;
655 {
656 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[nullable Object]>*/
657 }
658 {
659 { /* Inline poset#POSetElement#tos (var_te) on <var_te:POSetElement[nullable Object]> */
660 var45 = var_te->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_te:POSetElement[nullable Object]> */
661 if (unlikely(var45 == NULL)) {
662 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
663 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
664 fatal_exit(1);
665 }
666 var43 = var45;
667 RET_LABEL44:(void)0;
668 }
669 }
670 {
671 var46 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var43, var_f);
672 }
673 if (var46){
674 goto RET_LABEL;
675 } else {
676 }
677 var_to_remove = ((val*)NULL);
678 {
679 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[nullable Object]> */
680 var49 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[nullable Object]> */
681 if (unlikely(var49 == NULL)) {
682 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
683 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
684 fatal_exit(1);
685 }
686 var47 = var49;
687 RET_LABEL48:(void)0;
688 }
689 }
690 var_50 = var47;
691 {
692 var51 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_50);
693 }
694 var_52 = var51;
695 for(;;) {
696 {
697 var53 = ((short int(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_52); /* is_ok on <var_52:Iterator[nullable Object]>*/
698 }
699 if (var53){
700 {
701 var54 = ((val*(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_52); /* item on <var_52:Iterator[nullable Object]>*/
702 }
703 var_x = var54;
704 {
705 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
706 var57 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
707 if (unlikely(var57 == NULL)) {
708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
709 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
710 fatal_exit(1);
711 }
712 var55 = var57;
713 RET_LABEL56:(void)0;
714 }
715 }
716 {
717 var58 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var55, var_x);
718 }
719 var_xe = var58;
720 {
721 { /* Inline poset#POSetElement#tos (var_xe) on <var_xe:POSetElement[nullable Object]> */
722 var61 = var_xe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_xe:POSetElement[nullable Object]> */
723 if (unlikely(var61 == NULL)) {
724 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
725 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
726 fatal_exit(1);
727 }
728 var59 = var61;
729 RET_LABEL60:(void)0;
730 }
731 }
732 {
733 var62 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var59, var_f);
734 }
735 if (var62){
736 if (var_to_remove == NULL) {
737 var63 = 1; /* is null */
738 } else {
739 var63 = 0; /* arg is null but recv is not */
740 }
741 if (0) {
742 var64 = standard___standard__Array___standard__kernel__Object___61d_61d(var_to_remove, ((val*)NULL));
743 var63 = var64;
744 }
745 if (var63){
746 var65 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__poset__POSet___35dE]);
747 {
748 standard___standard__Array___standard__kernel__Object__init(var65); /* Direct call array#Array#init on <var65:Array[nullable Object]>*/
749 }
750 var_to_remove = var65;
751 } else {
752 }
753 {
754 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_to_remove, var_x); /* Direct call array#Array#add on <var_to_remove:nullable Array[nullable Object](Array[nullable Object])>*/
755 }
756 {
757 { /* Inline poset#POSetElement#dtos (var_xe) on <var_xe:POSetElement[nullable Object]> */
758 var68 = var_xe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_xe:POSetElement[nullable Object]> */
759 if (unlikely(var68 == NULL)) {
760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
761 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
762 fatal_exit(1);
763 }
764 var66 = var68;
765 RET_LABEL67:(void)0;
766 }
767 }
768 {
769 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var66, var_t); /* Direct call hash_collection#HashSet#remove on <var66:HashSet[nullable Object]>*/
770 }
771 } else {
772 }
773 {
774 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_52); /* next on <var_52:Iterator[nullable Object]>*/
775 }
776 } else {
777 goto BREAK_label69;
778 }
779 }
780 BREAK_label69: (void)0;
781 {
782 ((void(*)(val* self))((((long)var_52&3)?class_info[((long)var_52&3)]:var_52->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_52); /* finish on <var_52:Iterator[nullable Object]>*/
783 }
784 if (var_to_remove == NULL) {
785 var70 = 0; /* is null */
786 } else {
787 var70 = 1; /* arg is null and recv is not */
788 }
789 if (0) {
790 { /* Inline kernel#Object#!= (var_to_remove,((val*)NULL)) on <var_to_remove:nullable Array[nullable Object]> */
791 var_other = ((val*)NULL);
792 {
793 var73 = ((short int(*)(val* self, val* p0))(var_to_remove->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_to_remove, var_other); /* == on <var_to_remove:nullable Array[nullable Object](Array[nullable Object])>*/
794 }
795 var74 = !var73;
796 var71 = var74;
797 goto RET_LABEL72;
798 RET_LABEL72:(void)0;
799 }
800 var70 = var71;
801 }
802 if (var70){
803 var_75 = var_to_remove;
804 {
805 var76 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_75);
806 }
807 var_77 = var76;
808 for(;;) {
809 {
810 var78 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_77);
811 }
812 if (var78){
813 {
814 var79 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_77);
815 }
816 var_x80 = var79;
817 {
818 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[nullable Object]> */
819 var83 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[nullable Object]> */
820 if (unlikely(var83 == NULL)) {
821 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
822 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
823 fatal_exit(1);
824 }
825 var81 = var83;
826 RET_LABEL82:(void)0;
827 }
828 }
829 {
830 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var81, var_x80); /* Direct call hash_collection#HashSet#remove on <var81:HashSet[nullable Object]>*/
831 }
832 {
833 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_77); /* Direct call array#ArrayIterator#next on <var_77:ArrayIterator[nullable Object]>*/
834 }
835 } else {
836 goto BREAK_label84;
837 }
838 }
839 BREAK_label84: (void)0;
840 {
841 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_77); /* Direct call array#ArrayIterator#finish on <var_77:ArrayIterator[nullable Object]>*/
842 }
843 {
844 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var_to_remove); /* Direct call array#AbstractArray#clear on <var_to_remove:nullable Array[nullable Object](Array[nullable Object])>*/
845 }
846 } else {
847 }
848 {
849 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[nullable Object]> */
850 var87 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[nullable Object]> */
851 if (unlikely(var87 == NULL)) {
852 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
853 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
854 fatal_exit(1);
855 }
856 var85 = var87;
857 RET_LABEL86:(void)0;
858 }
859 }
860 var_88 = var85;
861 {
862 var89 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_88);
863 }
864 var_90 = var89;
865 for(;;) {
866 {
867 var91 = ((short int(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_90); /* is_ok on <var_90:Iterator[nullable Object]>*/
868 }
869 if (var91){
870 {
871 var92 = ((val*(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_90); /* item on <var_90:Iterator[nullable Object]>*/
872 }
873 var_x93 = var92;
874 {
875 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
876 var96 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
877 if (unlikely(var96 == NULL)) {
878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
879 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
880 fatal_exit(1);
881 }
882 var94 = var96;
883 RET_LABEL95:(void)0;
884 }
885 }
886 {
887 var97 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var94, var_x93);
888 }
889 var_xe98 = var97;
890 {
891 { /* Inline poset#POSetElement#froms (var_xe98) on <var_xe98:POSetElement[nullable Object]> */
892 var101 = var_xe98->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <var_xe98:POSetElement[nullable Object]> */
893 if (unlikely(var101 == NULL)) {
894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
895 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 407);
896 fatal_exit(1);
897 }
898 var99 = var101;
899 RET_LABEL100:(void)0;
900 }
901 }
902 {
903 var102 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var99, var_t);
904 }
905 if (var102){
906 {
907 { /* Inline poset#POSetElement#dfroms (var_xe98) on <var_xe98:POSetElement[nullable Object]> */
908 var105 = var_xe98->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_xe98:POSetElement[nullable Object]> */
909 if (unlikely(var105 == NULL)) {
910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
911 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
912 fatal_exit(1);
913 }
914 var103 = var105;
915 RET_LABEL104:(void)0;
916 }
917 }
918 {
919 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var103, var_f); /* Direct call hash_collection#HashSet#remove on <var103:HashSet[nullable Object]>*/
920 }
921 if (var_to_remove == NULL) {
922 var106 = 1; /* is null */
923 } else {
924 var106 = 0; /* arg is null but recv is not */
925 }
926 if (0) {
927 var107 = standard___standard__Array___standard__kernel__Object___61d_61d(var_to_remove, ((val*)NULL));
928 var106 = var107;
929 }
930 if (var106){
931 var108 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__poset__POSet___35dE]);
932 {
933 standard___standard__Array___standard__kernel__Object__init(var108); /* Direct call array#Array#init on <var108:Array[nullable Object]>*/
934 }
935 var_to_remove = var108;
936 } else {
937 }
938 {
939 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_to_remove, var_x93); /* Direct call array#Array#add on <var_to_remove:nullable Array[nullable Object](Array[nullable Object])>*/
940 }
941 } else {
942 }
943 {
944 ((void(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_90); /* next on <var_90:Iterator[nullable Object]>*/
945 }
946 } else {
947 goto BREAK_label109;
948 }
949 }
950 BREAK_label109: (void)0;
951 {
952 ((void(*)(val* self))((((long)var_90&3)?class_info[((long)var_90&3)]:var_90->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_90); /* finish on <var_90:Iterator[nullable Object]>*/
953 }
954 if (var_to_remove == NULL) {
955 var110 = 0; /* is null */
956 } else {
957 var110 = 1; /* arg is null and recv is not */
958 }
959 if (0) {
960 { /* Inline kernel#Object#!= (var_to_remove,((val*)NULL)) on <var_to_remove:nullable Array[nullable Object]> */
961 var_other = ((val*)NULL);
962 {
963 var113 = ((short int(*)(val* self, val* p0))(var_to_remove->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_to_remove, var_other); /* == on <var_to_remove:nullable Array[nullable Object](Array[nullable Object])>*/
964 }
965 var114 = !var113;
966 var111 = var114;
967 goto RET_LABEL112;
968 RET_LABEL112:(void)0;
969 }
970 var110 = var111;
971 }
972 if (var110){
973 var_115 = var_to_remove;
974 {
975 var116 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_115);
976 }
977 var_117 = var116;
978 for(;;) {
979 {
980 var118 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_117);
981 }
982 if (var118){
983 {
984 var119 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_117);
985 }
986 var_x120 = var119;
987 {
988 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[nullable Object]> */
989 var123 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[nullable Object]> */
990 if (unlikely(var123 == NULL)) {
991 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
992 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
993 fatal_exit(1);
994 }
995 var121 = var123;
996 RET_LABEL122:(void)0;
997 }
998 }
999 {
1000 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var121, var_x120); /* Direct call hash_collection#HashSet#remove on <var121:HashSet[nullable Object]>*/
1001 }
1002 {
1003 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_117); /* Direct call array#ArrayIterator#next on <var_117:ArrayIterator[nullable Object]>*/
1004 }
1005 } else {
1006 goto BREAK_label124;
1007 }
1008 }
1009 BREAK_label124: (void)0;
1010 {
1011 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_117); /* Direct call array#ArrayIterator#finish on <var_117:ArrayIterator[nullable Object]>*/
1012 }
1013 } else {
1014 }
1015 {
1016 { /* Inline poset#POSetElement#dtos (var_fe) on <var_fe:POSetElement[nullable Object]> */
1017 var127 = var_fe->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <var_fe:POSetElement[nullable Object]> */
1018 if (unlikely(var127 == NULL)) {
1019 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1020 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
1021 fatal_exit(1);
1022 }
1023 var125 = var127;
1024 RET_LABEL126:(void)0;
1025 }
1026 }
1027 {
1028 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var125, var_t); /* Direct call hash_collection#HashSet#add on <var125:HashSet[nullable Object]>*/
1029 }
1030 {
1031 { /* Inline poset#POSetElement#dfroms (var_te) on <var_te:POSetElement[nullable Object]> */
1032 var130 = var_te->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <var_te:POSetElement[nullable Object]> */
1033 if (unlikely(var130 == NULL)) {
1034 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1035 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
1036 fatal_exit(1);
1037 }
1038 var128 = var130;
1039 RET_LABEL129:(void)0;
1040 }
1041 }
1042 {
1043 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var128, var_f); /* Direct call hash_collection#HashSet#add on <var128:HashSet[nullable Object]>*/
1044 }
1045 RET_LABEL:;
1046 }
1047 /* method poset#POSet#has_edge for (self: POSet[nullable Object], nullable Object, nullable Object): Bool */
1048 short int poset___poset__POSet___has_edge(val* self, val* p0, val* p1) {
1049 short int var /* : Bool */;
1050 short int var1 /* : Bool */;
1051 int cltype;
1052 int idtype;
1053 const struct type* type_struct;
1054 short int is_nullable;
1055 const char* var_class_name;
1056 short int var2 /* : Bool */;
1057 int cltype3;
1058 int idtype4;
1059 const struct type* type_struct5;
1060 short int is_nullable6;
1061 const char* var_class_name7;
1062 val* var_f /* var f: nullable Object */;
1063 val* var_t /* var t: nullable Object */;
1064 val* var8 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1065 val* var10 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1066 val* var11 /* : RemovableCollection[nullable Object] */;
1067 short int var12 /* : Bool */;
1068 short int var13 /* : Bool */;
1069 val* var14 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1070 val* var16 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1071 val* var17 /* : nullable Object */;
1072 val* var_fe /* var fe: POSetElement[nullable Object] */;
1073 val* var18 /* : HashSet[nullable Object] */;
1074 val* var20 /* : HashSet[nullable Object] */;
1075 short int var21 /* : Bool */;
1076 /* Covariant cast for argument 0 (f) <p0:nullable Object> isa E */
1077 /* <p0:nullable Object> isa E */
1078 type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
1079 cltype = type_struct->color;
1080 idtype = type_struct->id;
1081 is_nullable = type_struct->is_nullable;
1082 if(p0 == NULL) {
1083 var1 = is_nullable;
1084 } else {
1085 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1086 var1 = 0;
1087 } else {
1088 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1089 }
1090 }
1091 if (unlikely(!var1)) {
1092 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1093 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1094 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 208);
1095 fatal_exit(1);
1096 }
1097 /* Covariant cast for argument 1 (t) <p1:nullable Object> isa E */
1098 /* <p1:nullable Object> isa E */
1099 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
1100 cltype3 = type_struct5->color;
1101 idtype4 = type_struct5->id;
1102 is_nullable6 = type_struct5->is_nullable;
1103 if(p1 == NULL) {
1104 var2 = is_nullable6;
1105 } else {
1106 if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
1107 var2 = 0;
1108 } else {
1109 var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
1110 }
1111 }
1112 if (unlikely(!var2)) {
1113 var_class_name7 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
1114 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name7);
1115 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 208);
1116 fatal_exit(1);
1117 }
1118 var_f = p0;
1119 var_t = p1;
1120 {
1121 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1122 var10 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1123 if (unlikely(var10 == NULL)) {
1124 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1125 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1126 fatal_exit(1);
1127 }
1128 var8 = var10;
1129 RET_LABEL9:(void)0;
1130 }
1131 }
1132 {
1133 var11 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var8);
1134 }
1135 {
1136 var12 = ((short int(*)(val* self, val* p0))((((long)var11&3)?class_info[((long)var11&3)]:var11->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var11, var_f); /* has on <var11:RemovableCollection[nullable Object]>*/
1137 }
1138 var13 = !var12;
1139 if (var13){
1140 var = 0;
1141 goto RET_LABEL;
1142 } else {
1143 }
1144 {
1145 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1146 var16 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1147 if (unlikely(var16 == NULL)) {
1148 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1149 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1150 fatal_exit(1);
1151 }
1152 var14 = var16;
1153 RET_LABEL15:(void)0;
1154 }
1155 }
1156 {
1157 var17 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var14, var_f);
1158 }
1159 var_fe = var17;
1160 {
1161 { /* Inline poset#POSetElement#tos (var_fe) on <var_fe:POSetElement[nullable Object]> */
1162 var20 = var_fe->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_fe:POSetElement[nullable Object]> */
1163 if (unlikely(var20 == NULL)) {
1164 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1165 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1166 fatal_exit(1);
1167 }
1168 var18 = var20;
1169 RET_LABEL19:(void)0;
1170 }
1171 }
1172 {
1173 var21 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var18, var_t);
1174 }
1175 var = var21;
1176 goto RET_LABEL;
1177 RET_LABEL:;
1178 return var;
1179 }
1180 /* method poset#POSet#compare for (self: POSet[nullable Object], nullable Object, nullable Object): Int */
1181 long poset___poset__POSet___standard__sorter__Comparator__compare(val* self, val* p0, val* p1) {
1182 long var /* : Int */;
1183 short int var1 /* : Bool */;
1184 int cltype;
1185 int idtype;
1186 const struct type* type_struct;
1187 short int is_nullable;
1188 const char* var_class_name;
1189 short int var2 /* : Bool */;
1190 int cltype3;
1191 int idtype4;
1192 const struct type* type_struct5;
1193 short int is_nullable6;
1194 const char* var_class_name7;
1195 val* var_a /* var a: nullable Object */;
1196 val* var_b /* var b: nullable Object */;
1197 val* var8 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1198 val* var10 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1199 val* var11 /* : nullable Object */;
1200 val* var_ae /* var ae: POSetElement[nullable Object] */;
1201 val* var12 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1202 val* var14 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1203 val* var15 /* : nullable Object */;
1204 val* var_be /* var be: POSetElement[nullable Object] */;
1205 val* var16 /* : HashSet[nullable Object] */;
1206 val* var18 /* : HashSet[nullable Object] */;
1207 long var19 /* : Int */;
1208 val* var20 /* : HashSet[nullable Object] */;
1209 val* var22 /* : HashSet[nullable Object] */;
1210 long var23 /* : Int */;
1211 long var24 /* : Int */;
1212 long var_res /* var res: Int */;
1213 short int var25 /* : Bool */;
1214 short int var27 /* : Bool */;
1215 short int var28 /* : Bool */;
1216 val* var29 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1217 val* var31 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1218 val* var32 /* : nullable Object */;
1219 long var33 /* : Int */;
1220 long var35 /* : Int */;
1221 val* var36 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1222 val* var38 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
1223 val* var39 /* : nullable Object */;
1224 long var40 /* : Int */;
1225 long var42 /* : Int */;
1226 long var43 /* : Int */;
1227 /* Covariant cast for argument 0 (a) <p0:nullable Object> isa E */
1228 /* <p0:nullable Object> isa E */
1229 type_struct = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
1230 cltype = type_struct->color;
1231 idtype = type_struct->id;
1232 is_nullable = type_struct->is_nullable;
1233 if(p0 == NULL) {
1234 var1 = is_nullable;
1235 } else {
1236 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1237 var1 = 0;
1238 } else {
1239 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1240 }
1241 }
1242 if (unlikely(!var1)) {
1243 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1244 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1245 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 284);
1246 fatal_exit(1);
1247 }
1248 /* Covariant cast for argument 1 (b) <p1:nullable Object> isa E */
1249 /* <p1:nullable Object> isa E */
1250 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet___35dE];
1251 cltype3 = type_struct5->color;
1252 idtype4 = type_struct5->id;
1253 is_nullable6 = type_struct5->is_nullable;
1254 if(p1 == NULL) {
1255 var2 = is_nullable6;
1256 } else {
1257 if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
1258 var2 = 0;
1259 } else {
1260 var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
1261 }
1262 }
1263 if (unlikely(!var2)) {
1264 var_class_name7 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
1265 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name7);
1266 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 284);
1267 fatal_exit(1);
1268 }
1269 var_a = p0;
1270 var_b = p1;
1271 {
1272 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1273 var10 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1274 if (unlikely(var10 == NULL)) {
1275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1276 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1277 fatal_exit(1);
1278 }
1279 var8 = var10;
1280 RET_LABEL9:(void)0;
1281 }
1282 }
1283 {
1284 var11 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var8, var_a);
1285 }
1286 var_ae = var11;
1287 {
1288 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1289 var14 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1290 if (unlikely(var14 == NULL)) {
1291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1292 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1293 fatal_exit(1);
1294 }
1295 var12 = var14;
1296 RET_LABEL13:(void)0;
1297 }
1298 }
1299 {
1300 var15 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var12, var_b);
1301 }
1302 var_be = var15;
1303 {
1304 { /* Inline poset#POSetElement#tos (var_ae) on <var_ae:POSetElement[nullable Object]> */
1305 var18 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_ae:POSetElement[nullable Object]> */
1306 if (unlikely(var18 == NULL)) {
1307 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1308 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1309 fatal_exit(1);
1310 }
1311 var16 = var18;
1312 RET_LABEL17:(void)0;
1313 }
1314 }
1315 {
1316 var19 = standard___standard__HashSet___standard__abstract_collection__Collection__length(var16);
1317 }
1318 {
1319 { /* Inline poset#POSetElement#tos (var_be) on <var_be:POSetElement[nullable Object]> */
1320 var22 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_be:POSetElement[nullable Object]> */
1321 if (unlikely(var22 == NULL)) {
1322 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1323 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1324 fatal_exit(1);
1325 }
1326 var20 = var22;
1327 RET_LABEL21:(void)0;
1328 }
1329 }
1330 {
1331 var23 = standard___standard__HashSet___standard__abstract_collection__Collection__length(var20);
1332 }
1333 {
1334 var24 = standard___standard__Int___Comparable___60d_61d_62d(var19, var23);
1335 }
1336 var_res = var24;
1337 {
1338 { /* Inline kernel#Int#!= (var_res,0l) on <var_res:Int> */
1339 var27 = var_res == 0l;
1340 var28 = !var27;
1341 var25 = var28;
1342 goto RET_LABEL26;
1343 RET_LABEL26:(void)0;
1344 }
1345 }
1346 if (var25){
1347 var = var_res;
1348 goto RET_LABEL;
1349 } else {
1350 }
1351 {
1352 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1353 var31 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1354 if (unlikely(var31 == NULL)) {
1355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1356 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1357 fatal_exit(1);
1358 }
1359 var29 = var31;
1360 RET_LABEL30:(void)0;
1361 }
1362 }
1363 {
1364 var32 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var29, var_a);
1365 }
1366 {
1367 { /* Inline poset#POSetElement#count (var32) on <var32:nullable Object(POSetElement[nullable Object])> */
1368 var35 = var32->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var32:nullable Object(POSetElement[nullable Object])> */
1369 var33 = var35;
1370 RET_LABEL34:(void)0;
1371 }
1372 }
1373 {
1374 { /* Inline poset#POSet#elements (self) on <self:POSet[nullable Object]> */
1375 var38 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
1376 if (unlikely(var38 == NULL)) {
1377 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
1378 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 82);
1379 fatal_exit(1);
1380 }
1381 var36 = var38;
1382 RET_LABEL37:(void)0;
1383 }
1384 }
1385 {
1386 var39 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var36, var_b);
1387 }
1388 {
1389 { /* Inline poset#POSetElement#count (var39) on <var39:nullable Object(POSetElement[nullable Object])> */
1390 var42 = var39->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var39:nullable Object(POSetElement[nullable Object])> */
1391 var40 = var42;
1392 RET_LABEL41:(void)0;
1393 }
1394 }
1395 {
1396 var43 = standard___standard__Int___Comparable___60d_61d_62d(var33, var40);
1397 }
1398 var = var43;
1399 goto RET_LABEL;
1400 RET_LABEL:;
1401 return var;
1402 }
1403 /* method poset#POSet#linearize for (self: POSet[nullable Object], Collection[nullable Object]): Array[nullable Object] */
1404 val* poset___poset__POSet___linearize(val* self, val* p0) {
1405 val* var /* : Array[nullable Object] */;
1406 short int var1 /* : Bool */;
1407 int cltype;
1408 int idtype;
1409 const struct type* type_struct;
1410 const char* var_class_name;
1411 val* var_elements /* var elements: Collection[nullable Object] */;
1412 val* var2 /* : Array[nullable Object] */;
1413 val* var_lin /* var lin: Array[nullable Object] */;
1414 /* Covariant cast for argument 0 (elements) <p0:Collection[nullable Object]> isa Collection[E] */
1415 /* <p0:Collection[nullable Object]> isa Collection[E] */
1416 type_struct = self->type->resolution_table->types[COLOR_standard__Collection__poset__POSet___35dE];
1417 cltype = type_struct->color;
1418 idtype = type_struct->id;
1419 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1420 var1 = 0;
1421 } else {
1422 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1423 }
1424 if (unlikely(!var1)) {
1425 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1426 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
1427 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 370);
1428 fatal_exit(1);
1429 }
1430 var_elements = p0;
1431 {
1432 var2 = ((val*(*)(val* self))((((long)var_elements&3)?class_info[((long)var_elements&3)]:var_elements->class)->vft[COLOR_standard__array__Collection__to_a]))(var_elements); /* to_a on <var_elements:Collection[nullable Object]>*/
1433 }
1434 var_lin = var2;
1435 {
1436 standard___standard__Comparator___sort(self, var_lin); /* Direct call sorter#Comparator#sort on <self:POSet[nullable Object]>*/
1437 }
1438 var = var_lin;
1439 goto RET_LABEL;
1440 RET_LABEL:;
1441 return var;
1442 }
1443 /* method poset#POSetElement#poset for (self: POSetElement[nullable Object]): POSet[nullable Object] */
1444 val* poset___poset__POSetElement___poset(val* self) {
1445 val* var /* : POSet[nullable Object] */;
1446 val* var1 /* : POSet[nullable Object] */;
1447 var1 = self->attrs[COLOR_poset__POSetElement___poset].val; /* _poset on <self:POSetElement[nullable Object]> */
1448 if (unlikely(var1 == NULL)) {
1449 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
1450 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 400);
1451 fatal_exit(1);
1452 }
1453 var = var1;
1454 RET_LABEL:;
1455 return var;
1456 }
1457 /* method poset#POSetElement#poset= for (self: POSetElement[nullable Object], POSet[nullable Object]) */
1458 void poset___poset__POSetElement___poset_61d(val* self, val* p0) {
1459 short int var /* : Bool */;
1460 int cltype;
1461 int idtype;
1462 const struct type* type_struct;
1463 const char* var_class_name;
1464 /* Covariant cast for argument 0 (poset) <p0:POSet[nullable Object]> isa POSet[E] */
1465 /* <p0:POSet[nullable Object]> isa POSet[E] */
1466 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__poset__POSetElement___35dE];
1467 cltype = type_struct->color;
1468 idtype = type_struct->id;
1469 if(cltype >= p0->type->table_size) {
1470 var = 0;
1471 } else {
1472 var = p0->type->type_table[cltype] == idtype;
1473 }
1474 if (unlikely(!var)) {
1475 var_class_name = p0 == NULL ? "null" : p0->type->name;
1476 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1477 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 400);
1478 fatal_exit(1);
1479 }
1480 self->attrs[COLOR_poset__POSetElement___poset].val = p0; /* _poset on <self:POSetElement[nullable Object]> */
1481 RET_LABEL:;
1482 }
1483 /* method poset#POSetElement#element for (self: POSetElement[nullable Object]): nullable Object */
1484 val* poset___poset__POSetElement___element(val* self) {
1485 val* var /* : nullable Object */;
1486 val* var1 /* : nullable Object */;
1487 var1 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on <self:POSetElement[nullable Object]> */
1488 var = var1;
1489 RET_LABEL:;
1490 return var;
1491 }
1492 /* method poset#POSetElement#element= for (self: POSetElement[nullable Object], nullable Object) */
1493 void poset___poset__POSetElement___element_61d(val* self, val* p0) {
1494 short int var /* : Bool */;
1495 int cltype;
1496 int idtype;
1497 const struct type* type_struct;
1498 short int is_nullable;
1499 const char* var_class_name;
1500 /* Covariant cast for argument 0 (element) <p0:nullable Object> isa E */
1501 /* <p0:nullable Object> isa E */
1502 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE];
1503 cltype = type_struct->color;
1504 idtype = type_struct->id;
1505 is_nullable = type_struct->is_nullable;
1506 if(p0 == NULL) {
1507 var = is_nullable;
1508 } else {
1509 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1510 var = 0;
1511 } else {
1512 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1513 }
1514 }
1515 if (unlikely(!var)) {
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_poset, 403);
1519 fatal_exit(1);
1520 }
1521 self->attrs[COLOR_poset__POSetElement___element].val = p0; /* _element on <self:POSetElement[nullable Object]> */
1522 RET_LABEL:;
1523 }
1524 /* method poset#POSetElement#tos for (self: POSetElement[nullable Object]): HashSet[nullable Object] */
1525 val* poset___poset__POSetElement___tos(val* self) {
1526 val* var /* : HashSet[nullable Object] */;
1527 val* var1 /* : HashSet[nullable Object] */;
1528 var1 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[nullable Object]> */
1529 if (unlikely(var1 == NULL)) {
1530 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1531 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1532 fatal_exit(1);
1533 }
1534 var = var1;
1535 RET_LABEL:;
1536 return var;
1537 }
1538 /* method poset#POSetElement#froms for (self: POSetElement[nullable Object]): HashSet[nullable Object] */
1539 val* poset___poset__POSetElement___froms(val* self) {
1540 val* var /* : HashSet[nullable Object] */;
1541 val* var1 /* : HashSet[nullable Object] */;
1542 var1 = self->attrs[COLOR_poset__POSetElement___froms].val; /* _froms on <self:POSetElement[nullable Object]> */
1543 if (unlikely(var1 == NULL)) {
1544 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _froms");
1545 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 407);
1546 fatal_exit(1);
1547 }
1548 var = var1;
1549 RET_LABEL:;
1550 return var;
1551 }
1552 /* method poset#POSetElement#dtos for (self: POSetElement[nullable Object]): HashSet[nullable Object] */
1553 val* poset___poset__POSetElement___dtos(val* self) {
1554 val* var /* : HashSet[nullable Object] */;
1555 val* var1 /* : HashSet[nullable Object] */;
1556 var1 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <self:POSetElement[nullable Object]> */
1557 if (unlikely(var1 == NULL)) {
1558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1559 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
1560 fatal_exit(1);
1561 }
1562 var = var1;
1563 RET_LABEL:;
1564 return var;
1565 }
1566 /* method poset#POSetElement#dfroms for (self: POSetElement[nullable Object]): HashSet[nullable Object] */
1567 val* poset___poset__POSetElement___dfroms(val* self) {
1568 val* var /* : HashSet[nullable Object] */;
1569 val* var1 /* : HashSet[nullable Object] */;
1570 var1 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <self:POSetElement[nullable Object]> */
1571 if (unlikely(var1 == NULL)) {
1572 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1573 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
1574 fatal_exit(1);
1575 }
1576 var = var1;
1577 RET_LABEL:;
1578 return var;
1579 }
1580 /* method poset#POSetElement#count for (self: POSetElement[nullable Object]): Int */
1581 long poset___poset__POSetElement___count(val* self) {
1582 long var /* : Int */;
1583 long var1 /* : Int */;
1584 var1 = self->attrs[COLOR_poset__POSetElement___count].l; /* _count on <self:POSetElement[nullable Object]> */
1585 var = var1;
1586 RET_LABEL:;
1587 return var;
1588 }
1589 /* method poset#POSetElement#count= for (self: POSetElement[nullable Object], Int) */
1590 void poset___poset__POSetElement___count_61d(val* self, long p0) {
1591 self->attrs[COLOR_poset__POSetElement___count].l = p0; /* _count on <self:POSetElement[nullable Object]> */
1592 RET_LABEL:;
1593 }
1594 /* method poset#POSetElement#greaters for (self: POSetElement[nullable Object]): Collection[nullable Object] */
1595 val* poset___poset__POSetElement___greaters(val* self) {
1596 val* var /* : Collection[nullable Object] */;
1597 val* var1 /* : HashSet[nullable Object] */;
1598 val* var3 /* : HashSet[nullable Object] */;
1599 {
1600 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[nullable Object]> */
1601 var3 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[nullable Object]> */
1602 if (unlikely(var3 == NULL)) {
1603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1604 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1605 fatal_exit(1);
1606 }
1607 var1 = var3;
1608 RET_LABEL2:(void)0;
1609 }
1610 }
1611 var = var1;
1612 goto RET_LABEL;
1613 RET_LABEL:;
1614 return var;
1615 }
1616 /* method poset#POSetElement#direct_greaters for (self: POSetElement[nullable Object]): Collection[nullable Object] */
1617 val* poset___poset__POSetElement___direct_greaters(val* self) {
1618 val* var /* : Collection[nullable Object] */;
1619 val* var1 /* : HashSet[nullable Object] */;
1620 val* var3 /* : HashSet[nullable Object] */;
1621 {
1622 { /* Inline poset#POSetElement#dtos (self) on <self:POSetElement[nullable Object]> */
1623 var3 = self->attrs[COLOR_poset__POSetElement___dtos].val; /* _dtos on <self:POSetElement[nullable Object]> */
1624 if (unlikely(var3 == NULL)) {
1625 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dtos");
1626 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 408);
1627 fatal_exit(1);
1628 }
1629 var1 = var3;
1630 RET_LABEL2:(void)0;
1631 }
1632 }
1633 var = var1;
1634 goto RET_LABEL;
1635 RET_LABEL:;
1636 return var;
1637 }
1638 /* method poset#POSetElement#direct_smallers for (self: POSetElement[nullable Object]): Collection[nullable Object] */
1639 val* poset___poset__POSetElement___direct_smallers(val* self) {
1640 val* var /* : Collection[nullable Object] */;
1641 val* var1 /* : HashSet[nullable Object] */;
1642 val* var3 /* : HashSet[nullable Object] */;
1643 {
1644 { /* Inline poset#POSetElement#dfroms (self) on <self:POSetElement[nullable Object]> */
1645 var3 = self->attrs[COLOR_poset__POSetElement___dfroms].val; /* _dfroms on <self:POSetElement[nullable Object]> */
1646 if (unlikely(var3 == NULL)) {
1647 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _dfroms");
1648 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 409);
1649 fatal_exit(1);
1650 }
1651 var1 = var3;
1652 RET_LABEL2:(void)0;
1653 }
1654 }
1655 var = var1;
1656 goto RET_LABEL;
1657 RET_LABEL:;
1658 return var;
1659 }
1660 /* method poset#POSetElement#<= for (self: POSetElement[nullable Object], nullable Object): Bool */
1661 short int poset___poset__POSetElement____60d_61d(val* self, val* p0) {
1662 short int var /* : Bool */;
1663 short int var1 /* : Bool */;
1664 int cltype;
1665 int idtype;
1666 const struct type* type_struct;
1667 short int is_nullable;
1668 const char* var_class_name;
1669 val* var_t /* var t: nullable Object */;
1670 val* var2 /* : HashSet[nullable Object] */;
1671 val* var4 /* : HashSet[nullable Object] */;
1672 short int var5 /* : Bool */;
1673 /* Covariant cast for argument 0 (t) <p0:nullable Object> isa E */
1674 /* <p0:nullable Object> isa E */
1675 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE];
1676 cltype = type_struct->color;
1677 idtype = type_struct->id;
1678 is_nullable = type_struct->is_nullable;
1679 if(p0 == NULL) {
1680 var1 = is_nullable;
1681 } else {
1682 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1683 var1 = 0;
1684 } else {
1685 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1686 }
1687 }
1688 if (unlikely(!var1)) {
1689 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1690 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1691 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 465);
1692 fatal_exit(1);
1693 }
1694 var_t = p0;
1695 {
1696 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[nullable Object]> */
1697 var4 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[nullable Object]> */
1698 if (unlikely(var4 == NULL)) {
1699 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1700 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1701 fatal_exit(1);
1702 }
1703 var2 = var4;
1704 RET_LABEL3:(void)0;
1705 }
1706 }
1707 {
1708 var5 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var2, var_t);
1709 }
1710 var = var5;
1711 goto RET_LABEL;
1712 RET_LABEL:;
1713 return var;
1714 }
1715 /* method poset#POSetElement#< for (self: POSetElement[nullable Object], nullable Object): Bool */
1716 short int poset___poset__POSetElement____60d(val* self, val* p0) {
1717 short int var /* : Bool */;
1718 short int var1 /* : Bool */;
1719 int cltype;
1720 int idtype;
1721 const struct type* type_struct;
1722 short int is_nullable;
1723 const char* var_class_name;
1724 val* var_t /* var t: nullable Object */;
1725 short int var2 /* : Bool */;
1726 val* var3 /* : nullable Object */;
1727 val* var5 /* : nullable Object */;
1728 short int var6 /* : Bool */;
1729 short int var7 /* : Bool */;
1730 short int var_ /* var : Bool */;
1731 val* var8 /* : HashSet[nullable Object] */;
1732 val* var10 /* : HashSet[nullable Object] */;
1733 short int var11 /* : Bool */;
1734 /* Covariant cast for argument 0 (t) <p0:nullable Object> isa E */
1735 /* <p0:nullable Object> isa E */
1736 type_struct = self->type->resolution_table->types[COLOR_poset__POSetElement___35dE];
1737 cltype = type_struct->color;
1738 idtype = type_struct->id;
1739 is_nullable = type_struct->is_nullable;
1740 if(p0 == NULL) {
1741 var1 = is_nullable;
1742 } else {
1743 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1744 var1 = 0;
1745 } else {
1746 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1747 }
1748 }
1749 if (unlikely(!var1)) {
1750 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1751 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1752 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 480);
1753 fatal_exit(1);
1754 }
1755 var_t = p0;
1756 {
1757 { /* Inline poset#POSetElement#element (self) on <self:POSetElement[nullable Object]> */
1758 var5 = self->attrs[COLOR_poset__POSetElement___element].val; /* _element on <self:POSetElement[nullable Object]> */
1759 var3 = var5;
1760 RET_LABEL4:(void)0;
1761 }
1762 }
1763 if (var_t == NULL) {
1764 var6 = (var3 != NULL);
1765 } else {
1766 var7 = ((short int(*)(val* self, val* p0))((((long)var_t&3)?class_info[((long)var_t&3)]:var_t->class)->vft[COLOR_standard__kernel__Object___33d_61d]))(var_t, var3); /* != on <var_t:nullable Object>*/
1767 var6 = var7;
1768 }
1769 var_ = var6;
1770 if (var6){
1771 {
1772 { /* Inline poset#POSetElement#tos (self) on <self:POSetElement[nullable Object]> */
1773 var10 = self->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <self:POSetElement[nullable Object]> */
1774 if (unlikely(var10 == NULL)) {
1775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
1776 PRINT_ERROR(" (%s:%d)\n", FILE_poset, 406);
1777 fatal_exit(1);
1778 }
1779 var8 = var10;
1780 RET_LABEL9:(void)0;
1781 }
1782 }
1783 {
1784 var11 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var8, var_t);
1785 }
1786 var2 = var11;
1787 } else {
1788 var2 = var_;
1789 }
1790 var = var2;
1791 goto RET_LABEL;
1792 RET_LABEL:;
1793 return var;
1794 }
1795 /* method poset#POSetElement#init for (self: POSetElement[nullable Object]) */
1796 void poset___poset__POSetElement___standard__kernel__Object__init(val* self) {
1797 {
1798 ((void(*)(val* self))(self->class->vft[COLOR_poset___poset__POSetElement___standard__kernel__Object__init]))(self); /* init on <self:POSetElement[nullable Object]>*/
1799 }
1800 RET_LABEL:;
1801 }