modelize_property: Remove root_init in MClass
[nit.git] / c_src / nitc__coloring.sep.1.c
1 #include "nitc__coloring.sep.0.h"
2 /* method coloring#POSetConflictGraph#core for (self: POSetConflictGraph[nullable Object]): HashSet[nullable Object] */
3 val* nitc___nitc__POSetConflictGraph___core(val* self) {
4 val* var /* : HashSet[nullable Object] */;
5 val* var1 /* : HashSet[nullable Object] */;
6 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
7 if (unlikely(var1 == NULL)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
9 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
10 fatal_exit(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method coloring#POSetConflictGraph#border for (self: POSetConflictGraph[nullable Object]): HashSet[nullable Object] */
17 val* nitc___nitc__POSetConflictGraph___border(val* self) {
18 val* var /* : HashSet[nullable Object] */;
19 val* var1 /* : HashSet[nullable Object] */;
20 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
21 if (unlikely(var1 == NULL)) {
22 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
23 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
24 fatal_exit(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method coloring#POSetConflictGraph#crown for (self: POSetConflictGraph[nullable Object]): HashSet[nullable Object] */
31 val* nitc___nitc__POSetConflictGraph___crown(val* self) {
32 val* var /* : HashSet[nullable Object] */;
33 val* var1 /* : HashSet[nullable Object] */;
34 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[nullable Object]> */
35 if (unlikely(var1 == NULL)) {
36 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
37 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 34);
38 fatal_exit(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method coloring#POSetConflictGraph#conflicts for (self: POSetConflictGraph[nullable Object]): HashMap[nullable Object, Set[nullable Object]] */
45 val* nitc___nitc__POSetConflictGraph___conflicts(val* self) {
46 val* var /* : HashMap[nullable Object, Set[nullable Object]] */;
47 val* var1 /* : HashMap[nullable Object, Set[nullable Object]] */;
48 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
49 if (unlikely(var1 == NULL)) {
50 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
51 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
52 fatal_exit(1);
53 }
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method coloring#POSetConflictGraph#poset for (self: POSetConflictGraph[nullable Object]): POSet[nullable Object] */
59 val* nitc___nitc__POSetConflictGraph___poset(val* self) {
60 val* var /* : POSet[nullable Object] */;
61 val* var1 /* : POSet[nullable Object] */;
62 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
63 if (unlikely(var1 == NULL)) {
64 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
65 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
66 fatal_exit(1);
67 }
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method coloring#POSetConflictGraph#poset= for (self: POSetConflictGraph[nullable Object], POSet[nullable Object]) */
73 void nitc___nitc__POSetConflictGraph___poset_61d(val* self, val* p0) {
74 short int var /* : Bool */;
75 int cltype;
76 int idtype;
77 const struct type* type_struct;
78 const char* var_class_name;
79 /* Covariant cast for argument 0 (poset) <p0:POSet[nullable Object]> isa POSet[E] */
80 /* <p0:POSet[nullable Object]> isa POSet[E] */
81 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nitc__POSetConflictGraph___35dE];
82 cltype = type_struct->color;
83 idtype = type_struct->id;
84 if(cltype >= p0->type->table_size) {
85 var = 0;
86 } else {
87 var = p0->type->type_table[cltype] == idtype;
88 }
89 if (unlikely(!var)) {
90 var_class_name = p0 == NULL ? "null" : p0->type->name;
91 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
92 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
93 fatal_exit(1);
94 }
95 self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val = p0; /* _poset on <self:POSetConflictGraph[nullable Object]> */
96 RET_LABEL:;
97 }
98 /* method coloring#POSetConflictGraph#order for (self: POSetConflictGraph[nullable Object]): Array[nullable Object] */
99 val* nitc___nitc__POSetConflictGraph___order(val* self) {
100 val* var /* : Array[nullable Object] */;
101 val* var1 /* : Array[nullable Object] */;
102 var1 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___order].val; /* _order on <self:POSetConflictGraph[nullable Object]> */
103 if (unlikely(var1 == NULL)) {
104 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _order");
105 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 51);
106 fatal_exit(1);
107 }
108 var = var1;
109 RET_LABEL:;
110 return var;
111 }
112 /* method coloring#POSetConflictGraph#order= for (self: POSetConflictGraph[nullable Object], Array[nullable Object]) */
113 void nitc___nitc__POSetConflictGraph___order_61d(val* self, val* p0) {
114 short int var /* : Bool */;
115 int cltype;
116 int idtype;
117 const struct type* type_struct;
118 const char* var_class_name;
119 /* Covariant cast for argument 0 (order) <p0:Array[nullable Object]> isa Array[E] */
120 /* <p0:Array[nullable Object]> isa Array[E] */
121 type_struct = self->type->resolution_table->types[COLOR_core__Array__nitc__POSetConflictGraph___35dE];
122 cltype = type_struct->color;
123 idtype = type_struct->id;
124 if(cltype >= p0->type->table_size) {
125 var = 0;
126 } else {
127 var = p0->type->type_table[cltype] == idtype;
128 }
129 if (unlikely(!var)) {
130 var_class_name = p0 == NULL ? "null" : p0->type->name;
131 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[E]", var_class_name);
132 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 51);
133 fatal_exit(1);
134 }
135 self->attrs[COLOR_nitc__coloring__POSetConflictGraph___order].val = p0; /* _order on <self:POSetConflictGraph[nullable Object]> */
136 RET_LABEL:;
137 }
138 /* method coloring#POSetConflictGraph#init for (self: POSetConflictGraph[nullable Object]) */
139 void nitc___nitc__POSetConflictGraph___core__kernel__Object__init(val* self) {
140 val* var /* : POSet[nullable Object] */;
141 val* var2 /* : POSet[nullable Object] */;
142 val* var3 /* : POSet[nullable Object] */;
143 val* var5 /* : POSet[nullable Object] */;
144 val* var6 /* : Array[nullable Object] */;
145 short int var8 /* : Bool */;
146 int cltype;
147 int idtype;
148 const struct type* type_struct;
149 const char* var_class_name;
150 {
151 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__POSetConflictGraph___core__kernel__Object__init]))(self); /* init on <self:POSetConflictGraph[nullable Object]>*/
152 }
153 {
154 nitc___nitc__POSetConflictGraph___extract_core(self); /* Direct call coloring#POSetConflictGraph#extract_core on <self:POSetConflictGraph[nullable Object]>*/
155 }
156 {
157 nitc___nitc__POSetConflictGraph___extract_border(self); /* Direct call coloring#POSetConflictGraph#extract_border on <self:POSetConflictGraph[nullable Object]>*/
158 }
159 {
160 nitc___nitc__POSetConflictGraph___extract_crown(self); /* Direct call coloring#POSetConflictGraph#extract_crown on <self:POSetConflictGraph[nullable Object]>*/
161 }
162 {
163 nitc___nitc__POSetConflictGraph___compute_conflicts(self); /* Direct call coloring#POSetConflictGraph#compute_conflicts on <self:POSetConflictGraph[nullable Object]>*/
164 }
165 {
166 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
167 var2 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
168 if (unlikely(var2 == NULL)) {
169 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
170 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
171 fatal_exit(1);
172 }
173 var = var2;
174 RET_LABEL1:(void)0;
175 }
176 }
177 {
178 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
179 var5 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
180 if (unlikely(var5 == NULL)) {
181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
182 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
183 fatal_exit(1);
184 }
185 var3 = var5;
186 RET_LABEL4:(void)0;
187 }
188 }
189 {
190 var6 = poset___poset__POSet___linearize(var, var3);
191 }
192 {
193 { /* Inline coloring#POSetConflictGraph#order= (self,var6) on <self:POSetConflictGraph[nullable Object]> */
194 /* Covariant cast for argument 0 (order) <var6:Array[nullable Object]> isa Array[E] */
195 /* <var6:Array[nullable Object]> isa Array[E] */
196 type_struct = self->type->resolution_table->types[COLOR_core__Array__nitc__POSetConflictGraph___35dE];
197 cltype = type_struct->color;
198 idtype = type_struct->id;
199 if(cltype >= var6->type->table_size) {
200 var8 = 0;
201 } else {
202 var8 = var6->type->type_table[cltype] == idtype;
203 }
204 if (unlikely(!var8)) {
205 var_class_name = var6 == NULL ? "null" : var6->type->name;
206 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[E]", var_class_name);
207 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 51);
208 fatal_exit(1);
209 }
210 self->attrs[COLOR_nitc__coloring__POSetConflictGraph___order].val = var6; /* _order on <self:POSetConflictGraph[nullable Object]> */
211 RET_LABEL7:(void)0;
212 }
213 }
214 RET_LABEL:;
215 }
216 /* method coloring#POSetConflictGraph#extract_core for (self: POSetConflictGraph[nullable Object]) */
217 void nitc___nitc__POSetConflictGraph___extract_core(val* self) {
218 val* var /* : HashSet[nullable Object] */;
219 val* var2 /* : HashSet[nullable Object] */;
220 val* var3 /* : POSet[nullable Object] */;
221 val* var5 /* : POSet[nullable Object] */;
222 val* var_ /* var : POSet[nullable Object] */;
223 val* var6 /* : Iterator[nullable Object] */;
224 val* var_7 /* var : Iterator[nullable Object] */;
225 short int var8 /* : Bool */;
226 val* var9 /* : nullable Object */;
227 val* var_e /* var e: nullable Object */;
228 val* var10 /* : POSet[nullable Object] */;
229 val* var12 /* : POSet[nullable Object] */;
230 val* var13 /* : POSetElement[nullable Object] */;
231 val* var14 /* : Collection[nullable Object] */;
232 long var15 /* : Int */;
233 short int var16 /* : Bool */;
234 short int var18 /* : Bool */;
235 int cltype;
236 int idtype;
237 const char* var_class_name;
238 short int var19 /* : Bool */;
239 val* var20 /* : HashSet[nullable Object] */;
240 val* var22 /* : HashSet[nullable Object] */;
241 val* var23 /* : POSet[nullable Object] */;
242 val* var25 /* : POSet[nullable Object] */;
243 val* var26 /* : POSetElement[nullable Object] */;
244 val* var27 /* : Collection[nullable Object] */;
245 {
246 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
247 var2 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
248 if (unlikely(var2 == NULL)) {
249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
250 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
251 fatal_exit(1);
252 }
253 var = var2;
254 RET_LABEL1:(void)0;
255 }
256 }
257 {
258 core___core__HashSet___core__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[nullable Object]>*/
259 }
260 {
261 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
262 var5 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
263 if (unlikely(var5 == NULL)) {
264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
265 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
266 fatal_exit(1);
267 }
268 var3 = var5;
269 RET_LABEL4:(void)0;
270 }
271 }
272 var_ = var3;
273 {
274 var6 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
275 }
276 var_7 = var6;
277 for(;;) {
278 {
279 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
280 }
281 if (var8){
282 } else {
283 goto BREAK_label;
284 }
285 {
286 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
287 }
288 var_e = var9;
289 {
290 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
291 var12 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
292 if (unlikely(var12 == NULL)) {
293 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
294 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
295 fatal_exit(1);
296 }
297 var10 = var12;
298 RET_LABEL11:(void)0;
299 }
300 }
301 {
302 var13 = poset___poset__POSet____91d_93d(var10, var_e);
303 }
304 {
305 var14 = poset___poset__POSetElement___direct_greaters(var13);
306 }
307 {
308 var15 = ((long(*)(val* self))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var14); /* length on <var14:Collection[nullable Object]>*/
309 }
310 {
311 { /* Inline kernel#Int#> (var15,1l) on <var15:Int> */
312 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
313 /* <1l:Int> isa OTHER */
314 var18 = 1; /* easy <1l:Int> isa OTHER*/
315 if (unlikely(!var18)) {
316 var_class_name = type_core__Int.name;
317 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
318 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
319 fatal_exit(1);
320 }
321 var19 = var15 > 1l;
322 var16 = var19;
323 goto RET_LABEL17;
324 RET_LABEL17:(void)0;
325 }
326 }
327 if (var16){
328 {
329 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
330 var22 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
331 if (unlikely(var22 == NULL)) {
332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
333 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
334 fatal_exit(1);
335 }
336 var20 = var22;
337 RET_LABEL21:(void)0;
338 }
339 }
340 {
341 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
342 var25 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
343 if (unlikely(var25 == NULL)) {
344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
345 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
346 fatal_exit(1);
347 }
348 var23 = var25;
349 RET_LABEL24:(void)0;
350 }
351 }
352 {
353 var26 = poset___poset__POSet____91d_93d(var23, var_e);
354 }
355 {
356 var27 = poset___poset__POSetElement___greaters(var26);
357 }
358 {
359 core___core__SimpleCollection___add_all(var20, var27); /* Direct call abstract_collection#SimpleCollection#add_all on <var20:HashSet[nullable Object]>*/
360 }
361 } else {
362 }
363 {
364 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
365 }
366 }
367 BREAK_label: (void)0;
368 {
369 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
370 }
371 RET_LABEL:;
372 }
373 /* method coloring#POSetConflictGraph#extract_border for (self: POSetConflictGraph[nullable Object]) */
374 void nitc___nitc__POSetConflictGraph___extract_border(val* self) {
375 val* var /* : HashSet[nullable Object] */;
376 val* var2 /* : HashSet[nullable Object] */;
377 val* var3 /* : HashSet[nullable Object] */;
378 val* var5 /* : HashSet[nullable Object] */;
379 val* var_ /* var : HashSet[nullable Object] */;
380 val* var6 /* : Iterator[nullable Object] */;
381 val* var_7 /* var : Iterator[nullable Object] */;
382 short int var8 /* : Bool */;
383 val* var9 /* : nullable Object */;
384 val* var_e /* var e: nullable Object */;
385 short int var10 /* : Bool */;
386 short int var11 /* : Bool */;
387 val* var13 /* : HashSet[nullable Object] */;
388 val* var15 /* : HashSet[nullable Object] */;
389 val* var16 /* : HashSet[nullable Object] */;
390 val* var18 /* : HashSet[nullable Object] */;
391 val* var_19 /* var : HashSet[nullable Object] */;
392 val* var20 /* : Iterator[nullable Object] */;
393 val* var_21 /* var : Iterator[nullable Object] */;
394 short int var22 /* : Bool */;
395 val* var24 /* : nullable Object */;
396 val* var_e25 /* var e: nullable Object */;
397 val* var26 /* : HashSet[nullable Object] */;
398 val* var28 /* : HashSet[nullable Object] */;
399 {
400 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[nullable Object]> */
401 var2 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
402 if (unlikely(var2 == NULL)) {
403 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
404 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
405 fatal_exit(1);
406 }
407 var = var2;
408 RET_LABEL1:(void)0;
409 }
410 }
411 {
412 core___core__HashSet___core__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[nullable Object]>*/
413 }
414 {
415 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
416 var5 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
417 if (unlikely(var5 == NULL)) {
418 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
419 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
420 fatal_exit(1);
421 }
422 var3 = var5;
423 RET_LABEL4:(void)0;
424 }
425 }
426 var_ = var3;
427 {
428 var6 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_);
429 }
430 var_7 = var6;
431 for(;;) {
432 {
433 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
434 }
435 if (var8){
436 } else {
437 goto BREAK_label;
438 }
439 {
440 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
441 }
442 var_e = var9;
443 {
444 var10 = nitc___nitc__POSetConflictGraph___is_border(self, var_e);
445 }
446 var11 = !var10;
447 if (var11){
448 goto BREAK_label12;
449 } else {
450 }
451 {
452 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[nullable Object]> */
453 var15 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
454 if (unlikely(var15 == NULL)) {
455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
456 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
457 fatal_exit(1);
458 }
459 var13 = var15;
460 RET_LABEL14:(void)0;
461 }
462 }
463 {
464 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var13, var_e); /* Direct call hash_collection#HashSet#add on <var13:HashSet[nullable Object]>*/
465 }
466 BREAK_label12: (void)0;
467 {
468 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
469 }
470 }
471 BREAK_label: (void)0;
472 {
473 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
474 }
475 {
476 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[nullable Object]> */
477 var18 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
478 if (unlikely(var18 == NULL)) {
479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
480 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
481 fatal_exit(1);
482 }
483 var16 = var18;
484 RET_LABEL17:(void)0;
485 }
486 }
487 var_19 = var16;
488 {
489 var20 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_19);
490 }
491 var_21 = var20;
492 for(;;) {
493 {
494 var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_21); /* is_ok on <var_21:Iterator[nullable Object]>*/
495 }
496 if (var22){
497 } else {
498 goto BREAK_label23;
499 }
500 {
501 var24 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_21); /* item on <var_21:Iterator[nullable Object]>*/
502 }
503 var_e25 = var24;
504 {
505 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
506 var28 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
507 if (unlikely(var28 == NULL)) {
508 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
509 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
510 fatal_exit(1);
511 }
512 var26 = var28;
513 RET_LABEL27:(void)0;
514 }
515 }
516 {
517 core___core__HashSet___core__abstract_collection__RemovableCollection__remove(var26, var_e25); /* Direct call hash_collection#HashSet#remove on <var26:HashSet[nullable Object]>*/
518 }
519 {
520 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_21); /* next on <var_21:Iterator[nullable Object]>*/
521 }
522 }
523 BREAK_label23: (void)0;
524 {
525 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_21); /* finish on <var_21:Iterator[nullable Object]>*/
526 }
527 RET_LABEL:;
528 }
529 /* method coloring#POSetConflictGraph#is_border for (self: POSetConflictGraph[nullable Object], nullable Object): Bool */
530 short int nitc___nitc__POSetConflictGraph___is_border(val* self, val* p0) {
531 short int var /* : Bool */;
532 short int var1 /* : Bool */;
533 int cltype;
534 int idtype;
535 const struct type* type_struct;
536 short int is_nullable;
537 const char* var_class_name;
538 val* var_e /* var e: nullable Object */;
539 val* var2 /* : POSet[nullable Object] */;
540 val* var4 /* : POSet[nullable Object] */;
541 val* var5 /* : POSetElement[nullable Object] */;
542 val* var6 /* : Collection[nullable Object] */;
543 val* var_ /* var : Collection[nullable Object] */;
544 val* var7 /* : Iterator[nullable Object] */;
545 val* var_8 /* var : Iterator[nullable Object] */;
546 short int var9 /* : Bool */;
547 val* var10 /* : nullable Object */;
548 val* var_child /* var child: nullable Object */;
549 val* var11 /* : HashSet[nullable Object] */;
550 val* var13 /* : HashSet[nullable Object] */;
551 short int var14 /* : Bool */;
552 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
553 /* <p0:nullable Object> isa E */
554 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph___35dE];
555 cltype = type_struct->color;
556 idtype = type_struct->id;
557 is_nullable = type_struct->is_nullable;
558 if(p0 == NULL) {
559 var1 = is_nullable;
560 } else {
561 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
562 var1 = 0;
563 } else {
564 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
565 }
566 }
567 if (unlikely(!var1)) {
568 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
569 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
570 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 83);
571 fatal_exit(1);
572 }
573 var_e = p0;
574 {
575 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
576 var4 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
577 if (unlikely(var4 == NULL)) {
578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
579 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
580 fatal_exit(1);
581 }
582 var2 = var4;
583 RET_LABEL3:(void)0;
584 }
585 }
586 {
587 var5 = poset___poset__POSet____91d_93d(var2, var_e);
588 }
589 {
590 var6 = poset___poset__POSetElement___direct_smallers(var5);
591 }
592 var_ = var6;
593 {
594 var7 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
595 }
596 var_8 = var7;
597 for(;;) {
598 {
599 var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:Iterator[nullable Object]>*/
600 }
601 if (var9){
602 } else {
603 goto BREAK_label;
604 }
605 {
606 var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:Iterator[nullable Object]>*/
607 }
608 var_child = var10;
609 {
610 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
611 var13 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
612 if (unlikely(var13 == NULL)) {
613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
614 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
615 fatal_exit(1);
616 }
617 var11 = var13;
618 RET_LABEL12:(void)0;
619 }
620 }
621 {
622 var14 = core___core__HashSet___core__abstract_collection__Collection__has(var11, var_child);
623 }
624 if (var14){
625 var = 0;
626 goto RET_LABEL;
627 } else {
628 }
629 {
630 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:Iterator[nullable Object]>*/
631 }
632 }
633 BREAK_label: (void)0;
634 {
635 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:Iterator[nullable Object]>*/
636 }
637 var = 1;
638 goto RET_LABEL;
639 RET_LABEL:;
640 return var;
641 }
642 /* method coloring#POSetConflictGraph#extract_crown for (self: POSetConflictGraph[nullable Object]) */
643 void nitc___nitc__POSetConflictGraph___extract_crown(val* self) {
644 val* var /* : HashSet[nullable Object] */;
645 val* var2 /* : HashSet[nullable Object] */;
646 val* var3 /* : POSet[nullable Object] */;
647 val* var5 /* : POSet[nullable Object] */;
648 val* var_ /* var : POSet[nullable Object] */;
649 val* var6 /* : Iterator[nullable Object] */;
650 val* var_7 /* var : Iterator[nullable Object] */;
651 short int var8 /* : Bool */;
652 val* var9 /* : nullable Object */;
653 val* var_e /* var e: nullable Object */;
654 short int var10 /* : Bool */;
655 val* var11 /* : HashSet[nullable Object] */;
656 val* var13 /* : HashSet[nullable Object] */;
657 short int var14 /* : Bool */;
658 short int var15 /* : Bool */;
659 short int var_16 /* var : Bool */;
660 val* var17 /* : HashSet[nullable Object] */;
661 val* var19 /* : HashSet[nullable Object] */;
662 short int var20 /* : Bool */;
663 short int var21 /* : Bool */;
664 val* var22 /* : HashSet[nullable Object] */;
665 val* var24 /* : HashSet[nullable Object] */;
666 {
667 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[nullable Object]> */
668 var2 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[nullable Object]> */
669 if (unlikely(var2 == NULL)) {
670 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
671 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 34);
672 fatal_exit(1);
673 }
674 var = var2;
675 RET_LABEL1:(void)0;
676 }
677 }
678 {
679 core___core__HashSet___core__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[nullable Object]>*/
680 }
681 {
682 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
683 var5 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
684 if (unlikely(var5 == NULL)) {
685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
686 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
687 fatal_exit(1);
688 }
689 var3 = var5;
690 RET_LABEL4:(void)0;
691 }
692 }
693 var_ = var3;
694 {
695 var6 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
696 }
697 var_7 = var6;
698 for(;;) {
699 {
700 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
701 }
702 if (var8){
703 } else {
704 goto BREAK_label;
705 }
706 {
707 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
708 }
709 var_e = var9;
710 {
711 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[nullable Object]> */
712 var13 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[nullable Object]> */
713 if (unlikely(var13 == NULL)) {
714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
715 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
716 fatal_exit(1);
717 }
718 var11 = var13;
719 RET_LABEL12:(void)0;
720 }
721 }
722 {
723 var14 = core___core__HashSet___core__abstract_collection__Collection__has(var11, var_e);
724 }
725 var15 = !var14;
726 var_16 = var15;
727 if (var15){
728 {
729 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[nullable Object]> */
730 var19 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
731 if (unlikely(var19 == NULL)) {
732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
733 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
734 fatal_exit(1);
735 }
736 var17 = var19;
737 RET_LABEL18:(void)0;
738 }
739 }
740 {
741 var20 = core___core__HashSet___core__abstract_collection__Collection__has(var17, var_e);
742 }
743 var21 = !var20;
744 var10 = var21;
745 } else {
746 var10 = var_16;
747 }
748 if (var10){
749 {
750 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[nullable Object]> */
751 var24 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[nullable Object]> */
752 if (unlikely(var24 == NULL)) {
753 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
754 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 34);
755 fatal_exit(1);
756 }
757 var22 = var24;
758 RET_LABEL23:(void)0;
759 }
760 }
761 {
762 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var22, var_e); /* Direct call hash_collection#HashSet#add on <var22:HashSet[nullable Object]>*/
763 }
764 } else {
765 }
766 {
767 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
768 }
769 }
770 BREAK_label: (void)0;
771 {
772 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
773 }
774 RET_LABEL:;
775 }
776 /* method coloring#POSetConflictGraph#compute_conflicts for (self: POSetConflictGraph[nullable Object]) */
777 void nitc___nitc__POSetConflictGraph___compute_conflicts(val* self) {
778 val* var /* : HashMap[nullable Object, Set[nullable Object]] */;
779 val* var2 /* : HashMap[nullable Object, Set[nullable Object]] */;
780 val* var3 /* : HashSet[nullable Object] */;
781 val* var5 /* : HashSet[nullable Object] */;
782 val* var_ /* var : HashSet[nullable Object] */;
783 val* var6 /* : Iterator[nullable Object] */;
784 val* var_7 /* var : Iterator[nullable Object] */;
785 short int var8 /* : Bool */;
786 val* var9 /* : nullable Object */;
787 val* var_e /* var e: nullable Object */;
788 val* var10 /* : POSet[nullable Object] */;
789 val* var12 /* : POSet[nullable Object] */;
790 val* var13 /* : POSetElement[nullable Object] */;
791 val* var14 /* : Collection[nullable Object] */;
792 {
793 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
794 var2 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
795 if (unlikely(var2 == NULL)) {
796 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
797 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
798 fatal_exit(1);
799 }
800 var = var2;
801 RET_LABEL1:(void)0;
802 }
803 }
804 {
805 core___core__HashMap___core__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[nullable Object, Set[nullable Object]]>*/
806 }
807 {
808 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[nullable Object]> */
809 var5 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[nullable Object]> */
810 if (unlikely(var5 == NULL)) {
811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
812 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
813 fatal_exit(1);
814 }
815 var3 = var5;
816 RET_LABEL4:(void)0;
817 }
818 }
819 var_ = var3;
820 {
821 var6 = core___core__HashSet___core__abstract_collection__Collection__iterator(var_);
822 }
823 var_7 = var6;
824 for(;;) {
825 {
826 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
827 }
828 if (var8){
829 } else {
830 goto BREAK_label;
831 }
832 {
833 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
834 }
835 var_e = var9;
836 {
837 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[nullable Object]> */
838 var12 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[nullable Object]> */
839 if (unlikely(var12 == NULL)) {
840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
841 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
842 fatal_exit(1);
843 }
844 var10 = var12;
845 RET_LABEL11:(void)0;
846 }
847 }
848 {
849 var13 = poset___poset__POSet____91d_93d(var10, var_e);
850 }
851 {
852 var14 = poset___poset__POSetElement___greaters(var13);
853 }
854 {
855 nitc___nitc__POSetConflictGraph___add_conflicts(self, var14); /* Direct call coloring#POSetConflictGraph#add_conflicts on <self:POSetConflictGraph[nullable Object]>*/
856 }
857 {
858 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
859 }
860 }
861 BREAK_label: (void)0;
862 {
863 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
864 }
865 RET_LABEL:;
866 }
867 /* method coloring#POSetConflictGraph#add_conflict for (self: POSetConflictGraph[nullable Object], nullable Object, nullable Object) */
868 void nitc___nitc__POSetConflictGraph___add_conflict(val* self, val* p0, val* p1) {
869 short int var /* : Bool */;
870 int cltype;
871 int idtype;
872 const struct type* type_struct;
873 short int is_nullable;
874 const char* var_class_name;
875 short int var1 /* : Bool */;
876 int cltype2;
877 int idtype3;
878 const struct type* type_struct4;
879 short int is_nullable5;
880 const char* var_class_name6;
881 val* var_e /* var e: nullable Object */;
882 val* var_o /* var o: nullable Object */;
883 val* var7 /* : HashMap[nullable Object, Set[nullable Object]] */;
884 val* var9 /* : HashMap[nullable Object, Set[nullable Object]] */;
885 short int var10 /* : Bool */;
886 short int var11 /* : Bool */;
887 val* var12 /* : HashMap[nullable Object, Set[nullable Object]] */;
888 val* var14 /* : HashMap[nullable Object, Set[nullable Object]] */;
889 val* var15 /* : HashSet[nullable Object] */;
890 val* var16 /* : HashMap[nullable Object, Set[nullable Object]] */;
891 val* var18 /* : HashMap[nullable Object, Set[nullable Object]] */;
892 short int var19 /* : Bool */;
893 short int var20 /* : Bool */;
894 val* var21 /* : HashMap[nullable Object, Set[nullable Object]] */;
895 val* var23 /* : HashMap[nullable Object, Set[nullable Object]] */;
896 val* var24 /* : HashSet[nullable Object] */;
897 val* var25 /* : HashMap[nullable Object, Set[nullable Object]] */;
898 val* var27 /* : HashMap[nullable Object, Set[nullable Object]] */;
899 val* var28 /* : nullable Object */;
900 val* var29 /* : HashMap[nullable Object, Set[nullable Object]] */;
901 val* var31 /* : HashMap[nullable Object, Set[nullable Object]] */;
902 val* var32 /* : nullable Object */;
903 /* Covariant cast for argument 0 (e) <p0:nullable Object> isa E */
904 /* <p0:nullable Object> isa E */
905 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph___35dE];
906 cltype = type_struct->color;
907 idtype = type_struct->id;
908 is_nullable = type_struct->is_nullable;
909 if(p0 == NULL) {
910 var = is_nullable;
911 } else {
912 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
913 var = 0;
914 } else {
915 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
916 }
917 }
918 if (unlikely(!var)) {
919 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
920 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
921 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 105);
922 fatal_exit(1);
923 }
924 /* Covariant cast for argument 1 (o) <p1:nullable Object> isa E */
925 /* <p1:nullable Object> isa E */
926 type_struct4 = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph___35dE];
927 cltype2 = type_struct4->color;
928 idtype3 = type_struct4->id;
929 is_nullable5 = type_struct4->is_nullable;
930 if(p1 == NULL) {
931 var1 = is_nullable5;
932 } else {
933 if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
934 var1 = 0;
935 } else {
936 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
937 }
938 }
939 if (unlikely(!var1)) {
940 var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
941 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name6);
942 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 105);
943 fatal_exit(1);
944 }
945 var_e = p0;
946 var_o = p1;
947 {
948 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
949 var9 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
950 if (unlikely(var9 == NULL)) {
951 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
952 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
953 fatal_exit(1);
954 }
955 var7 = var9;
956 RET_LABEL8:(void)0;
957 }
958 }
959 {
960 var10 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var7, var_e);
961 }
962 var11 = !var10;
963 if (var11){
964 {
965 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
966 var14 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
967 if (unlikely(var14 == NULL)) {
968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
969 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
970 fatal_exit(1);
971 }
972 var12 = var14;
973 RET_LABEL13:(void)0;
974 }
975 }
976 var15 = NEW_core__HashSet(self->type->resolution_table->types[COLOR_core__HashSet__nitc__POSetConflictGraph___35dE]);
977 {
978 core___core__HashSet___core__kernel__Object__init(var15); /* Direct call hash_collection#HashSet#init on <var15:HashSet[nullable Object]>*/
979 }
980 {
981 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var12, var_e, var15); /* Direct call hash_collection#HashMap#[]= on <var12:HashMap[nullable Object, Set[nullable Object]]>*/
982 }
983 } else {
984 }
985 {
986 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
987 var18 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
988 if (unlikely(var18 == NULL)) {
989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
990 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
991 fatal_exit(1);
992 }
993 var16 = var18;
994 RET_LABEL17:(void)0;
995 }
996 }
997 {
998 var19 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var16, var_o);
999 }
1000 var20 = !var19;
1001 if (var20){
1002 {
1003 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
1004 var23 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
1005 if (unlikely(var23 == NULL)) {
1006 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1007 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
1008 fatal_exit(1);
1009 }
1010 var21 = var23;
1011 RET_LABEL22:(void)0;
1012 }
1013 }
1014 var24 = NEW_core__HashSet(self->type->resolution_table->types[COLOR_core__HashSet__nitc__POSetConflictGraph___35dE]);
1015 {
1016 core___core__HashSet___core__kernel__Object__init(var24); /* Direct call hash_collection#HashSet#init on <var24:HashSet[nullable Object]>*/
1017 }
1018 {
1019 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var21, var_o, var24); /* Direct call hash_collection#HashMap#[]= on <var21:HashMap[nullable Object, Set[nullable Object]]>*/
1020 }
1021 } else {
1022 }
1023 {
1024 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
1025 var27 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
1026 if (unlikely(var27 == NULL)) {
1027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1028 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
1029 fatal_exit(1);
1030 }
1031 var25 = var27;
1032 RET_LABEL26:(void)0;
1033 }
1034 }
1035 {
1036 var28 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var25, var_e);
1037 }
1038 {
1039 ((void(*)(val* self, val* p0))((((long)var28&3)?class_info[((long)var28&3)]:var28->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var28, var_o); /* add on <var28:nullable Object(Set[nullable Object])>*/
1040 }
1041 {
1042 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[nullable Object]> */
1043 var31 = self->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[nullable Object]> */
1044 if (unlikely(var31 == NULL)) {
1045 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1046 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
1047 fatal_exit(1);
1048 }
1049 var29 = var31;
1050 RET_LABEL30:(void)0;
1051 }
1052 }
1053 {
1054 var32 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var29, var_o);
1055 }
1056 {
1057 ((void(*)(val* self, val* p0))((((long)var32&3)?class_info[((long)var32&3)]:var32->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var32, var_e); /* add on <var32:nullable Object(Set[nullable Object])>*/
1058 }
1059 RET_LABEL:;
1060 }
1061 /* method coloring#POSetConflictGraph#add_conflicts for (self: POSetConflictGraph[nullable Object], Collection[nullable Object]) */
1062 void nitc___nitc__POSetConflictGraph___add_conflicts(val* self, val* p0) {
1063 short int var /* : Bool */;
1064 int cltype;
1065 int idtype;
1066 const struct type* type_struct;
1067 const char* var_class_name;
1068 val* var_es /* var es: Collection[nullable Object] */;
1069 val* var_ /* var : Collection[nullable Object] */;
1070 val* var1 /* : Iterator[nullable Object] */;
1071 val* var_2 /* var : Iterator[nullable Object] */;
1072 short int var3 /* : Bool */;
1073 val* var4 /* : nullable Object */;
1074 val* var_e1 /* var e1: nullable Object */;
1075 val* var_5 /* var : Collection[nullable Object] */;
1076 val* var6 /* : Iterator[nullable Object] */;
1077 val* var_7 /* var : Iterator[nullable Object] */;
1078 short int var8 /* : Bool */;
1079 val* var10 /* : nullable Object */;
1080 val* var_e2 /* var e2: nullable Object */;
1081 /* Covariant cast for argument 0 (es) <p0:Collection[nullable Object]> isa Collection[E] */
1082 /* <p0:Collection[nullable Object]> isa Collection[E] */
1083 type_struct = self->type->resolution_table->types[COLOR_core__Collection__nitc__POSetConflictGraph___35dE];
1084 cltype = type_struct->color;
1085 idtype = type_struct->id;
1086 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1087 var = 0;
1088 } else {
1089 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1090 }
1091 if (unlikely(!var)) {
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`", "Collection[E]", var_class_name);
1094 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 112);
1095 fatal_exit(1);
1096 }
1097 var_es = p0;
1098 var_ = var_es;
1099 {
1100 var1 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[nullable Object]>*/
1101 }
1102 var_2 = var1;
1103 for(;;) {
1104 {
1105 var3 = ((short int(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_2); /* is_ok on <var_2:Iterator[nullable Object]>*/
1106 }
1107 if (var3){
1108 } else {
1109 goto BREAK_label;
1110 }
1111 {
1112 var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_2); /* item on <var_2:Iterator[nullable Object]>*/
1113 }
1114 var_e1 = var4;
1115 var_5 = var_es;
1116 {
1117 var6 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_5); /* iterator on <var_5:Collection[nullable Object]>*/
1118 }
1119 var_7 = var6;
1120 for(;;) {
1121 {
1122 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[nullable Object]>*/
1123 }
1124 if (var8){
1125 } else {
1126 goto BREAK_label9;
1127 }
1128 {
1129 var10 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[nullable Object]>*/
1130 }
1131 var_e2 = var10;
1132 {
1133 nitc___nitc__POSetConflictGraph___add_conflict(self, var_e1, var_e2); /* Direct call coloring#POSetConflictGraph#add_conflict on <self:POSetConflictGraph[nullable Object]>*/
1134 }
1135 {
1136 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[nullable Object]>*/
1137 }
1138 }
1139 BREAK_label9: (void)0;
1140 {
1141 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[nullable Object]>*/
1142 }
1143 {
1144 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_2); /* next on <var_2:Iterator[nullable Object]>*/
1145 }
1146 }
1147 BREAK_label: (void)0;
1148 {
1149 ((void(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_2); /* finish on <var_2:Iterator[nullable Object]>*/
1150 }
1151 RET_LABEL:;
1152 }
1153 /* method coloring#POSet#to_conflict_graph for (self: POSet[nullable Object]): POSetConflictGraph[nullable Object] */
1154 val* nitc__coloring___poset__POSet___to_conflict_graph(val* self) {
1155 val* var /* : POSetConflictGraph[nullable Object] */;
1156 val* var1 /* : POSetConflictGraph[nullable Object] */;
1157 var1 = NEW_nitc__POSetConflictGraph(self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph__poset__POSet___35dE]);
1158 {
1159 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nitc__coloring__POSetConflictGraph__poset_61d]))(var1, self); /* poset= on <var1:POSetConflictGraph[nullable Object]>*/
1160 }
1161 {
1162 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:POSetConflictGraph[nullable Object]>*/
1163 }
1164 var = var1;
1165 goto RET_LABEL;
1166 RET_LABEL:;
1167 return var;
1168 }
1169 /* method coloring#POSetColorer#is_colored for (self: POSetColorer[Object]): Bool */
1170 short int nitc___nitc__POSetColorer___is_colored(val* self) {
1171 short int var /* : Bool */;
1172 short int var1 /* : Bool */;
1173 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1174 var = var1;
1175 RET_LABEL:;
1176 return var;
1177 }
1178 /* method coloring#POSetColorer#is_colored= for (self: POSetColorer[Object], Bool) */
1179 void nitc___nitc__POSetColorer___is_colored_61d(val* self, short int p0) {
1180 self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s = p0; /* _is_colored on <self:POSetColorer[Object]> */
1181 RET_LABEL:;
1182 }
1183 /* method coloring#POSetColorer#ids for (self: POSetColorer[Object]): Map[Object, Int] */
1184 val* nitc___nitc__POSetColorer___ids(val* self) {
1185 val* var /* : Map[Object, Int] */;
1186 short int var1 /* : Bool */;
1187 short int var3 /* : Bool */;
1188 val* var4 /* : HashMap[Object, Int] */;
1189 val* var6 /* : HashMap[Object, Int] */;
1190 {
1191 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1192 var3 = self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1193 var1 = var3;
1194 RET_LABEL2:(void)0;
1195 }
1196 }
1197 if (unlikely(!var1)) {
1198 PRINT_ERROR("Runtime error: %s", "Assert failed");
1199 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 176);
1200 fatal_exit(1);
1201 }
1202 {
1203 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1204 var6 = self->attrs[COLOR_nitc__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1205 if (unlikely(var6 == NULL)) {
1206 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1207 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 179);
1208 fatal_exit(1);
1209 }
1210 var4 = var6;
1211 RET_LABEL5:(void)0;
1212 }
1213 }
1214 var = var4;
1215 goto RET_LABEL;
1216 RET_LABEL:;
1217 return var;
1218 }
1219 /* method coloring#POSetColorer#ids_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1220 val* nitc___nitc__POSetColorer___ids_cache(val* self) {
1221 val* var /* : HashMap[Object, Int] */;
1222 val* var1 /* : HashMap[Object, Int] */;
1223 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1224 if (unlikely(var1 == NULL)) {
1225 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1226 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 179);
1227 fatal_exit(1);
1228 }
1229 var = var1;
1230 RET_LABEL:;
1231 return var;
1232 }
1233 /* method coloring#POSetColorer#colors for (self: POSetColorer[Object]): Map[Object, Int] */
1234 val* nitc___nitc__POSetColorer___colors(val* self) {
1235 val* var /* : Map[Object, Int] */;
1236 short int var1 /* : Bool */;
1237 short int var3 /* : Bool */;
1238 val* var4 /* : HashMap[Object, Int] */;
1239 val* var6 /* : HashMap[Object, Int] */;
1240 {
1241 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1242 var3 = self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1243 var1 = var3;
1244 RET_LABEL2:(void)0;
1245 }
1246 }
1247 if (unlikely(!var1)) {
1248 PRINT_ERROR("Runtime error: %s", "Assert failed");
1249 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 184);
1250 fatal_exit(1);
1251 }
1252 {
1253 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1254 var6 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1255 if (unlikely(var6 == NULL)) {
1256 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1257 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
1258 fatal_exit(1);
1259 }
1260 var4 = var6;
1261 RET_LABEL5:(void)0;
1262 }
1263 }
1264 var = var4;
1265 goto RET_LABEL;
1266 RET_LABEL:;
1267 return var;
1268 }
1269 /* method coloring#POSetColorer#colors_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1270 val* nitc___nitc__POSetColorer___colors_cache(val* self) {
1271 val* var /* : HashMap[Object, Int] */;
1272 val* var1 /* : HashMap[Object, Int] */;
1273 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1274 if (unlikely(var1 == NULL)) {
1275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1276 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
1277 fatal_exit(1);
1278 }
1279 var = var1;
1280 RET_LABEL:;
1281 return var;
1282 }
1283 /* method coloring#POSetColorer#poset_cache for (self: POSetColorer[Object]): POSet[Object] */
1284 val* nitc___nitc__POSetColorer___poset_cache(val* self) {
1285 val* var /* : POSet[Object] */;
1286 val* var1 /* : POSet[Object] */;
1287 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1288 if (unlikely(var1 == NULL)) {
1289 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1290 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1291 fatal_exit(1);
1292 }
1293 var = var1;
1294 RET_LABEL:;
1295 return var;
1296 }
1297 /* method coloring#POSetColorer#poset_cache= for (self: POSetColorer[Object], POSet[Object]) */
1298 void nitc___nitc__POSetColorer___poset_cache_61d(val* self, val* p0) {
1299 short int var /* : Bool */;
1300 int cltype;
1301 int idtype;
1302 const struct type* type_struct;
1303 const char* var_class_name;
1304 /* Covariant cast for argument 0 (poset_cache) <p0:POSet[Object]> isa POSet[E] */
1305 /* <p0:POSet[Object]> isa POSet[E] */
1306 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nitc__POSetColorer___35dE];
1307 cltype = type_struct->color;
1308 idtype = type_struct->id;
1309 if(cltype >= p0->type->table_size) {
1310 var = 0;
1311 } else {
1312 var = p0->type->type_table[cltype] == idtype;
1313 }
1314 if (unlikely(!var)) {
1315 var_class_name = p0 == NULL ? "null" : p0->type->name;
1316 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1317 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1318 fatal_exit(1);
1319 }
1320 self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val = p0; /* _poset_cache on <self:POSetColorer[Object]> */
1321 RET_LABEL:;
1322 }
1323 /* method coloring#POSetColorer#conflicts for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1324 val* nitc___nitc__POSetColorer___conflicts(val* self) {
1325 val* var /* : Map[Object, Set[Object]] */;
1326 short int var1 /* : Bool */;
1327 short int var3 /* : Bool */;
1328 val* var4 /* : Map[Object, Set[Object]] */;
1329 val* var6 /* : Map[Object, Set[Object]] */;
1330 {
1331 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1332 var3 = self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1333 var1 = var3;
1334 RET_LABEL2:(void)0;
1335 }
1336 }
1337 if (unlikely(!var1)) {
1338 PRINT_ERROR("Runtime error: %s", "Assert failed");
1339 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 198);
1340 fatal_exit(1);
1341 }
1342 {
1343 { /* Inline coloring#POSetColorer#conflicts_cache (self) on <self:POSetColorer[Object]> */
1344 var6 = self->attrs[COLOR_nitc__coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1345 if (unlikely(var6 == NULL)) {
1346 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1347 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 201);
1348 fatal_exit(1);
1349 }
1350 var4 = var6;
1351 RET_LABEL5:(void)0;
1352 }
1353 }
1354 var = var4;
1355 goto RET_LABEL;
1356 RET_LABEL:;
1357 return var;
1358 }
1359 /* method coloring#POSetColorer#conflicts_cache for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1360 val* nitc___nitc__POSetColorer___conflicts_cache(val* self) {
1361 val* var /* : Map[Object, Set[Object]] */;
1362 val* var1 /* : Map[Object, Set[Object]] */;
1363 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1364 if (unlikely(var1 == NULL)) {
1365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1366 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 201);
1367 fatal_exit(1);
1368 }
1369 var = var1;
1370 RET_LABEL:;
1371 return var;
1372 }
1373 /* method coloring#POSetColorer#conflicts_cache= for (self: POSetColorer[Object], Map[Object, Set[Object]]) */
1374 void nitc___nitc__POSetColorer___conflicts_cache_61d(val* self, val* p0) {
1375 short int var /* : Bool */;
1376 int cltype;
1377 int idtype;
1378 const struct type* type_struct;
1379 const char* var_class_name;
1380 /* Covariant cast for argument 0 (conflicts_cache) <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1381 /* <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1382 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetColorer___35dE__core__Set__nitc__POSetColorer___35dE];
1383 cltype = type_struct->color;
1384 idtype = type_struct->id;
1385 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1386 var = 0;
1387 } else {
1388 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1389 }
1390 if (unlikely(!var)) {
1391 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1392 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name);
1393 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 201);
1394 fatal_exit(1);
1395 }
1396 self->attrs[COLOR_nitc__coloring__POSetColorer___conflicts_cache].val = p0; /* _conflicts_cache on <self:POSetColorer[Object]> */
1397 RET_LABEL:;
1398 }
1399 /* method coloring#POSetColorer#graph for (self: POSetColorer[Object]): POSetConflictGraph[Object] */
1400 val* nitc___nitc__POSetColorer___graph(val* self) {
1401 val* var /* : POSetConflictGraph[Object] */;
1402 val* var1 /* : POSetConflictGraph[Object] */;
1403 var1 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1404 if (unlikely(var1 == NULL)) {
1405 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1406 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1407 fatal_exit(1);
1408 }
1409 var = var1;
1410 RET_LABEL:;
1411 return var;
1412 }
1413 /* method coloring#POSetColorer#graph= for (self: POSetColorer[Object], POSetConflictGraph[Object]) */
1414 void nitc___nitc__POSetColorer___graph_61d(val* self, val* p0) {
1415 short int var /* : Bool */;
1416 int cltype;
1417 int idtype;
1418 const struct type* type_struct;
1419 const char* var_class_name;
1420 /* Covariant cast for argument 0 (graph) <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1421 /* <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1422 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph__nitc__POSetColorer___35dE];
1423 cltype = type_struct->color;
1424 idtype = type_struct->id;
1425 if(cltype >= p0->type->table_size) {
1426 var = 0;
1427 } else {
1428 var = p0->type->type_table[cltype] == idtype;
1429 }
1430 if (unlikely(!var)) {
1431 var_class_name = p0 == NULL ? "null" : p0->type->name;
1432 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name);
1433 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1434 fatal_exit(1);
1435 }
1436 self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val = p0; /* _graph on <self:POSetColorer[Object]> */
1437 RET_LABEL:;
1438 }
1439 /* method coloring#POSetColorer#colorize for (self: POSetColorer[Object], POSet[Object]) */
1440 void nitc___nitc__POSetColorer___colorize(val* self, val* p0) {
1441 short int var /* : Bool */;
1442 int cltype;
1443 int idtype;
1444 const struct type* type_struct;
1445 const char* var_class_name;
1446 val* var_poset /* var poset: POSet[Object] */;
1447 short int var2 /* : Bool */;
1448 int cltype3;
1449 int idtype4;
1450 const struct type* type_struct5;
1451 const char* var_class_name6;
1452 val* var7 /* : POSetConflictGraph[Object] */;
1453 short int var9 /* : Bool */;
1454 int cltype10;
1455 int idtype11;
1456 const struct type* type_struct12;
1457 const char* var_class_name13;
1458 val* var14 /* : POSetConflictGraph[Object] */;
1459 val* var16 /* : POSetConflictGraph[Object] */;
1460 val* var17 /* : HashMap[nullable Object, Set[nullable Object]] */;
1461 val* var19 /* : HashMap[nullable Object, Set[nullable Object]] */;
1462 short int var21 /* : Bool */;
1463 int cltype22;
1464 int idtype23;
1465 const struct type* type_struct24;
1466 const char* var_class_name25;
1467 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
1468 /* <p0:POSet[Object]> isa POSet[E] */
1469 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nitc__POSetColorer___35dE];
1470 cltype = type_struct->color;
1471 idtype = type_struct->id;
1472 if(cltype >= p0->type->table_size) {
1473 var = 0;
1474 } else {
1475 var = p0->type->type_table[cltype] == idtype;
1476 }
1477 if (unlikely(!var)) {
1478 var_class_name = p0 == NULL ? "null" : p0->type->name;
1479 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1480 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 205);
1481 fatal_exit(1);
1482 }
1483 var_poset = p0;
1484 {
1485 { /* Inline coloring#POSetColorer#poset_cache= (self,var_poset) on <self:POSetColorer[Object]> */
1486 /* Covariant cast for argument 0 (poset_cache) <var_poset:POSet[Object]> isa POSet[E] */
1487 /* <var_poset:POSet[Object]> isa POSet[E] */
1488 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet__nitc__POSetColorer___35dE];
1489 cltype3 = type_struct5->color;
1490 idtype4 = type_struct5->id;
1491 if(cltype3 >= var_poset->type->table_size) {
1492 var2 = 0;
1493 } else {
1494 var2 = var_poset->type->type_table[cltype3] == idtype4;
1495 }
1496 if (unlikely(!var2)) {
1497 var_class_name6 = var_poset == NULL ? "null" : var_poset->type->name;
1498 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name6);
1499 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1500 fatal_exit(1);
1501 }
1502 self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val = var_poset; /* _poset_cache on <self:POSetColorer[Object]> */
1503 RET_LABEL1:(void)0;
1504 }
1505 }
1506 var7 = NEW_nitc__POSetConflictGraph(self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph__nitc__POSetColorer___35dE]);
1507 {
1508 ((void(*)(val* self, val* p0))(var7->class->vft[COLOR_nitc__coloring__POSetConflictGraph__poset_61d]))(var7, var_poset); /* poset= on <var7:POSetConflictGraph[Object]>*/
1509 }
1510 {
1511 ((void(*)(val* self))(var7->class->vft[COLOR_core__kernel__Object__init]))(var7); /* init on <var7:POSetConflictGraph[Object]>*/
1512 }
1513 {
1514 { /* Inline coloring#POSetColorer#graph= (self,var7) on <self:POSetColorer[Object]> */
1515 /* Covariant cast for argument 0 (graph) <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1516 /* <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1517 type_struct12 = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph__nitc__POSetColorer___35dE];
1518 cltype10 = type_struct12->color;
1519 idtype11 = type_struct12->id;
1520 if(cltype10 >= var7->type->table_size) {
1521 var9 = 0;
1522 } else {
1523 var9 = var7->type->type_table[cltype10] == idtype11;
1524 }
1525 if (unlikely(!var9)) {
1526 var_class_name13 = var7 == NULL ? "null" : var7->type->name;
1527 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name13);
1528 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1529 fatal_exit(1);
1530 }
1531 self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val = var7; /* _graph on <self:POSetColorer[Object]> */
1532 RET_LABEL8:(void)0;
1533 }
1534 }
1535 {
1536 nitc___nitc__POSetColorer___allocate_ids(self); /* Direct call coloring#POSetColorer#allocate_ids on <self:POSetColorer[Object]>*/
1537 }
1538 {
1539 nitc___nitc__POSetColorer___compute_colors(self); /* Direct call coloring#POSetColorer#compute_colors on <self:POSetColorer[Object]>*/
1540 }
1541 {
1542 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1543 var16 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1544 if (unlikely(var16 == NULL)) {
1545 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1546 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1547 fatal_exit(1);
1548 }
1549 var14 = var16;
1550 RET_LABEL15:(void)0;
1551 }
1552 }
1553 {
1554 { /* Inline coloring#POSetConflictGraph#conflicts (var14) on <var14:POSetConflictGraph[Object]> */
1555 var19 = var14->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var14:POSetConflictGraph[Object]> */
1556 if (unlikely(var19 == NULL)) {
1557 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1558 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
1559 fatal_exit(1);
1560 }
1561 var17 = var19;
1562 RET_LABEL18:(void)0;
1563 }
1564 }
1565 {
1566 { /* Inline coloring#POSetColorer#conflicts_cache= (self,var17) on <self:POSetColorer[Object]> */
1567 /* Covariant cast for argument 0 (conflicts_cache) <var17:HashMap[nullable Object, Set[nullable Object]](HashMap[Object, Set[Object]])> isa Map[E, Set[E]] */
1568 /* <var17:HashMap[nullable Object, Set[nullable Object]](HashMap[Object, Set[Object]])> isa Map[E, Set[E]] */
1569 type_struct24 = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetColorer___35dE__core__Set__nitc__POSetColorer___35dE];
1570 cltype22 = type_struct24->color;
1571 idtype23 = type_struct24->id;
1572 if(cltype22 >= var17->type->table_size) {
1573 var21 = 0;
1574 } else {
1575 var21 = var17->type->type_table[cltype22] == idtype23;
1576 }
1577 if (unlikely(!var21)) {
1578 var_class_name25 = var17 == NULL ? "null" : var17->type->name;
1579 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name25);
1580 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 201);
1581 fatal_exit(1);
1582 }
1583 self->attrs[COLOR_nitc__coloring__POSetColorer___conflicts_cache].val = var17; /* _conflicts_cache on <self:POSetColorer[Object]> */
1584 RET_LABEL20:(void)0;
1585 }
1586 }
1587 {
1588 { /* Inline coloring#POSetColorer#is_colored= (self,1) on <self:POSetColorer[Object]> */
1589 self->attrs[COLOR_nitc__coloring__POSetColorer___is_colored].s = 1; /* _is_colored on <self:POSetColorer[Object]> */
1590 RET_LABEL26:(void)0;
1591 }
1592 }
1593 RET_LABEL:;
1594 }
1595 /* method coloring#POSetColorer#allocate_ids for (self: POSetColorer[Object]) */
1596 void nitc___nitc__POSetColorer___allocate_ids(val* self) {
1597 val* var /* : HashMap[Object, Int] */;
1598 val* var2 /* : HashMap[Object, Int] */;
1599 val* var3 /* : HashSet[Object] */;
1600 val* var4 /* : POSet[Object] */;
1601 val* var6 /* : POSet[Object] */;
1602 val* var7 /* : Array[nullable Object] */;
1603 val* var_elements /* var elements: HashSet[Object] */;
1604 val* var8 /* : POSet[Object] */;
1605 val* var10 /* : POSet[Object] */;
1606 val* var11 /* : Array[nullable Object] */;
1607 val* var_ /* var : Array[Object] */;
1608 val* var12 /* : IndexedIterator[nullable Object] */;
1609 val* var_13 /* var : IndexedIterator[Object] */;
1610 short int var14 /* : Bool */;
1611 val* var15 /* : nullable Object */;
1612 val* var_e /* var e: Object */;
1613 val* var16 /* : HashMap[Object, Int] */;
1614 val* var18 /* : HashMap[Object, Int] */;
1615 val* var19 /* : HashMap[Object, Int] */;
1616 val* var21 /* : HashMap[Object, Int] */;
1617 long var22 /* : Int */;
1618 val* var23 /* : nullable Object */;
1619 {
1620 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1621 var2 = self->attrs[COLOR_nitc__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1622 if (unlikely(var2 == NULL)) {
1623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1624 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 179);
1625 fatal_exit(1);
1626 }
1627 var = var2;
1628 RET_LABEL1:(void)0;
1629 }
1630 }
1631 {
1632 core___core__HashMap___core__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
1633 }
1634 var3 = NEW_core__HashSet(self->type->resolution_table->types[COLOR_core__HashSet__nitc__POSetColorer___35dE]);
1635 {
1636 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1637 var6 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1638 if (unlikely(var6 == NULL)) {
1639 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1640 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1641 fatal_exit(1);
1642 }
1643 var4 = var6;
1644 RET_LABEL5:(void)0;
1645 }
1646 }
1647 {
1648 var7 = core__array___Collection___to_a(var4);
1649 }
1650 {
1651 core___core__HashSet___from(var3, var7); /* Direct call hash_collection#HashSet#from on <var3:HashSet[Object]>*/
1652 }
1653 var_elements = var3;
1654 {
1655 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1656 var10 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1657 if (unlikely(var10 == NULL)) {
1658 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1659 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1660 fatal_exit(1);
1661 }
1662 var8 = var10;
1663 RET_LABEL9:(void)0;
1664 }
1665 }
1666 {
1667 var11 = poset___poset__POSet___linearize(var8, var_elements);
1668 }
1669 var_ = var11;
1670 {
1671 var12 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1672 }
1673 var_13 = var12;
1674 for(;;) {
1675 {
1676 var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:IndexedIterator[Object]>*/
1677 }
1678 if (var14){
1679 } else {
1680 goto BREAK_label;
1681 }
1682 {
1683 var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:IndexedIterator[Object]>*/
1684 }
1685 var_e = var15;
1686 {
1687 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1688 var18 = self->attrs[COLOR_nitc__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1689 if (unlikely(var18 == NULL)) {
1690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1691 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 179);
1692 fatal_exit(1);
1693 }
1694 var16 = var18;
1695 RET_LABEL17:(void)0;
1696 }
1697 }
1698 {
1699 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1700 var21 = self->attrs[COLOR_nitc__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1701 if (unlikely(var21 == NULL)) {
1702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1703 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 179);
1704 fatal_exit(1);
1705 }
1706 var19 = var21;
1707 RET_LABEL20:(void)0;
1708 }
1709 }
1710 {
1711 var22 = core___core__HashMap___core__abstract_collection__MapRead__length(var19);
1712 }
1713 {
1714 var23 = (val*)(var22<<2|1);
1715 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var16, var_e, var23); /* Direct call hash_collection#HashMap#[]= on <var16:HashMap[Object, Int]>*/
1716 }
1717 {
1718 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:IndexedIterator[Object]>*/
1719 }
1720 }
1721 BREAK_label: (void)0;
1722 {
1723 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:IndexedIterator[Object]>*/
1724 }
1725 RET_LABEL:;
1726 }
1727 /* method coloring#POSetColorer#compute_colors for (self: POSetColorer[Object]) */
1728 void nitc___nitc__POSetColorer___compute_colors(val* self) {
1729 val* var /* : HashMap[Object, Int] */;
1730 val* var2 /* : HashMap[Object, Int] */;
1731 val* var3 /* : POSetConflictGraph[Object] */;
1732 val* var5 /* : POSetConflictGraph[Object] */;
1733 val* var6 /* : HashSet[nullable Object] */;
1734 val* var8 /* : HashSet[nullable Object] */;
1735 val* var9 /* : POSetConflictGraph[Object] */;
1736 val* var11 /* : POSetConflictGraph[Object] */;
1737 val* var12 /* : HashSet[nullable Object] */;
1738 val* var14 /* : HashSet[nullable Object] */;
1739 {
1740 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1741 var2 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1742 if (unlikely(var2 == NULL)) {
1743 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1744 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
1745 fatal_exit(1);
1746 }
1747 var = var2;
1748 RET_LABEL1:(void)0;
1749 }
1750 }
1751 {
1752 core___core__HashMap___core__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
1753 }
1754 {
1755 nitc___nitc__POSetColorer___colorize_core(self); /* Direct call coloring#POSetColorer#colorize_core on <self:POSetColorer[Object]>*/
1756 }
1757 {
1758 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1759 var5 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1760 if (unlikely(var5 == NULL)) {
1761 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1762 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1763 fatal_exit(1);
1764 }
1765 var3 = var5;
1766 RET_LABEL4:(void)0;
1767 }
1768 }
1769 {
1770 { /* Inline coloring#POSetConflictGraph#border (var3) on <var3:POSetConflictGraph[Object]> */
1771 var8 = var3->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <var3:POSetConflictGraph[Object]> */
1772 if (unlikely(var8 == NULL)) {
1773 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
1774 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
1775 fatal_exit(1);
1776 }
1777 var6 = var8;
1778 RET_LABEL7:(void)0;
1779 }
1780 }
1781 {
1782 nitc___nitc__POSetColorer___colorize_set(self, var6); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
1783 }
1784 {
1785 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1786 var11 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1787 if (unlikely(var11 == NULL)) {
1788 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1789 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1790 fatal_exit(1);
1791 }
1792 var9 = var11;
1793 RET_LABEL10:(void)0;
1794 }
1795 }
1796 {
1797 { /* Inline coloring#POSetConflictGraph#crown (var9) on <var9:POSetConflictGraph[Object]> */
1798 var14 = var9->attrs[COLOR_nitc__coloring__POSetConflictGraph___crown].val; /* _crown on <var9:POSetConflictGraph[Object]> */
1799 if (unlikely(var14 == NULL)) {
1800 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
1801 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 34);
1802 fatal_exit(1);
1803 }
1804 var12 = var14;
1805 RET_LABEL13:(void)0;
1806 }
1807 }
1808 {
1809 nitc___nitc__POSetColorer___colorize_set(self, var12); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
1810 }
1811 RET_LABEL:;
1812 }
1813 /* method coloring#POSetColorer#colorize_core for (self: POSetColorer[Object]) */
1814 void nitc___nitc__POSetColorer___colorize_core(val* self) {
1815 val* var /* : POSet[Object] */;
1816 val* var2 /* : POSet[Object] */;
1817 val* var3 /* : POSetConflictGraph[Object] */;
1818 val* var5 /* : POSetConflictGraph[Object] */;
1819 val* var6 /* : HashSet[nullable Object] */;
1820 val* var8 /* : HashSet[nullable Object] */;
1821 val* var9 /* : Array[nullable Object] */;
1822 val* var_ /* var : Array[Object] */;
1823 val* var10 /* : IndexedIterator[nullable Object] */;
1824 val* var_11 /* var : IndexedIterator[Object] */;
1825 short int var12 /* : Bool */;
1826 val* var13 /* : nullable Object */;
1827 val* var_e /* var e: Object */;
1828 long var14 /* : Int */;
1829 long var_color /* var color: Int */;
1830 val* var15 /* : POSetConflictGraph[Object] */;
1831 val* var17 /* : POSetConflictGraph[Object] */;
1832 val* var18 /* : HashMap[nullable Object, Set[nullable Object]] */;
1833 val* var20 /* : HashMap[nullable Object, Set[nullable Object]] */;
1834 val* var21 /* : nullable Object */;
1835 val* var_conflicts /* var conflicts: Set[Object] */;
1836 short int var22 /* : Bool */;
1837 short int var23 /* : Bool */;
1838 long var24 /* : Int */;
1839 short int var26 /* : Bool */;
1840 int cltype;
1841 int idtype;
1842 const char* var_class_name;
1843 long var27 /* : Int */;
1844 val* var29 /* : HashMap[Object, Int] */;
1845 val* var31 /* : HashMap[Object, Int] */;
1846 val* var32 /* : nullable Object */;
1847 {
1848 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1849 var2 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1850 if (unlikely(var2 == NULL)) {
1851 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1852 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
1853 fatal_exit(1);
1854 }
1855 var = var2;
1856 RET_LABEL1:(void)0;
1857 }
1858 }
1859 {
1860 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1861 var5 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1862 if (unlikely(var5 == NULL)) {
1863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1864 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1865 fatal_exit(1);
1866 }
1867 var3 = var5;
1868 RET_LABEL4:(void)0;
1869 }
1870 }
1871 {
1872 { /* Inline coloring#POSetConflictGraph#core (var3) on <var3:POSetConflictGraph[Object]> */
1873 var8 = var3->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <var3:POSetConflictGraph[Object]> */
1874 if (unlikely(var8 == NULL)) {
1875 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
1876 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
1877 fatal_exit(1);
1878 }
1879 var6 = var8;
1880 RET_LABEL7:(void)0;
1881 }
1882 }
1883 {
1884 var9 = poset___poset__POSet___linearize(var, var6);
1885 }
1886 var_ = var9;
1887 {
1888 var10 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1889 }
1890 var_11 = var10;
1891 for(;;) {
1892 {
1893 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:IndexedIterator[Object]>*/
1894 }
1895 if (var12){
1896 } else {
1897 goto BREAK_label;
1898 }
1899 {
1900 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:IndexedIterator[Object]>*/
1901 }
1902 var_e = var13;
1903 {
1904 var14 = nitc___nitc__POSetColorer___min_color(self, var_e);
1905 }
1906 var_color = var14;
1907 {
1908 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1909 var17 = self->attrs[COLOR_nitc__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1910 if (unlikely(var17 == NULL)) {
1911 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1912 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 203);
1913 fatal_exit(1);
1914 }
1915 var15 = var17;
1916 RET_LABEL16:(void)0;
1917 }
1918 }
1919 {
1920 { /* Inline coloring#POSetConflictGraph#conflicts (var15) on <var15:POSetConflictGraph[Object]> */
1921 var20 = var15->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var15:POSetConflictGraph[Object]> */
1922 if (unlikely(var20 == NULL)) {
1923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1924 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
1925 fatal_exit(1);
1926 }
1927 var18 = var20;
1928 RET_LABEL19:(void)0;
1929 }
1930 }
1931 {
1932 var21 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var18, var_e);
1933 }
1934 var_conflicts = var21;
1935 for(;;) {
1936 {
1937 var22 = nitc___nitc__POSetColorer___is_color_free(self, var_color, var_conflicts);
1938 }
1939 var23 = !var22;
1940 if (var23){
1941 {
1942 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
1943 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1944 /* <1l:Int> isa OTHER */
1945 var26 = 1; /* easy <1l:Int> isa OTHER*/
1946 if (unlikely(!var26)) {
1947 var_class_name = type_core__Int.name;
1948 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1949 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
1950 fatal_exit(1);
1951 }
1952 var27 = var_color + 1l;
1953 var24 = var27;
1954 goto RET_LABEL25;
1955 RET_LABEL25:(void)0;
1956 }
1957 }
1958 var_color = var24;
1959 } else {
1960 goto BREAK_label28;
1961 }
1962 }
1963 BREAK_label28: (void)0;
1964 {
1965 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1966 var31 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1967 if (unlikely(var31 == NULL)) {
1968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1969 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
1970 fatal_exit(1);
1971 }
1972 var29 = var31;
1973 RET_LABEL30:(void)0;
1974 }
1975 }
1976 {
1977 var32 = (val*)(var_color<<2|1);
1978 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var29, var_e, var32); /* Direct call hash_collection#HashMap#[]= on <var29:HashMap[Object, Int]>*/
1979 }
1980 {
1981 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:IndexedIterator[Object]>*/
1982 }
1983 }
1984 BREAK_label: (void)0;
1985 {
1986 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:IndexedIterator[Object]>*/
1987 }
1988 RET_LABEL:;
1989 }
1990 /* method coloring#POSetColorer#colorize_set for (self: POSetColorer[Object], Set[Object]) */
1991 void nitc___nitc__POSetColorer___colorize_set(val* self, val* p0) {
1992 short int var /* : Bool */;
1993 int cltype;
1994 int idtype;
1995 const struct type* type_struct;
1996 const char* var_class_name;
1997 val* var_set /* var set: Set[Object] */;
1998 val* var1 /* : POSet[Object] */;
1999 val* var3 /* : POSet[Object] */;
2000 val* var4 /* : Array[nullable Object] */;
2001 val* var_ /* var : Array[Object] */;
2002 val* var5 /* : IndexedIterator[nullable Object] */;
2003 val* var_6 /* var : IndexedIterator[Object] */;
2004 short int var7 /* : Bool */;
2005 val* var8 /* : nullable Object */;
2006 val* var_e /* var e: Object */;
2007 val* var9 /* : HashMap[Object, Int] */;
2008 val* var11 /* : HashMap[Object, Int] */;
2009 long var12 /* : Int */;
2010 val* var13 /* : nullable Object */;
2011 /* Covariant cast for argument 0 (set) <p0:Set[Object]> isa Set[E] */
2012 /* <p0:Set[Object]> isa Set[E] */
2013 type_struct = self->type->resolution_table->types[COLOR_core__Set__nitc__POSetColorer___35dE];
2014 cltype = type_struct->color;
2015 idtype = type_struct->id;
2016 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2017 var = 0;
2018 } else {
2019 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2020 }
2021 if (unlikely(!var)) {
2022 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2023 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[E]", var_class_name);
2024 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 245);
2025 fatal_exit(1);
2026 }
2027 var_set = p0;
2028 {
2029 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2030 var3 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2031 if (unlikely(var3 == NULL)) {
2032 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2033 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
2034 fatal_exit(1);
2035 }
2036 var1 = var3;
2037 RET_LABEL2:(void)0;
2038 }
2039 }
2040 {
2041 var4 = poset___poset__POSet___linearize(var1, var_set);
2042 }
2043 var_ = var4;
2044 {
2045 var5 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
2046 }
2047 var_6 = var5;
2048 for(;;) {
2049 {
2050 var7 = ((short int(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_6); /* is_ok on <var_6:IndexedIterator[Object]>*/
2051 }
2052 if (var7){
2053 } else {
2054 goto BREAK_label;
2055 }
2056 {
2057 var8 = ((val*(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_6); /* item on <var_6:IndexedIterator[Object]>*/
2058 }
2059 var_e = var8;
2060 {
2061 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2062 var11 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2063 if (unlikely(var11 == NULL)) {
2064 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2065 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
2066 fatal_exit(1);
2067 }
2068 var9 = var11;
2069 RET_LABEL10:(void)0;
2070 }
2071 }
2072 {
2073 var12 = nitc___nitc__POSetColorer___min_color(self, var_e);
2074 }
2075 {
2076 var13 = (val*)(var12<<2|1);
2077 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var9, var_e, var13); /* Direct call hash_collection#HashMap#[]= on <var9:HashMap[Object, Int]>*/
2078 }
2079 {
2080 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_6); /* next on <var_6:IndexedIterator[Object]>*/
2081 }
2082 }
2083 BREAK_label: (void)0;
2084 {
2085 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_6); /* finish on <var_6:IndexedIterator[Object]>*/
2086 }
2087 RET_LABEL:;
2088 }
2089 /* method coloring#POSetColorer#min_color for (self: POSetColorer[Object], Object): Int */
2090 long nitc___nitc__POSetColorer___min_color(val* self, val* p0) {
2091 long var /* : Int */;
2092 short int var1 /* : Bool */;
2093 int cltype;
2094 int idtype;
2095 const struct type* type_struct;
2096 const char* var_class_name;
2097 val* var_e /* var e: Object */;
2098 long var2 /* : Int */;
2099 long var4 /* : Int */;
2100 long var_max_color /* var max_color: Int */;
2101 val* var5 /* : POSet[Object] */;
2102 val* var7 /* : POSet[Object] */;
2103 val* var8 /* : POSetElement[nullable Object] */;
2104 val* var9 /* : Collection[nullable Object] */;
2105 val* var_ /* var : Collection[Object] */;
2106 val* var10 /* : Iterator[nullable Object] */;
2107 val* var_11 /* var : Iterator[Object] */;
2108 short int var12 /* : Bool */;
2109 val* var13 /* : nullable Object */;
2110 val* var_p /* var p: Object */;
2111 val* var14 /* : HashMap[Object, Int] */;
2112 val* var16 /* : HashMap[Object, Int] */;
2113 short int var17 /* : Bool */;
2114 short int var18 /* : Bool */;
2115 val* var20 /* : HashMap[Object, Int] */;
2116 val* var22 /* : HashMap[Object, Int] */;
2117 val* var23 /* : nullable Object */;
2118 long var24 /* : Int */;
2119 long var_color /* var color: Int */;
2120 short int var25 /* : Bool */;
2121 short int var27 /* : Bool */;
2122 int cltype28;
2123 int idtype29;
2124 const char* var_class_name30;
2125 short int var31 /* : Bool */;
2126 long var32 /* : Int */;
2127 short int var34 /* : Bool */;
2128 int cltype35;
2129 int idtype36;
2130 const char* var_class_name37;
2131 long var38 /* : Int */;
2132 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
2133 /* <p0:Object> isa E */
2134 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetColorer___35dE];
2135 cltype = type_struct->color;
2136 idtype = type_struct->id;
2137 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2138 var1 = 0;
2139 } else {
2140 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2141 }
2142 if (unlikely(!var1)) {
2143 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2144 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2145 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 250);
2146 fatal_exit(1);
2147 }
2148 var_e = p0;
2149 {
2150 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
2151 var4 = -1l;
2152 var2 = var4;
2153 goto RET_LABEL3;
2154 RET_LABEL3:(void)0;
2155 }
2156 }
2157 var_max_color = var2;
2158 {
2159 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2160 var7 = self->attrs[COLOR_nitc__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2161 if (unlikely(var7 == NULL)) {
2162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2163 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 194);
2164 fatal_exit(1);
2165 }
2166 var5 = var7;
2167 RET_LABEL6:(void)0;
2168 }
2169 }
2170 {
2171 var8 = poset___poset__POSet____91d_93d(var5, var_e);
2172 }
2173 {
2174 var9 = poset___poset__POSetElement___direct_greaters(var8);
2175 }
2176 var_ = var9;
2177 {
2178 var10 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
2179 }
2180 var_11 = var10;
2181 for(;;) {
2182 {
2183 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:Iterator[Object]>*/
2184 }
2185 if (var12){
2186 } else {
2187 goto BREAK_label;
2188 }
2189 {
2190 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:Iterator[Object]>*/
2191 }
2192 var_p = var13;
2193 {
2194 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2195 var16 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2196 if (unlikely(var16 == NULL)) {
2197 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2198 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
2199 fatal_exit(1);
2200 }
2201 var14 = var16;
2202 RET_LABEL15:(void)0;
2203 }
2204 }
2205 {
2206 var17 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var14, var_p);
2207 }
2208 var18 = !var17;
2209 if (var18){
2210 goto BREAK_label19;
2211 } else {
2212 }
2213 {
2214 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2215 var22 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2216 if (unlikely(var22 == NULL)) {
2217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2218 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
2219 fatal_exit(1);
2220 }
2221 var20 = var22;
2222 RET_LABEL21:(void)0;
2223 }
2224 }
2225 {
2226 var23 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var20, var_p);
2227 }
2228 var24 = (long)(var23)>>2;
2229 var_color = var24;
2230 {
2231 { /* Inline kernel#Int#> (var_color,var_max_color) on <var_color:Int> */
2232 /* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
2233 /* <var_max_color:Int> isa OTHER */
2234 var27 = 1; /* easy <var_max_color:Int> isa OTHER*/
2235 if (unlikely(!var27)) {
2236 var_class_name30 = type_core__Int.name;
2237 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
2238 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
2239 fatal_exit(1);
2240 }
2241 var31 = var_color > var_max_color;
2242 var25 = var31;
2243 goto RET_LABEL26;
2244 RET_LABEL26:(void)0;
2245 }
2246 }
2247 if (var25){
2248 var_max_color = var_color;
2249 } else {
2250 }
2251 BREAK_label19: (void)0;
2252 {
2253 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:Iterator[Object]>*/
2254 }
2255 }
2256 BREAK_label: (void)0;
2257 {
2258 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:Iterator[Object]>*/
2259 }
2260 {
2261 { /* Inline kernel#Int#+ (var_max_color,1l) on <var_max_color:Int> */
2262 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
2263 /* <1l:Int> isa OTHER */
2264 var34 = 1; /* easy <1l:Int> isa OTHER*/
2265 if (unlikely(!var34)) {
2266 var_class_name37 = type_core__Int.name;
2267 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
2268 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
2269 fatal_exit(1);
2270 }
2271 var38 = var_max_color + 1l;
2272 var32 = var38;
2273 goto RET_LABEL33;
2274 RET_LABEL33:(void)0;
2275 }
2276 }
2277 var = var32;
2278 goto RET_LABEL;
2279 RET_LABEL:;
2280 return var;
2281 }
2282 /* method coloring#POSetColorer#is_color_free for (self: POSetColorer[Object], Int, Collection[Object]): Bool */
2283 short int nitc___nitc__POSetColorer___is_color_free(val* self, long p0, val* p1) {
2284 short int var /* : Bool */;
2285 short int var1 /* : Bool */;
2286 int cltype;
2287 int idtype;
2288 const struct type* type_struct;
2289 const char* var_class_name;
2290 long var_color /* var color: Int */;
2291 val* var_set /* var set: Collection[Object] */;
2292 val* var_ /* var : Collection[Object] */;
2293 val* var2 /* : Iterator[nullable Object] */;
2294 val* var_3 /* var : Iterator[Object] */;
2295 short int var4 /* : Bool */;
2296 val* var5 /* : nullable Object */;
2297 val* var_e /* var e: Object */;
2298 short int var6 /* : Bool */;
2299 val* var7 /* : HashMap[Object, Int] */;
2300 val* var9 /* : HashMap[Object, Int] */;
2301 short int var10 /* : Bool */;
2302 short int var_11 /* var : Bool */;
2303 val* var12 /* : HashMap[Object, Int] */;
2304 val* var14 /* : HashMap[Object, Int] */;
2305 val* var15 /* : nullable Object */;
2306 short int var16 /* : Bool */;
2307 short int var18 /* : Bool */;
2308 long var19 /* : Int */;
2309 /* Covariant cast for argument 1 (set) <p1:Collection[Object]> isa Collection[E] */
2310 /* <p1:Collection[Object]> isa Collection[E] */
2311 type_struct = self->type->resolution_table->types[COLOR_core__Collection__nitc__POSetColorer___35dE];
2312 cltype = type_struct->color;
2313 idtype = type_struct->id;
2314 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
2315 var1 = 0;
2316 } else {
2317 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
2318 }
2319 if (unlikely(!var1)) {
2320 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
2321 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2322 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 261);
2323 fatal_exit(1);
2324 }
2325 var_color = p0;
2326 var_set = p1;
2327 var_ = var_set;
2328 {
2329 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
2330 }
2331 var_3 = var2;
2332 for(;;) {
2333 {
2334 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[Object]>*/
2335 }
2336 if (var4){
2337 } else {
2338 goto BREAK_label;
2339 }
2340 {
2341 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[Object]>*/
2342 }
2343 var_e = var5;
2344 {
2345 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2346 var9 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2347 if (unlikely(var9 == NULL)) {
2348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2349 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
2350 fatal_exit(1);
2351 }
2352 var7 = var9;
2353 RET_LABEL8:(void)0;
2354 }
2355 }
2356 {
2357 var10 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var7, var_e);
2358 }
2359 var_11 = var10;
2360 if (var10){
2361 {
2362 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2363 var14 = self->attrs[COLOR_nitc__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2364 if (unlikely(var14 == NULL)) {
2365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2366 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 187);
2367 fatal_exit(1);
2368 }
2369 var12 = var14;
2370 RET_LABEL13:(void)0;
2371 }
2372 }
2373 {
2374 var15 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var12, var_e);
2375 }
2376 {
2377 { /* Inline kernel#Int#== (var15,var_color) on <var15:nullable Object(Int)> */
2378 var19 = (long)(var15)>>2;
2379 var18 = var19 == var_color;
2380 var16 = var18;
2381 goto RET_LABEL17;
2382 RET_LABEL17:(void)0;
2383 }
2384 }
2385 var6 = var16;
2386 } else {
2387 var6 = var_11;
2388 }
2389 if (var6){
2390 var = 0;
2391 goto RET_LABEL;
2392 } else {
2393 }
2394 {
2395 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[Object]>*/
2396 }
2397 }
2398 BREAK_label: (void)0;
2399 {
2400 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[Object]>*/
2401 }
2402 var = 1;
2403 goto RET_LABEL;
2404 RET_LABEL:;
2405 return var;
2406 }
2407 /* method coloring#POSetGroupColorer#graph for (self: POSetGroupColorer[Object, Object]): POSetConflictGraph[Object] */
2408 val* nitc___nitc__POSetGroupColorer___graph(val* self) {
2409 val* var /* : POSetConflictGraph[Object] */;
2410 val* var1 /* : POSetConflictGraph[Object] */;
2411 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
2412 if (unlikely(var1 == NULL)) {
2413 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2414 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
2415 fatal_exit(1);
2416 }
2417 var = var1;
2418 RET_LABEL:;
2419 return var;
2420 }
2421 /* method coloring#POSetGroupColorer#graph= for (self: POSetGroupColorer[Object, Object], POSetConflictGraph[Object]) */
2422 void nitc___nitc__POSetGroupColorer___graph_61d(val* self, val* p0) {
2423 short int var /* : Bool */;
2424 int cltype;
2425 int idtype;
2426 const struct type* type_struct;
2427 const char* var_class_name;
2428 /* Covariant cast for argument 0 (graph) <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[H] */
2429 /* <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[H] */
2430 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetConflictGraph__nitc__POSetGroupColorer___35dH];
2431 cltype = type_struct->color;
2432 idtype = type_struct->id;
2433 if(cltype >= p0->type->table_size) {
2434 var = 0;
2435 } else {
2436 var = p0->type->type_table[cltype] == idtype;
2437 }
2438 if (unlikely(!var)) {
2439 var_class_name = p0 == NULL ? "null" : p0->type->name;
2440 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[H]", var_class_name);
2441 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
2442 fatal_exit(1);
2443 }
2444 self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val = p0; /* _graph on <self:POSetGroupColorer[Object, Object]> */
2445 RET_LABEL:;
2446 }
2447 /* method coloring#POSetGroupColorer#buckets for (self: POSetGroupColorer[Object, Object]): Map[Object, Collection[Object]] */
2448 val* nitc___nitc__POSetGroupColorer___buckets(val* self) {
2449 val* var /* : Map[Object, Collection[Object]] */;
2450 val* var1 /* : Map[Object, Collection[Object]] */;
2451 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___buckets].val; /* _buckets on <self:POSetGroupColorer[Object, Object]> */
2452 if (unlikely(var1 == NULL)) {
2453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _buckets");
2454 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 288);
2455 fatal_exit(1);
2456 }
2457 var = var1;
2458 RET_LABEL:;
2459 return var;
2460 }
2461 /* method coloring#POSetGroupColorer#buckets= for (self: POSetGroupColorer[Object, Object], Map[Object, Collection[Object]]) */
2462 void nitc___nitc__POSetGroupColorer___buckets_61d(val* self, val* p0) {
2463 short int var /* : Bool */;
2464 int cltype;
2465 int idtype;
2466 const struct type* type_struct;
2467 const char* var_class_name;
2468 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Collection[Object]]> isa Map[H, Collection[E]] */
2469 /* <p0:Map[Object, Collection[Object]]> isa Map[H, Collection[E]] */
2470 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetGroupColorer___35dH__core__Collection__nitc__POSetGroupColorer___35dE];
2471 cltype = type_struct->color;
2472 idtype = type_struct->id;
2473 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2474 var = 0;
2475 } else {
2476 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2477 }
2478 if (unlikely(!var)) {
2479 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2480 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Collection[E]]", var_class_name);
2481 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 288);
2482 fatal_exit(1);
2483 }
2484 self->attrs[COLOR_nitc__coloring__POSetGroupColorer___buckets].val = p0; /* _buckets on <self:POSetGroupColorer[Object, Object]> */
2485 RET_LABEL:;
2486 }
2487 /* method coloring#POSetGroupColorer#poset for (self: POSetGroupColorer[Object, Object]): POSet[Object] */
2488 val* nitc___nitc__POSetGroupColorer___poset(val* self) {
2489 val* var /* : POSet[Object] */;
2490 val* var1 /* : POSetConflictGraph[Object] */;
2491 val* var3 /* : POSetConflictGraph[Object] */;
2492 val* var4 /* : POSet[nullable Object] */;
2493 val* var6 /* : POSet[nullable Object] */;
2494 {
2495 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
2496 var3 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
2497 if (unlikely(var3 == NULL)) {
2498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2499 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
2500 fatal_exit(1);
2501 }
2502 var1 = var3;
2503 RET_LABEL2:(void)0;
2504 }
2505 }
2506 {
2507 { /* Inline coloring#POSetConflictGraph#poset (var1) on <var1:POSetConflictGraph[Object]> */
2508 var6 = var1->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <var1:POSetConflictGraph[Object]> */
2509 if (unlikely(var6 == NULL)) {
2510 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
2511 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
2512 fatal_exit(1);
2513 }
2514 var4 = var6;
2515 RET_LABEL5:(void)0;
2516 }
2517 }
2518 var = var4;
2519 goto RET_LABEL;
2520 RET_LABEL:;
2521 return var;
2522 }
2523 /* method coloring#POSetGroupColorer#colors for (self: POSetGroupColorer[Object, Object]): Map[Object, Int] */
2524 val* nitc___nitc__POSetGroupColorer___colors(val* self) {
2525 val* var /* : Map[Object, Int] */;
2526 short int var1 /* : Bool */;
2527 val* var2 /* : Map[Object, Int] */;
2528 val* var3 /* : Map[Object, Int] */;
2529 val* var5 /* : POSetConflictGraph[Object] */;
2530 val* var7 /* : POSetConflictGraph[Object] */;
2531 val* var8 /* : POSet[nullable Object] */;
2532 val* var10 /* : POSet[nullable Object] */;
2533 val* var_ /* var : POSet[Object] */;
2534 val* var11 /* : Iterator[nullable Object] */;
2535 val* var_12 /* var : Iterator[Object] */;
2536 short int var13 /* : Bool */;
2537 val* var14 /* : nullable Object */;
2538 val* var_h /* var h: Object */;
2539 val* var15 /* : HashMap[Object, HashSet[Int]] */;
2540 val* var17 /* : HashMap[Object, HashSet[Int]] */;
2541 val* var18 /* : HashSet[Int] */;
2542 val* var19 /* : HashMap[Object, Int] */;
2543 val* var21 /* : HashMap[Object, Int] */;
2544 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors].val != NULL; /* _colors on <self:POSetGroupColorer[Object, Object]> */
2545 if(likely(var1)) {
2546 var2 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors].val; /* _colors on <self:POSetGroupColorer[Object, Object]> */
2547 if (unlikely(var2 == NULL)) {
2548 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2549 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 300);
2550 fatal_exit(1);
2551 }
2552 } else {
2553 {
2554 {
2555 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
2556 var7 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
2557 if (unlikely(var7 == NULL)) {
2558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
2559 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
2560 fatal_exit(1);
2561 }
2562 var5 = var7;
2563 RET_LABEL6:(void)0;
2564 }
2565 }
2566 {
2567 { /* Inline coloring#POSetConflictGraph#poset (var5) on <var5:POSetConflictGraph[Object]> */
2568 var10 = var5->attrs[COLOR_nitc__coloring__POSetConflictGraph___poset].val; /* _poset on <var5:POSetConflictGraph[Object]> */
2569 if (unlikely(var10 == NULL)) {
2570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
2571 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 48);
2572 fatal_exit(1);
2573 }
2574 var8 = var10;
2575 RET_LABEL9:(void)0;
2576 }
2577 }
2578 var_ = var8;
2579 {
2580 var11 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
2581 }
2582 var_12 = var11;
2583 for(;;) {
2584 {
2585 var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:Iterator[Object]>*/
2586 }
2587 if (var13){
2588 } else {
2589 goto BREAK_label;
2590 }
2591 {
2592 var14 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:Iterator[Object]>*/
2593 }
2594 var_h = var14;
2595 {
2596 { /* Inline coloring#POSetGroupColorer#used_colors (self) on <self:POSetGroupColorer[Object, Object]> */
2597 var17 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___used_colors].val; /* _used_colors on <self:POSetGroupColorer[Object, Object]> */
2598 if (unlikely(var17 == NULL)) {
2599 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _used_colors");
2600 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 314);
2601 fatal_exit(1);
2602 }
2603 var15 = var17;
2604 RET_LABEL16:(void)0;
2605 }
2606 }
2607 var18 = NEW_core__HashSet(&type_core__HashSet__core__Int);
2608 {
2609 core___core__HashSet___core__kernel__Object__init(var18); /* Direct call hash_collection#HashSet#init on <var18:HashSet[Int]>*/
2610 }
2611 {
2612 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var15, var_h, var18); /* Direct call hash_collection#HashMap#[]= on <var15:HashMap[Object, HashSet[Int]]>*/
2613 }
2614 {
2615 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:Iterator[Object]>*/
2616 }
2617 }
2618 BREAK_label: (void)0;
2619 {
2620 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:Iterator[Object]>*/
2621 }
2622 {
2623 nitc___nitc__POSetGroupColorer___compute_colors(self); /* Direct call coloring#POSetGroupColorer#compute_colors on <self:POSetGroupColorer[Object, Object]>*/
2624 }
2625 {
2626 { /* Inline coloring#POSetGroupColorer#colors_cache (self) on <self:POSetGroupColorer[Object, Object]> */
2627 var21 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors_cache].val; /* _colors_cache on <self:POSetGroupColorer[Object, Object]> */
2628 if (unlikely(var21 == NULL)) {
2629 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2630 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 311);
2631 fatal_exit(1);
2632 }
2633 var19 = var21;
2634 RET_LABEL20:(void)0;
2635 }
2636 }
2637 var3 = var19;
2638 goto RET_LABEL4;
2639 RET_LABEL4:(void)0;
2640 }
2641 self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors].val = var3; /* _colors on <self:POSetGroupColorer[Object, Object]> */
2642 var2 = var3;
2643 }
2644 var = var2;
2645 RET_LABEL:;
2646 return var;
2647 }
2648 /* method coloring#POSetGroupColorer#colors_cache for (self: POSetGroupColorer[Object, Object]): HashMap[Object, Int] */
2649 val* nitc___nitc__POSetGroupColorer___colors_cache(val* self) {
2650 val* var /* : HashMap[Object, Int] */;
2651 val* var1 /* : HashMap[Object, Int] */;
2652 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors_cache].val; /* _colors_cache on <self:POSetGroupColorer[Object, Object]> */
2653 if (unlikely(var1 == NULL)) {
2654 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2655 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 311);
2656 fatal_exit(1);
2657 }
2658 var = var1;
2659 RET_LABEL:;
2660 return var;
2661 }
2662 /* method coloring#POSetGroupColorer#used_colors for (self: POSetGroupColorer[Object, Object]): HashMap[Object, HashSet[Int]] */
2663 val* nitc___nitc__POSetGroupColorer___used_colors(val* self) {
2664 val* var /* : HashMap[Object, HashSet[Int]] */;
2665 val* var1 /* : HashMap[Object, HashSet[Int]] */;
2666 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___used_colors].val; /* _used_colors on <self:POSetGroupColorer[Object, Object]> */
2667 if (unlikely(var1 == NULL)) {
2668 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _used_colors");
2669 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 314);
2670 fatal_exit(1);
2671 }
2672 var = var1;
2673 RET_LABEL:;
2674 return var;
2675 }
2676 /* method coloring#POSetGroupColorer#build_layout for (self: POSetGroupColorer[Object, Object], Object): Array[nullable Object] */
2677 val* nitc___nitc__POSetGroupColorer___build_layout(val* self, val* p0) {
2678 val* var /* : Array[nullable Object] */;
2679 short int var1 /* : Bool */;
2680 int cltype;
2681 int idtype;
2682 const struct type* type_struct;
2683 const char* var_class_name;
2684 val* var_h /* var h: Object */;
2685 val* var2 /* : Array[nullable Object] */;
2686 val* var_table /* var table: Array[nullable Object] */;
2687 val* var3 /* : POSet[Object] */;
2688 val* var4 /* : POSetElement[nullable Object] */;
2689 val* var5 /* : Collection[nullable Object] */;
2690 val* var_ /* var : Collection[Object] */;
2691 val* var6 /* : Iterator[nullable Object] */;
2692 val* var_7 /* var : Iterator[Object] */;
2693 short int var8 /* : Bool */;
2694 val* var9 /* : nullable Object */;
2695 val* var_s /* var s: Object */;
2696 val* var10 /* : Map[Object, Collection[Object]] */;
2697 val* var12 /* : Map[Object, Collection[Object]] */;
2698 val* var13 /* : nullable Object */;
2699 val* var_bucket /* var bucket: nullable Collection[Object] */;
2700 short int var14 /* : Bool */;
2701 short int var15 /* : Bool */;
2702 val* var_17 /* var : Collection[Object] */;
2703 val* var18 /* : Iterator[nullable Object] */;
2704 val* var_19 /* var : Iterator[Object] */;
2705 short int var20 /* : Bool */;
2706 val* var22 /* : nullable Object */;
2707 val* var_e /* var e: Object */;
2708 val* var23 /* : Map[Object, Int] */;
2709 val* var24 /* : nullable Object */;
2710 long var25 /* : Int */;
2711 long var_color /* var color: Int */;
2712 long var26 /* : Int */;
2713 long var28 /* : Int */;
2714 short int var29 /* : Bool */;
2715 short int var31 /* : Bool */;
2716 int cltype32;
2717 int idtype33;
2718 const char* var_class_name34;
2719 short int var35 /* : Bool */;
2720 long var36 /* : Int */;
2721 long var38 /* : Int */;
2722 long var_i /* var i: Int */;
2723 long var_39 /* var : Int */;
2724 short int var40 /* : Bool */;
2725 short int var42 /* : Bool */;
2726 int cltype43;
2727 int idtype44;
2728 const char* var_class_name45;
2729 short int var46 /* : Bool */;
2730 long var48 /* : Int */;
2731 val* var49 /* : nullable Object */;
2732 short int var50 /* : Bool */;
2733 short int var51 /* : Bool */;
2734 val* var52 /* : Sys */;
2735 val* var53 /* : NativeArray[String] */;
2736 static val* varonce;
2737 static val* varonce54;
2738 val* var55 /* : String */;
2739 char* var56 /* : NativeString */;
2740 val* var57 /* : String */;
2741 static val* varonce58;
2742 val* var59 /* : String */;
2743 char* var60 /* : NativeString */;
2744 val* var61 /* : String */;
2745 static val* varonce62;
2746 val* var63 /* : String */;
2747 char* var64 /* : NativeString */;
2748 val* var65 /* : String */;
2749 static val* varonce66;
2750 val* var67 /* : String */;
2751 char* var68 /* : NativeString */;
2752 val* var69 /* : String */;
2753 val* var70 /* : String */;
2754 val* var71 /* : String */;
2755 val* var72 /* : Object */;
2756 val* var73 /* : nullable Object */;
2757 static val* varonce74;
2758 val* var75 /* : String */;
2759 char* var76 /* : NativeString */;
2760 val* var77 /* : String */;
2761 val* var78 /* : String */;
2762 val* var79 /* : String */;
2763 val* var80 /* : String */;
2764 /* Covariant cast for argument 0 (h) <p0:Object> isa H */
2765 /* <p0:Object> isa H */
2766 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetGroupColorer___35dH];
2767 cltype = type_struct->color;
2768 idtype = type_struct->id;
2769 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
2770 var1 = 0;
2771 } else {
2772 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
2773 }
2774 if (unlikely(!var1)) {
2775 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
2776 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
2777 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 317);
2778 fatal_exit(1);
2779 }
2780 var_h = p0;
2781 var2 = NEW_core__Array(self->type->resolution_table->types[COLOR_core__Array__nullable__nitc__POSetGroupColorer___35dE]);
2782 {
2783 core___core__Array___core__kernel__Object__init(var2); /* Direct call array#Array#init on <var2:Array[nullable Object]>*/
2784 }
2785 var_table = var2;
2786 {
2787 var3 = nitc___nitc__POSetGroupColorer___poset(self);
2788 }
2789 {
2790 var4 = poset___poset__POSet____91d_93d(var3, var_h);
2791 }
2792 {
2793 var5 = poset___poset__POSetElement___greaters(var4);
2794 }
2795 var_ = var5;
2796 {
2797 var6 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
2798 }
2799 var_7 = var6;
2800 for(;;) {
2801 {
2802 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[Object]>*/
2803 }
2804 if (var8){
2805 } else {
2806 goto BREAK_label;
2807 }
2808 {
2809 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[Object]>*/
2810 }
2811 var_s = var9;
2812 {
2813 { /* Inline coloring#POSetGroupColorer#buckets (self) on <self:POSetGroupColorer[Object, Object]> */
2814 var12 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___buckets].val; /* _buckets on <self:POSetGroupColorer[Object, Object]> */
2815 if (unlikely(var12 == NULL)) {
2816 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _buckets");
2817 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 288);
2818 fatal_exit(1);
2819 }
2820 var10 = var12;
2821 RET_LABEL11:(void)0;
2822 }
2823 }
2824 {
2825 var13 = ((val*(*)(val* self, val* p0))((((long)var10&3)?class_info[((long)var10&3)]:var10->class)->vft[COLOR_core__abstract_collection__MapRead__get_or_null]))(var10, var_s); /* get_or_null on <var10:Map[Object, Collection[Object]]>*/
2826 }
2827 var_bucket = var13;
2828 if (var_bucket == NULL) {
2829 var14 = 1; /* is null */
2830 } else {
2831 var14 = 0; /* arg is null but recv is not */
2832 }
2833 if (0) {
2834 var15 = ((short int(*)(val* self, val* p0))((((long)var_bucket&3)?class_info[((long)var_bucket&3)]:var_bucket->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_bucket, ((val*)NULL)); /* == on <var_bucket:nullable Collection[Object]>*/
2835 var14 = var15;
2836 }
2837 if (var14){
2838 goto BREAK_label16;
2839 } else {
2840 }
2841 var_17 = var_bucket;
2842 {
2843 var18 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_17); /* iterator on <var_17:Collection[Object]>*/
2844 }
2845 var_19 = var18;
2846 for(;;) {
2847 {
2848 var20 = ((short int(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_19); /* is_ok on <var_19:Iterator[Object]>*/
2849 }
2850 if (var20){
2851 } else {
2852 goto BREAK_label21;
2853 }
2854 {
2855 var22 = ((val*(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_19); /* item on <var_19:Iterator[Object]>*/
2856 }
2857 var_e = var22;
2858 {
2859 var23 = nitc___nitc__POSetGroupColorer___colors(self);
2860 }
2861 {
2862 var24 = ((val*(*)(val* self, val* p0))((((long)var23&3)?class_info[((long)var23&3)]:var23->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var23, var_e); /* [] on <var23:Map[Object, Int]>*/
2863 }
2864 var25 = (long)(var24)>>2;
2865 var_color = var25;
2866 {
2867 { /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable Object]> */
2868 var28 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable Object]> */
2869 var26 = var28;
2870 RET_LABEL27:(void)0;
2871 }
2872 }
2873 {
2874 { /* Inline kernel#Int#<= (var26,var_color) on <var26:Int> */
2875 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
2876 /* <var_color:Int> isa OTHER */
2877 var31 = 1; /* easy <var_color:Int> isa OTHER*/
2878 if (unlikely(!var31)) {
2879 var_class_name34 = type_core__Int.name;
2880 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
2881 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
2882 fatal_exit(1);
2883 }
2884 var35 = var26 <= var_color;
2885 var29 = var35;
2886 goto RET_LABEL30;
2887 RET_LABEL30:(void)0;
2888 }
2889 }
2890 if (var29){
2891 {
2892 { /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable Object]> */
2893 var38 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable Object]> */
2894 var36 = var38;
2895 RET_LABEL37:(void)0;
2896 }
2897 }
2898 var_i = var36;
2899 var_39 = var_color;
2900 for(;;) {
2901 {
2902 { /* Inline kernel#Int#< (var_i,var_39) on <var_i:Int> */
2903 /* Covariant cast for argument 0 (i) <var_39:Int> isa OTHER */
2904 /* <var_39:Int> isa OTHER */
2905 var42 = 1; /* easy <var_39:Int> isa OTHER*/
2906 if (unlikely(!var42)) {
2907 var_class_name45 = type_core__Int.name;
2908 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name45);
2909 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
2910 fatal_exit(1);
2911 }
2912 var46 = var_i < var_39;
2913 var40 = var46;
2914 goto RET_LABEL41;
2915 RET_LABEL41:(void)0;
2916 }
2917 }
2918 if (var40){
2919 } else {
2920 goto BREAK_label47;
2921 }
2922 {
2923 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_i, ((val*)NULL)); /* Direct call array#Array#[]= on <var_table:Array[nullable Object]>*/
2924 }
2925 {
2926 var48 = core___core__Int___Discrete__successor(var_i, 1l);
2927 }
2928 var_i = var48;
2929 }
2930 BREAK_label47: (void)0;
2931 } else {
2932 {
2933 var49 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_table, var_color);
2934 }
2935 if (var49 == NULL) {
2936 var50 = 1; /* is null */
2937 } else {
2938 var50 = 0; /* arg is null but recv is not */
2939 }
2940 if (0) {
2941 var51 = ((short int(*)(val* self, val* p0))((((long)var49&3)?class_info[((long)var49&3)]:var49->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var49, ((val*)NULL)); /* == on <var49:nullable Object>*/
2942 var50 = var51;
2943 }
2944 if (unlikely(!var50)) {
2945 var52 = glob_sys;
2946 if (unlikely(varonce==NULL)) {
2947 var53 = NEW_core__NativeArray(8l, &type_core__NativeArray__core__String);
2948 if (likely(varonce54!=NULL)) {
2949 var55 = varonce54;
2950 } else {
2951 var56 = "in ";
2952 var57 = core__flat___NativeString___to_s_full(var56, 3l, 3l);
2953 var55 = var57;
2954 varonce54 = var55;
2955 }
2956 ((struct instance_core__NativeArray*)var53)->values[0]=var55;
2957 if (likely(varonce58!=NULL)) {
2958 var59 = varonce58;
2959 } else {
2960 var60 = ", for ";
2961 var61 = core__flat___NativeString___to_s_full(var60, 6l, 6l);
2962 var59 = var61;
2963 varonce58 = var59;
2964 }
2965 ((struct instance_core__NativeArray*)var53)->values[2]=var59;
2966 if (likely(varonce62!=NULL)) {
2967 var63 = varonce62;
2968 } else {
2969 var64 = ": ";
2970 var65 = core__flat___NativeString___to_s_full(var64, 2l, 2l);
2971 var63 = var65;
2972 varonce62 = var63;
2973 }
2974 ((struct instance_core__NativeArray*)var53)->values[4]=var63;
2975 if (likely(varonce66!=NULL)) {
2976 var67 = varonce66;
2977 } else {
2978 var68 = " vs ";
2979 var69 = core__flat___NativeString___to_s_full(var68, 4l, 4l);
2980 var67 = var69;
2981 varonce66 = var67;
2982 }
2983 ((struct instance_core__NativeArray*)var53)->values[6]=var67;
2984 } else {
2985 var53 = varonce;
2986 varonce = NULL;
2987 }
2988 {
2989 var70 = ((val*(*)(val* self))((((long)var_h&3)?class_info[((long)var_h&3)]:var_h->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_h); /* to_s on <var_h:Object>*/
2990 }
2991 ((struct instance_core__NativeArray*)var53)->values[1]=var70;
2992 var71 = core__flat___Int___core__abstract_text__Object__to_s(var_color);
2993 ((struct instance_core__NativeArray*)var53)->values[3]=var71;
2994 {
2995 var73 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_table, var_color);
2996 }
2997 if (var73!=NULL) {
2998 var72 = var73;
2999 } else {
3000 if (likely(varonce74!=NULL)) {
3001 var75 = varonce74;
3002 } else {
3003 var76 = "";
3004 var77 = core__flat___NativeString___to_s_full(var76, 0l, 0l);
3005 var75 = var77;
3006 varonce74 = var75;
3007 }
3008 var72 = var75;
3009 }
3010 {
3011 var78 = ((val*(*)(val* self))((((long)var72&3)?class_info[((long)var72&3)]:var72->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var72); /* to_s on <var72:Object>*/
3012 }
3013 ((struct instance_core__NativeArray*)var53)->values[5]=var78;
3014 {
3015 var79 = ((val*(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_e); /* to_s on <var_e:Object>*/
3016 }
3017 ((struct instance_core__NativeArray*)var53)->values[7]=var79;
3018 {
3019 var80 = ((val*(*)(val* self))(var53->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var53); /* native_to_s on <var53:NativeArray[String]>*/
3020 }
3021 varonce = var53;
3022 {
3023 core__file___Sys___print(var52, var80); /* Direct call file#Sys#print on <var52:Sys>*/
3024 }
3025 PRINT_ERROR("Runtime error: %s", "Assert failed");
3026 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 333);
3027 fatal_exit(1);
3028 }
3029 }
3030 {
3031 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_table, var_color, var_e); /* Direct call array#Array#[]= on <var_table:Array[nullable Object]>*/
3032 }
3033 {
3034 ((void(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_19); /* next on <var_19:Iterator[Object]>*/
3035 }
3036 }
3037 BREAK_label21: (void)0;
3038 {
3039 ((void(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_19); /* finish on <var_19:Iterator[Object]>*/
3040 }
3041 BREAK_label16: (void)0;
3042 {
3043 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[Object]>*/
3044 }
3045 }
3046 BREAK_label: (void)0;
3047 {
3048 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[Object]>*/
3049 }
3050 var = var_table;
3051 goto RET_LABEL;
3052 RET_LABEL:;
3053 return var;
3054 }
3055 /* method coloring#POSetGroupColorer#compute_colors for (self: POSetGroupColorer[Object, Object]) */
3056 void nitc___nitc__POSetGroupColorer___compute_colors(val* self) {
3057 val* var /* : HashMap[Object, Int] */;
3058 val* var2 /* : HashMap[Object, Int] */;
3059 val* var3 /* : POSetConflictGraph[Object] */;
3060 val* var5 /* : POSetConflictGraph[Object] */;
3061 val* var6 /* : HashSet[nullable Object] */;
3062 val* var8 /* : HashSet[nullable Object] */;
3063 val* var9 /* : POSetConflictGraph[Object] */;
3064 val* var11 /* : POSetConflictGraph[Object] */;
3065 val* var12 /* : HashSet[nullable Object] */;
3066 val* var14 /* : HashSet[nullable Object] */;
3067 {
3068 { /* Inline coloring#POSetGroupColorer#colors_cache (self) on <self:POSetGroupColorer[Object, Object]> */
3069 var2 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors_cache].val; /* _colors_cache on <self:POSetGroupColorer[Object, Object]> */
3070 if (unlikely(var2 == NULL)) {
3071 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
3072 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 311);
3073 fatal_exit(1);
3074 }
3075 var = var2;
3076 RET_LABEL1:(void)0;
3077 }
3078 }
3079 {
3080 core___core__HashMap___core__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
3081 }
3082 {
3083 nitc___nitc__POSetGroupColorer___colorize_core(self); /* Direct call coloring#POSetGroupColorer#colorize_core on <self:POSetGroupColorer[Object, Object]>*/
3084 }
3085 {
3086 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3087 var5 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3088 if (unlikely(var5 == NULL)) {
3089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3090 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3091 fatal_exit(1);
3092 }
3093 var3 = var5;
3094 RET_LABEL4:(void)0;
3095 }
3096 }
3097 {
3098 { /* Inline coloring#POSetConflictGraph#border (var3) on <var3:POSetConflictGraph[Object]> */
3099 var8 = var3->attrs[COLOR_nitc__coloring__POSetConflictGraph___border].val; /* _border on <var3:POSetConflictGraph[Object]> */
3100 if (unlikely(var8 == NULL)) {
3101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
3102 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 28);
3103 fatal_exit(1);
3104 }
3105 var6 = var8;
3106 RET_LABEL7:(void)0;
3107 }
3108 }
3109 {
3110 nitc___nitc__POSetGroupColorer___colorize_set(self, var6); /* Direct call coloring#POSetGroupColorer#colorize_set on <self:POSetGroupColorer[Object, Object]>*/
3111 }
3112 {
3113 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3114 var11 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3115 if (unlikely(var11 == NULL)) {
3116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3117 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3118 fatal_exit(1);
3119 }
3120 var9 = var11;
3121 RET_LABEL10:(void)0;
3122 }
3123 }
3124 {
3125 { /* Inline coloring#POSetConflictGraph#crown (var9) on <var9:POSetConflictGraph[Object]> */
3126 var14 = var9->attrs[COLOR_nitc__coloring__POSetConflictGraph___crown].val; /* _crown on <var9:POSetConflictGraph[Object]> */
3127 if (unlikely(var14 == NULL)) {
3128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
3129 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 34);
3130 fatal_exit(1);
3131 }
3132 var12 = var14;
3133 RET_LABEL13:(void)0;
3134 }
3135 }
3136 {
3137 nitc___nitc__POSetGroupColorer___colorize_set(self, var12); /* Direct call coloring#POSetGroupColorer#colorize_set on <self:POSetGroupColorer[Object, Object]>*/
3138 }
3139 RET_LABEL:;
3140 }
3141 /* method coloring#POSetGroupColorer#colorize_core for (self: POSetGroupColorer[Object, Object]) */
3142 void nitc___nitc__POSetGroupColorer___colorize_core(val* self) {
3143 val* var /* : POSetConflictGraph[Object] */;
3144 val* var2 /* : POSetConflictGraph[Object] */;
3145 val* var3 /* : Array[nullable Object] */;
3146 val* var5 /* : Array[nullable Object] */;
3147 val* var_ /* var : Array[Object] */;
3148 val* var6 /* : IndexedIterator[nullable Object] */;
3149 val* var_7 /* var : IndexedIterator[Object] */;
3150 short int var8 /* : Bool */;
3151 val* var9 /* : nullable Object */;
3152 val* var_h /* var h: Object */;
3153 val* var10 /* : POSetConflictGraph[Object] */;
3154 val* var12 /* : POSetConflictGraph[Object] */;
3155 val* var13 /* : HashSet[nullable Object] */;
3156 val* var15 /* : HashSet[nullable Object] */;
3157 short int var16 /* : Bool */;
3158 short int var17 /* : Bool */;
3159 long var19 /* : Int */;
3160 long var_color /* var color: Int */;
3161 long var_mincolor /* var mincolor: Int */;
3162 val* var20 /* : Map[Object, Collection[Object]] */;
3163 val* var22 /* : Map[Object, Collection[Object]] */;
3164 val* var23 /* : nullable Object */;
3165 val* var_bucket /* var bucket: nullable Collection[Object] */;
3166 short int var24 /* : Bool */;
3167 short int var25 /* : Bool */;
3168 val* var26 /* : POSetConflictGraph[Object] */;
3169 val* var28 /* : POSetConflictGraph[Object] */;
3170 val* var29 /* : HashMap[nullable Object, Set[nullable Object]] */;
3171 val* var31 /* : HashMap[nullable Object, Set[nullable Object]] */;
3172 val* var32 /* : nullable Object */;
3173 val* var_conflicts /* var conflicts: Set[Object] */;
3174 val* var33 /* : POSet[Object] */;
3175 val* var34 /* : POSetElement[nullable Object] */;
3176 val* var35 /* : Collection[nullable Object] */;
3177 val* var_parents /* var parents: Collection[Object] */;
3178 val* var_36 /* var : Collection[Object] */;
3179 val* var37 /* : Iterator[nullable Object] */;
3180 val* var_38 /* var : Iterator[Object] */;
3181 short int var39 /* : Bool */;
3182 val* var41 /* : nullable Object */;
3183 val* var_e /* var e: Object */;
3184 long var42 /* : Int */;
3185 long var43 /* : Int */;
3186 val* var44 /* : HashMap[Object, Int] */;
3187 val* var46 /* : HashMap[Object, Int] */;
3188 val* var47 /* : nullable Object */;
3189 val* var48 /* : HashMap[Object, HashSet[Int]] */;
3190 val* var50 /* : HashMap[Object, HashSet[Int]] */;
3191 val* var51 /* : nullable Object */;
3192 val* var52 /* : nullable Object */;
3193 short int var53 /* : Bool */;
3194 short int var55 /* : Bool */;
3195 long var56 /* : Int */;
3196 short int var58 /* : Bool */;
3197 int cltype;
3198 int idtype;
3199 const char* var_class_name;
3200 long var59 /* : Int */;
3201 long var60 /* : Int */;
3202 short int var62 /* : Bool */;
3203 int cltype63;
3204 int idtype64;
3205 const char* var_class_name65;
3206 long var66 /* : Int */;
3207 val* var67 /* : HashMap[Object, Int] */;
3208 val* var69 /* : HashMap[Object, Int] */;
3209 val* var70 /* : nullable Object */;
3210 {
3211 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3212 var2 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3213 if (unlikely(var2 == NULL)) {
3214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3215 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3216 fatal_exit(1);
3217 }
3218 var = var2;
3219 RET_LABEL1:(void)0;
3220 }
3221 }
3222 {
3223 { /* Inline coloring#POSetConflictGraph#order (var) on <var:POSetConflictGraph[Object]> */
3224 var5 = var->attrs[COLOR_nitc__coloring__POSetConflictGraph___order].val; /* _order on <var:POSetConflictGraph[Object]> */
3225 if (unlikely(var5 == NULL)) {
3226 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _order");
3227 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 51);
3228 fatal_exit(1);
3229 }
3230 var3 = var5;
3231 RET_LABEL4:(void)0;
3232 }
3233 }
3234 var_ = var3;
3235 {
3236 var6 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
3237 }
3238 var_7 = var6;
3239 for(;;) {
3240 {
3241 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:IndexedIterator[Object]>*/
3242 }
3243 if (var8){
3244 } else {
3245 goto BREAK_label;
3246 }
3247 {
3248 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:IndexedIterator[Object]>*/
3249 }
3250 var_h = var9;
3251 {
3252 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3253 var12 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3254 if (unlikely(var12 == NULL)) {
3255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3256 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3257 fatal_exit(1);
3258 }
3259 var10 = var12;
3260 RET_LABEL11:(void)0;
3261 }
3262 }
3263 {
3264 { /* Inline coloring#POSetConflictGraph#core (var10) on <var10:POSetConflictGraph[Object]> */
3265 var15 = var10->attrs[COLOR_nitc__coloring__POSetConflictGraph___core].val; /* _core on <var10:POSetConflictGraph[Object]> */
3266 if (unlikely(var15 == NULL)) {
3267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
3268 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 22);
3269 fatal_exit(1);
3270 }
3271 var13 = var15;
3272 RET_LABEL14:(void)0;
3273 }
3274 }
3275 {
3276 var16 = core___core__HashSet___core__abstract_collection__Collection__has(var13, var_h);
3277 }
3278 var17 = !var16;
3279 if (var17){
3280 goto BREAK_label18;
3281 } else {
3282 }
3283 {
3284 var19 = nitc___nitc__POSetGroupColorer___inherit_color(self, var_h);
3285 }
3286 var_color = var19;
3287 var_mincolor = var_color;
3288 {
3289 { /* Inline coloring#POSetGroupColorer#buckets (self) on <self:POSetGroupColorer[Object, Object]> */
3290 var22 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___buckets].val; /* _buckets on <self:POSetGroupColorer[Object, Object]> */
3291 if (unlikely(var22 == NULL)) {
3292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _buckets");
3293 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 288);
3294 fatal_exit(1);
3295 }
3296 var20 = var22;
3297 RET_LABEL21:(void)0;
3298 }
3299 }
3300 {
3301 var23 = ((val*(*)(val* self, val* p0))((((long)var20&3)?class_info[((long)var20&3)]:var20->class)->vft[COLOR_core__abstract_collection__MapRead__get_or_null]))(var20, var_h); /* get_or_null on <var20:Map[Object, Collection[Object]]>*/
3302 }
3303 var_bucket = var23;
3304 if (var_bucket == NULL) {
3305 var24 = 1; /* is null */
3306 } else {
3307 var24 = 0; /* arg is null but recv is not */
3308 }
3309 if (0) {
3310 var25 = ((short int(*)(val* self, val* p0))((((long)var_bucket&3)?class_info[((long)var_bucket&3)]:var_bucket->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_bucket, ((val*)NULL)); /* == on <var_bucket:nullable Collection[Object]>*/
3311 var24 = var25;
3312 }
3313 if (var24){
3314 goto BREAK_label18;
3315 } else {
3316 }
3317 {
3318 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3319 var28 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3320 if (unlikely(var28 == NULL)) {
3321 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3322 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3323 fatal_exit(1);
3324 }
3325 var26 = var28;
3326 RET_LABEL27:(void)0;
3327 }
3328 }
3329 {
3330 { /* Inline coloring#POSetConflictGraph#conflicts (var26) on <var26:POSetConflictGraph[Object]> */
3331 var31 = var26->attrs[COLOR_nitc__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var26:POSetConflictGraph[Object]> */
3332 if (unlikely(var31 == NULL)) {
3333 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3334 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 40);
3335 fatal_exit(1);
3336 }
3337 var29 = var31;
3338 RET_LABEL30:(void)0;
3339 }
3340 }
3341 {
3342 var32 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var29, var_h);
3343 }
3344 var_conflicts = var32;
3345 {
3346 var33 = nitc___nitc__POSetGroupColorer___poset(self);
3347 }
3348 {
3349 var34 = poset___poset__POSet____91d_93d(var33, var_h);
3350 }
3351 {
3352 var35 = poset___poset__POSetElement___greaters(var34);
3353 }
3354 var_parents = var35;
3355 var_36 = var_bucket;
3356 {
3357 var37 = ((val*(*)(val* self))((((long)var_36&3)?class_info[((long)var_36&3)]:var_36->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_36); /* iterator on <var_36:Collection[Object]>*/
3358 }
3359 var_38 = var37;
3360 for(;;) {
3361 {
3362 var39 = ((short int(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_38); /* is_ok on <var_38:Iterator[Object]>*/
3363 }
3364 if (var39){
3365 } else {
3366 goto BREAK_label40;
3367 }
3368 {
3369 var41 = ((val*(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_38); /* item on <var_38:Iterator[Object]>*/
3370 }
3371 var_e = var41;
3372 {
3373 var42 = nitc___nitc__POSetGroupColorer___next_free_color(self, var_color, var_parents);
3374 }
3375 var_color = var42;
3376 {
3377 var43 = nitc___nitc__POSetGroupColorer___next_free_color(self, var_color, var_conflicts);
3378 }
3379 var_color = var43;
3380 {
3381 { /* Inline coloring#POSetGroupColorer#colors_cache (self) on <self:POSetGroupColorer[Object, Object]> */
3382 var46 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors_cache].val; /* _colors_cache on <self:POSetGroupColorer[Object, Object]> */
3383 if (unlikely(var46 == NULL)) {
3384 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
3385 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 311);
3386 fatal_exit(1);
3387 }
3388 var44 = var46;
3389 RET_LABEL45:(void)0;
3390 }
3391 }
3392 {
3393 var47 = (val*)(var_color<<2|1);
3394 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var44, var_e, var47); /* Direct call hash_collection#HashMap#[]= on <var44:HashMap[Object, Int]>*/
3395 }
3396 {
3397 { /* Inline coloring#POSetGroupColorer#used_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3398 var50 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___used_colors].val; /* _used_colors on <self:POSetGroupColorer[Object, Object]> */
3399 if (unlikely(var50 == NULL)) {
3400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _used_colors");
3401 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 314);
3402 fatal_exit(1);
3403 }
3404 var48 = var50;
3405 RET_LABEL49:(void)0;
3406 }
3407 }
3408 {
3409 var51 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var48, var_h);
3410 }
3411 {
3412 var52 = (val*)(var_color<<2|1);
3413 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var51, var52); /* Direct call hash_collection#HashSet#add on <var51:nullable Object(HashSet[Int])>*/
3414 }
3415 {
3416 { /* Inline kernel#Int#== (var_mincolor,var_color) on <var_mincolor:Int> */
3417 var55 = var_mincolor == var_color;
3418 var53 = var55;
3419 goto RET_LABEL54;
3420 RET_LABEL54:(void)0;
3421 }
3422 }
3423 if (var53){
3424 {
3425 { /* Inline kernel#Int#+ (var_mincolor,1l) on <var_mincolor:Int> */
3426 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3427 /* <1l:Int> isa OTHER */
3428 var58 = 1; /* easy <1l:Int> isa OTHER*/
3429 if (unlikely(!var58)) {
3430 var_class_name = type_core__Int.name;
3431 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3432 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3433 fatal_exit(1);
3434 }
3435 var59 = var_mincolor + 1l;
3436 var56 = var59;
3437 goto RET_LABEL57;
3438 RET_LABEL57:(void)0;
3439 }
3440 }
3441 var_mincolor = var56;
3442 } else {
3443 }
3444 {
3445 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
3446 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3447 /* <1l:Int> isa OTHER */
3448 var62 = 1; /* easy <1l:Int> isa OTHER*/
3449 if (unlikely(!var62)) {
3450 var_class_name65 = type_core__Int.name;
3451 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
3452 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3453 fatal_exit(1);
3454 }
3455 var66 = var_color + 1l;
3456 var60 = var66;
3457 goto RET_LABEL61;
3458 RET_LABEL61:(void)0;
3459 }
3460 }
3461 var_color = var60;
3462 {
3463 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_38); /* next on <var_38:Iterator[Object]>*/
3464 }
3465 }
3466 BREAK_label40: (void)0;
3467 {
3468 ((void(*)(val* self))((((long)var_38&3)?class_info[((long)var_38&3)]:var_38->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_38); /* finish on <var_38:Iterator[Object]>*/
3469 }
3470 {
3471 { /* Inline coloring#POSetGroupColorer#min_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3472 var69 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___min_colors].val; /* _min_colors on <self:POSetGroupColorer[Object, Object]> */
3473 if (unlikely(var69 == NULL)) {
3474 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _min_colors");
3475 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 409);
3476 fatal_exit(1);
3477 }
3478 var67 = var69;
3479 RET_LABEL68:(void)0;
3480 }
3481 }
3482 {
3483 var70 = (val*)(var_mincolor<<2|1);
3484 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var67, var_h, var70); /* Direct call hash_collection#HashMap#[]= on <var67:HashMap[Object, Int]>*/
3485 }
3486 BREAK_label18: (void)0;
3487 {
3488 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:IndexedIterator[Object]>*/
3489 }
3490 }
3491 BREAK_label: (void)0;
3492 {
3493 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:IndexedIterator[Object]>*/
3494 }
3495 RET_LABEL:;
3496 }
3497 /* method coloring#POSetGroupColorer#colorize_set for (self: POSetGroupColorer[Object, Object], Set[Object]) */
3498 void nitc___nitc__POSetGroupColorer___colorize_set(val* self, val* p0) {
3499 short int var /* : Bool */;
3500 int cltype;
3501 int idtype;
3502 const struct type* type_struct;
3503 const char* var_class_name;
3504 val* var_set /* var set: Set[Object] */;
3505 val* var1 /* : POSetConflictGraph[Object] */;
3506 val* var3 /* : POSetConflictGraph[Object] */;
3507 val* var4 /* : Array[nullable Object] */;
3508 val* var6 /* : Array[nullable Object] */;
3509 val* var_ /* var : Array[Object] */;
3510 val* var7 /* : IndexedIterator[nullable Object] */;
3511 val* var_8 /* var : IndexedIterator[Object] */;
3512 short int var9 /* : Bool */;
3513 val* var10 /* : nullable Object */;
3514 val* var_h /* var h: Object */;
3515 short int var11 /* : Bool */;
3516 short int var12 /* : Bool */;
3517 long var14 /* : Int */;
3518 long var_color /* var color: Int */;
3519 long var_mincolor /* var mincolor: Int */;
3520 val* var15 /* : Map[Object, Collection[Object]] */;
3521 val* var17 /* : Map[Object, Collection[Object]] */;
3522 val* var18 /* : nullable Object */;
3523 val* var_bucket /* var bucket: nullable Collection[Object] */;
3524 short int var19 /* : Bool */;
3525 short int var20 /* : Bool */;
3526 val* var21 /* : POSet[Object] */;
3527 val* var22 /* : POSetElement[nullable Object] */;
3528 val* var23 /* : Collection[nullable Object] */;
3529 val* var_parents /* var parents: Collection[Object] */;
3530 val* var_24 /* var : Collection[Object] */;
3531 val* var25 /* : Iterator[nullable Object] */;
3532 val* var_26 /* var : Iterator[Object] */;
3533 short int var27 /* : Bool */;
3534 val* var29 /* : nullable Object */;
3535 val* var_e /* var e: Object */;
3536 long var30 /* : Int */;
3537 val* var31 /* : HashMap[Object, Int] */;
3538 val* var33 /* : HashMap[Object, Int] */;
3539 val* var34 /* : nullable Object */;
3540 val* var35 /* : HashMap[Object, HashSet[Int]] */;
3541 val* var37 /* : HashMap[Object, HashSet[Int]] */;
3542 val* var38 /* : nullable Object */;
3543 val* var39 /* : nullable Object */;
3544 short int var40 /* : Bool */;
3545 short int var42 /* : Bool */;
3546 long var43 /* : Int */;
3547 short int var45 /* : Bool */;
3548 int cltype46;
3549 int idtype47;
3550 const char* var_class_name48;
3551 long var49 /* : Int */;
3552 long var50 /* : Int */;
3553 short int var52 /* : Bool */;
3554 int cltype53;
3555 int idtype54;
3556 const char* var_class_name55;
3557 long var56 /* : Int */;
3558 val* var57 /* : HashMap[Object, Int] */;
3559 val* var59 /* : HashMap[Object, Int] */;
3560 val* var60 /* : nullable Object */;
3561 /* Covariant cast for argument 0 (set) <p0:Set[Object]> isa Set[H] */
3562 /* <p0:Set[Object]> isa Set[H] */
3563 type_struct = self->type->resolution_table->types[COLOR_core__Set__nitc__POSetGroupColorer___35dH];
3564 cltype = type_struct->color;
3565 idtype = type_struct->id;
3566 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
3567 var = 0;
3568 } else {
3569 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
3570 }
3571 if (unlikely(!var)) {
3572 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
3573 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[H]", var_class_name);
3574 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 375);
3575 fatal_exit(1);
3576 }
3577 var_set = p0;
3578 {
3579 { /* Inline coloring#POSetGroupColorer#graph (self) on <self:POSetGroupColorer[Object, Object]> */
3580 var3 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___graph].val; /* _graph on <self:POSetGroupColorer[Object, Object]> */
3581 if (unlikely(var3 == NULL)) {
3582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
3583 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 282);
3584 fatal_exit(1);
3585 }
3586 var1 = var3;
3587 RET_LABEL2:(void)0;
3588 }
3589 }
3590 {
3591 { /* Inline coloring#POSetConflictGraph#order (var1) on <var1:POSetConflictGraph[Object]> */
3592 var6 = var1->attrs[COLOR_nitc__coloring__POSetConflictGraph___order].val; /* _order on <var1:POSetConflictGraph[Object]> */
3593 if (unlikely(var6 == NULL)) {
3594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _order");
3595 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 51);
3596 fatal_exit(1);
3597 }
3598 var4 = var6;
3599 RET_LABEL5:(void)0;
3600 }
3601 }
3602 var_ = var4;
3603 {
3604 var7 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
3605 }
3606 var_8 = var7;
3607 for(;;) {
3608 {
3609 var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:IndexedIterator[Object]>*/
3610 }
3611 if (var9){
3612 } else {
3613 goto BREAK_label;
3614 }
3615 {
3616 var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:IndexedIterator[Object]>*/
3617 }
3618 var_h = var10;
3619 {
3620 var11 = ((short int(*)(val* self, val* p0))((((long)var_set&3)?class_info[((long)var_set&3)]:var_set->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var_set, var_h); /* has on <var_set:Set[Object]>*/
3621 }
3622 var12 = !var11;
3623 if (var12){
3624 goto BREAK_label13;
3625 } else {
3626 }
3627 {
3628 var14 = nitc___nitc__POSetGroupColorer___inherit_color(self, var_h);
3629 }
3630 var_color = var14;
3631 var_mincolor = var_color;
3632 {
3633 { /* Inline coloring#POSetGroupColorer#buckets (self) on <self:POSetGroupColorer[Object, Object]> */
3634 var17 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___buckets].val; /* _buckets on <self:POSetGroupColorer[Object, Object]> */
3635 if (unlikely(var17 == NULL)) {
3636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _buckets");
3637 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 288);
3638 fatal_exit(1);
3639 }
3640 var15 = var17;
3641 RET_LABEL16:(void)0;
3642 }
3643 }
3644 {
3645 var18 = ((val*(*)(val* self, val* p0))((((long)var15&3)?class_info[((long)var15&3)]:var15->class)->vft[COLOR_core__abstract_collection__MapRead__get_or_null]))(var15, var_h); /* get_or_null on <var15:Map[Object, Collection[Object]]>*/
3646 }
3647 var_bucket = var18;
3648 if (var_bucket == NULL) {
3649 var19 = 1; /* is null */
3650 } else {
3651 var19 = 0; /* arg is null but recv is not */
3652 }
3653 if (0) {
3654 var20 = ((short int(*)(val* self, val* p0))((((long)var_bucket&3)?class_info[((long)var_bucket&3)]:var_bucket->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_bucket, ((val*)NULL)); /* == on <var_bucket:nullable Collection[Object]>*/
3655 var19 = var20;
3656 }
3657 if (var19){
3658 goto BREAK_label13;
3659 } else {
3660 }
3661 {
3662 var21 = nitc___nitc__POSetGroupColorer___poset(self);
3663 }
3664 {
3665 var22 = poset___poset__POSet____91d_93d(var21, var_h);
3666 }
3667 {
3668 var23 = poset___poset__POSetElement___greaters(var22);
3669 }
3670 var_parents = var23;
3671 var_24 = var_bucket;
3672 {
3673 var25 = ((val*(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_24); /* iterator on <var_24:Collection[Object]>*/
3674 }
3675 var_26 = var25;
3676 for(;;) {
3677 {
3678 var27 = ((short int(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_26); /* is_ok on <var_26:Iterator[Object]>*/
3679 }
3680 if (var27){
3681 } else {
3682 goto BREAK_label28;
3683 }
3684 {
3685 var29 = ((val*(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_26); /* item on <var_26:Iterator[Object]>*/
3686 }
3687 var_e = var29;
3688 {
3689 var30 = nitc___nitc__POSetGroupColorer___next_free_color(self, var_color, var_parents);
3690 }
3691 var_color = var30;
3692 {
3693 { /* Inline coloring#POSetGroupColorer#colors_cache (self) on <self:POSetGroupColorer[Object, Object]> */
3694 var33 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___colors_cache].val; /* _colors_cache on <self:POSetGroupColorer[Object, Object]> */
3695 if (unlikely(var33 == NULL)) {
3696 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
3697 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 311);
3698 fatal_exit(1);
3699 }
3700 var31 = var33;
3701 RET_LABEL32:(void)0;
3702 }
3703 }
3704 {
3705 var34 = (val*)(var_color<<2|1);
3706 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var31, var_e, var34); /* Direct call hash_collection#HashMap#[]= on <var31:HashMap[Object, Int]>*/
3707 }
3708 {
3709 { /* Inline coloring#POSetGroupColorer#used_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3710 var37 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___used_colors].val; /* _used_colors on <self:POSetGroupColorer[Object, Object]> */
3711 if (unlikely(var37 == NULL)) {
3712 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _used_colors");
3713 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 314);
3714 fatal_exit(1);
3715 }
3716 var35 = var37;
3717 RET_LABEL36:(void)0;
3718 }
3719 }
3720 {
3721 var38 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var35, var_h);
3722 }
3723 {
3724 var39 = (val*)(var_color<<2|1);
3725 core___core__HashSet___core__abstract_collection__SimpleCollection__add(var38, var39); /* Direct call hash_collection#HashSet#add on <var38:nullable Object(HashSet[Int])>*/
3726 }
3727 {
3728 { /* Inline kernel#Int#== (var_mincolor,var_color) on <var_mincolor:Int> */
3729 var42 = var_mincolor == var_color;
3730 var40 = var42;
3731 goto RET_LABEL41;
3732 RET_LABEL41:(void)0;
3733 }
3734 }
3735 if (var40){
3736 {
3737 { /* Inline kernel#Int#+ (var_mincolor,1l) on <var_mincolor:Int> */
3738 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3739 /* <1l:Int> isa OTHER */
3740 var45 = 1; /* easy <1l:Int> isa OTHER*/
3741 if (unlikely(!var45)) {
3742 var_class_name48 = type_core__Int.name;
3743 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
3744 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3745 fatal_exit(1);
3746 }
3747 var49 = var_mincolor + 1l;
3748 var43 = var49;
3749 goto RET_LABEL44;
3750 RET_LABEL44:(void)0;
3751 }
3752 }
3753 var_mincolor = var43;
3754 } else {
3755 }
3756 {
3757 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
3758 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3759 /* <1l:Int> isa OTHER */
3760 var52 = 1; /* easy <1l:Int> isa OTHER*/
3761 if (unlikely(!var52)) {
3762 var_class_name55 = type_core__Int.name;
3763 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
3764 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
3765 fatal_exit(1);
3766 }
3767 var56 = var_color + 1l;
3768 var50 = var56;
3769 goto RET_LABEL51;
3770 RET_LABEL51:(void)0;
3771 }
3772 }
3773 var_color = var50;
3774 {
3775 ((void(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_26); /* next on <var_26:Iterator[Object]>*/
3776 }
3777 }
3778 BREAK_label28: (void)0;
3779 {
3780 ((void(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_26); /* finish on <var_26:Iterator[Object]>*/
3781 }
3782 {
3783 { /* Inline coloring#POSetGroupColorer#min_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3784 var59 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___min_colors].val; /* _min_colors on <self:POSetGroupColorer[Object, Object]> */
3785 if (unlikely(var59 == NULL)) {
3786 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _min_colors");
3787 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 409);
3788 fatal_exit(1);
3789 }
3790 var57 = var59;
3791 RET_LABEL58:(void)0;
3792 }
3793 }
3794 {
3795 var60 = (val*)(var_mincolor<<2|1);
3796 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var57, var_h, var60); /* Direct call hash_collection#HashMap#[]= on <var57:HashMap[Object, Int]>*/
3797 }
3798 BREAK_label13: (void)0;
3799 {
3800 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:IndexedIterator[Object]>*/
3801 }
3802 }
3803 BREAK_label: (void)0;
3804 {
3805 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:IndexedIterator[Object]>*/
3806 }
3807 RET_LABEL:;
3808 }
3809 /* method coloring#POSetGroupColorer#inherit_color for (self: POSetGroupColorer[Object, Object], Object): Int */
3810 long nitc___nitc__POSetGroupColorer___inherit_color(val* self, val* p0) {
3811 long var /* : Int */;
3812 short int var1 /* : Bool */;
3813 int cltype;
3814 int idtype;
3815 const struct type* type_struct;
3816 const char* var_class_name;
3817 val* var_h /* var h: Object */;
3818 long var_res /* var res: Int */;
3819 val* var2 /* : POSet[Object] */;
3820 val* var3 /* : POSetElement[nullable Object] */;
3821 val* var4 /* : Collection[nullable Object] */;
3822 val* var_ /* var : Collection[Object] */;
3823 val* var5 /* : Iterator[nullable Object] */;
3824 val* var_6 /* var : Iterator[Object] */;
3825 short int var7 /* : Bool */;
3826 val* var8 /* : nullable Object */;
3827 val* var_p /* var p: Object */;
3828 val* var9 /* : HashMap[Object, Int] */;
3829 val* var11 /* : HashMap[Object, Int] */;
3830 val* var12 /* : nullable Object */;
3831 long var13 /* : Int */;
3832 long var_m /* var m: Int */;
3833 short int var14 /* : Bool */;
3834 short int var16 /* : Bool */;
3835 int cltype17;
3836 int idtype18;
3837 const char* var_class_name19;
3838 short int var20 /* : Bool */;
3839 val* var21 /* : HashMap[Object, Int] */;
3840 val* var23 /* : HashMap[Object, Int] */;
3841 val* var24 /* : nullable Object */;
3842 /* Covariant cast for argument 0 (h) <p0:Object> isa H */
3843 /* <p0:Object> isa H */
3844 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetGroupColorer___35dH];
3845 cltype = type_struct->color;
3846 idtype = type_struct->id;
3847 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
3848 var1 = 0;
3849 } else {
3850 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
3851 }
3852 if (unlikely(!var1)) {
3853 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
3854 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
3855 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 397);
3856 fatal_exit(1);
3857 }
3858 var_h = p0;
3859 var_res = 0l;
3860 {
3861 var2 = nitc___nitc__POSetGroupColorer___poset(self);
3862 }
3863 {
3864 var3 = poset___poset__POSet____91d_93d(var2, var_h);
3865 }
3866 {
3867 var4 = poset___poset__POSetElement___direct_greaters(var3);
3868 }
3869 var_ = var4;
3870 {
3871 var5 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
3872 }
3873 var_6 = var5;
3874 for(;;) {
3875 {
3876 var7 = ((short int(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_6); /* is_ok on <var_6:Iterator[Object]>*/
3877 }
3878 if (var7){
3879 } else {
3880 goto BREAK_label;
3881 }
3882 {
3883 var8 = ((val*(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_6); /* item on <var_6:Iterator[Object]>*/
3884 }
3885 var_p = var8;
3886 {
3887 { /* Inline coloring#POSetGroupColorer#min_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3888 var11 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___min_colors].val; /* _min_colors on <self:POSetGroupColorer[Object, Object]> */
3889 if (unlikely(var11 == NULL)) {
3890 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _min_colors");
3891 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 409);
3892 fatal_exit(1);
3893 }
3894 var9 = var11;
3895 RET_LABEL10:(void)0;
3896 }
3897 }
3898 {
3899 var12 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var9, var_p);
3900 }
3901 var13 = (long)(var12)>>2;
3902 var_m = var13;
3903 {
3904 { /* Inline kernel#Int#> (var_m,var_res) on <var_m:Int> */
3905 /* Covariant cast for argument 0 (i) <var_res:Int> isa OTHER */
3906 /* <var_res:Int> isa OTHER */
3907 var16 = 1; /* easy <var_res:Int> isa OTHER*/
3908 if (unlikely(!var16)) {
3909 var_class_name19 = type_core__Int.name;
3910 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name19);
3911 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
3912 fatal_exit(1);
3913 }
3914 var20 = var_m > var_res;
3915 var14 = var20;
3916 goto RET_LABEL15;
3917 RET_LABEL15:(void)0;
3918 }
3919 }
3920 if (var14){
3921 var_res = var_m;
3922 } else {
3923 }
3924 {
3925 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_6); /* next on <var_6:Iterator[Object]>*/
3926 }
3927 }
3928 BREAK_label: (void)0;
3929 {
3930 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_6); /* finish on <var_6:Iterator[Object]>*/
3931 }
3932 {
3933 { /* Inline coloring#POSetGroupColorer#min_colors (self) on <self:POSetGroupColorer[Object, Object]> */
3934 var23 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___min_colors].val; /* _min_colors on <self:POSetGroupColorer[Object, Object]> */
3935 if (unlikely(var23 == NULL)) {
3936 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _min_colors");
3937 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 409);
3938 fatal_exit(1);
3939 }
3940 var21 = var23;
3941 RET_LABEL22:(void)0;
3942 }
3943 }
3944 {
3945 var24 = (val*)(var_res<<2|1);
3946 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var21, var_h, var24); /* Direct call hash_collection#HashMap#[]= on <var21:HashMap[Object, Int]>*/
3947 }
3948 var = var_res;
3949 goto RET_LABEL;
3950 RET_LABEL:;
3951 return var;
3952 }
3953 /* method coloring#POSetGroupColorer#min_colors for (self: POSetGroupColorer[Object, Object]): HashMap[Object, Int] */
3954 val* nitc___nitc__POSetGroupColorer___min_colors(val* self) {
3955 val* var /* : HashMap[Object, Int] */;
3956 val* var1 /* : HashMap[Object, Int] */;
3957 var1 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___min_colors].val; /* _min_colors on <self:POSetGroupColorer[Object, Object]> */
3958 if (unlikely(var1 == NULL)) {
3959 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _min_colors");
3960 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 409);
3961 fatal_exit(1);
3962 }
3963 var = var1;
3964 RET_LABEL:;
3965 return var;
3966 }
3967 /* method coloring#POSetGroupColorer#next_free_color for (self: POSetGroupColorer[Object, Object], Int, Collection[Object]): Int */
3968 long nitc___nitc__POSetGroupColorer___next_free_color(val* self, long p0, val* p1) {
3969 long var /* : Int */;
3970 short int var1 /* : Bool */;
3971 int cltype;
3972 int idtype;
3973 const struct type* type_struct;
3974 const char* var_class_name;
3975 long var_color /* var color: Int */;
3976 val* var_set /* var set: Collection[Object] */;
3977 val* var_ /* var : Collection[Object] */;
3978 val* var2 /* : Iterator[nullable Object] */;
3979 val* var_3 /* var : Iterator[Object] */;
3980 short int var4 /* : Bool */;
3981 val* var5 /* : nullable Object */;
3982 val* var_h /* var h: Object */;
3983 val* var6 /* : HashMap[Object, HashSet[Int]] */;
3984 val* var8 /* : HashMap[Object, HashSet[Int]] */;
3985 val* var9 /* : nullable Object */;
3986 short int var10 /* : Bool */;
3987 val* var11 /* : nullable Object */;
3988 long var12 /* : Int */;
3989 short int var14 /* : Bool */;
3990 int cltype15;
3991 int idtype16;
3992 const char* var_class_name17;
3993 long var18 /* : Int */;
3994 /* Covariant cast for argument 1 (set) <p1:Collection[Object]> isa Collection[H] */
3995 /* <p1:Collection[Object]> isa Collection[H] */
3996 type_struct = self->type->resolution_table->types[COLOR_core__Collection__nitc__POSetGroupColorer___35dH];
3997 cltype = type_struct->color;
3998 idtype = type_struct->id;
3999 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
4000 var1 = 0;
4001 } else {
4002 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
4003 }
4004 if (unlikely(!var1)) {
4005 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
4006 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[H]", var_class_name);
4007 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 416);
4008 fatal_exit(1);
4009 }
4010 var_color = p0;
4011 var_set = p1;
4012 for(;;) {
4013 var_ = var_set;
4014 {
4015 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
4016 }
4017 var_3 = var2;
4018 for(;;) {
4019 {
4020 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_3); /* is_ok on <var_3:Iterator[Object]>*/
4021 }
4022 if (var4){
4023 } else {
4024 goto BREAK_label;
4025 }
4026 {
4027 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_3); /* item on <var_3:Iterator[Object]>*/
4028 }
4029 var_h = var5;
4030 {
4031 { /* Inline coloring#POSetGroupColorer#used_colors (self) on <self:POSetGroupColorer[Object, Object]> */
4032 var8 = self->attrs[COLOR_nitc__coloring__POSetGroupColorer___used_colors].val; /* _used_colors on <self:POSetGroupColorer[Object, Object]> */
4033 if (unlikely(var8 == NULL)) {
4034 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _used_colors");
4035 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 314);
4036 fatal_exit(1);
4037 }
4038 var6 = var8;
4039 RET_LABEL7:(void)0;
4040 }
4041 }
4042 {
4043 var9 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var6, var_h);
4044 }
4045 {
4046 var11 = (val*)(var_color<<2|1);
4047 var10 = core___core__HashSet___core__abstract_collection__Collection__has(var9, var11);
4048 }
4049 if (var10){
4050 {
4051 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
4052 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4053 /* <1l:Int> isa OTHER */
4054 var14 = 1; /* easy <1l:Int> isa OTHER*/
4055 if (unlikely(!var14)) {
4056 var_class_name17 = type_core__Int.name;
4057 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
4058 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4059 fatal_exit(1);
4060 }
4061 var18 = var_color + 1l;
4062 var12 = var18;
4063 goto RET_LABEL13;
4064 RET_LABEL13:(void)0;
4065 }
4066 }
4067 var_color = var12;
4068 goto BREAK_;
4069 } else {
4070 }
4071 {
4072 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_3); /* next on <var_3:Iterator[Object]>*/
4073 }
4074 }
4075 BREAK_label: (void)0;
4076 {
4077 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_3); /* finish on <var_3:Iterator[Object]>*/
4078 }
4079 goto BREAK_19;
4080 BREAK_: (void)0;
4081 }
4082 BREAK_19: (void)0;
4083 var = var_color;
4084 goto RET_LABEL;
4085 RET_LABEL:;
4086 return var;
4087 }
4088 /* method coloring#POSetGroupColorer#init for (self: POSetGroupColorer[Object, Object]) */
4089 void nitc___nitc__POSetGroupColorer___core__kernel__Object__init(val* self) {
4090 {
4091 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__POSetGroupColorer___core__kernel__Object__init]))(self); /* init on <self:POSetGroupColorer[Object, Object]>*/
4092 }
4093 RET_LABEL:;
4094 }
4095 /* method coloring#BucketsColorer#colors for (self: BucketsColorer[Object, Object]): HashMap[Object, Int] */
4096 val* nitc___nitc__BucketsColorer___colors(val* self) {
4097 val* var /* : HashMap[Object, Int] */;
4098 val* var1 /* : HashMap[Object, Int] */;
4099 var1 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4100 if (unlikely(var1 == NULL)) {
4101 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4102 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4103 fatal_exit(1);
4104 }
4105 var = var1;
4106 RET_LABEL:;
4107 return var;
4108 }
4109 /* method coloring#BucketsColorer#conflicts for (self: BucketsColorer[Object, Object]): HashMap[Object, Set[Object]] */
4110 val* nitc___nitc__BucketsColorer___conflicts(val* self) {
4111 val* var /* : HashMap[Object, Set[Object]] */;
4112 val* var1 /* : HashMap[Object, Set[Object]] */;
4113 var1 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4114 if (unlikely(var1 == NULL)) {
4115 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4116 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4117 fatal_exit(1);
4118 }
4119 var = var1;
4120 RET_LABEL:;
4121 return var;
4122 }
4123 /* method coloring#BucketsColorer#colorize for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
4124 val* nitc___nitc__BucketsColorer___colorize(val* self, val* p0) {
4125 val* var /* : Map[Object, Int] */;
4126 short int var1 /* : Bool */;
4127 int cltype;
4128 int idtype;
4129 const struct type* type_struct;
4130 const char* var_class_name;
4131 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4132 long var_min_color /* var min_color: Int */;
4133 val* var_ /* var : Map[Object, Set[Object]] */;
4134 val* var2 /* : MapIterator[nullable Object, nullable Object] */;
4135 val* var_3 /* var : MapIterator[Object, Set[Object]] */;
4136 short int var4 /* : Bool */;
4137 val* var5 /* : nullable Object */;
4138 val* var_holder /* var holder: Object */;
4139 val* var6 /* : nullable Object */;
4140 val* var_hbuckets /* var hbuckets: Set[Object] */;
4141 val* var_7 /* var : Set[Object] */;
4142 val* var8 /* : Iterator[nullable Object] */;
4143 val* var_9 /* var : Iterator[Object] */;
4144 short int var10 /* : Bool */;
4145 val* var12 /* : nullable Object */;
4146 val* var_bucket /* var bucket: Object */;
4147 val* var13 /* : HashMap[Object, Int] */;
4148 val* var15 /* : HashMap[Object, Int] */;
4149 short int var16 /* : Bool */;
4150 long var_color /* var color: Int */;
4151 short int var18 /* : Bool */;
4152 short int var19 /* : Bool */;
4153 long var20 /* : Int */;
4154 short int var22 /* : Bool */;
4155 int cltype23;
4156 int idtype24;
4157 const char* var_class_name25;
4158 long var26 /* : Int */;
4159 val* var28 /* : HashMap[Object, Int] */;
4160 val* var30 /* : HashMap[Object, Int] */;
4161 val* var31 /* : nullable Object */;
4162 val* var33 /* : HashMap[Object, Int] */;
4163 val* var35 /* : HashMap[Object, Int] */;
4164 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4165 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4166 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__BucketsColorer___35dH__core__Set__nitc__BucketsColorer___35dE];
4167 cltype = type_struct->color;
4168 idtype = type_struct->id;
4169 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
4170 var1 = 0;
4171 } else {
4172 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
4173 }
4174 if (unlikely(!var1)) {
4175 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
4176 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
4177 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 461);
4178 fatal_exit(1);
4179 }
4180 var_buckets = p0;
4181 {
4182 nitc___nitc__BucketsColorer___compute_conflicts(self, var_buckets); /* Direct call coloring#BucketsColorer#compute_conflicts on <self:BucketsColorer[Object, Object]>*/
4183 }
4184 var_min_color = 0l;
4185 var_ = var_buckets;
4186 {
4187 var2 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:Map[Object, Set[Object]]>*/
4188 }
4189 var_3 = var2;
4190 for(;;) {
4191 {
4192 var4 = ((short int(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_3); /* is_ok on <var_3:MapIterator[Object, Set[Object]]>*/
4193 }
4194 if (var4){
4195 } else {
4196 goto BREAK_label;
4197 }
4198 {
4199 var5 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_3); /* key on <var_3:MapIterator[Object, Set[Object]]>*/
4200 }
4201 var_holder = var5;
4202 {
4203 var6 = ((val*(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_3); /* item on <var_3:MapIterator[Object, Set[Object]]>*/
4204 }
4205 var_hbuckets = var6;
4206 var_7 = var_hbuckets;
4207 {
4208 var8 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_7); /* iterator on <var_7:Set[Object]>*/
4209 }
4210 var_9 = var8;
4211 for(;;) {
4212 {
4213 var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:Iterator[Object]>*/
4214 }
4215 if (var10){
4216 } else {
4217 goto BREAK_label11;
4218 }
4219 {
4220 var12 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:Iterator[Object]>*/
4221 }
4222 var_bucket = var12;
4223 {
4224 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
4225 var15 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4226 if (unlikely(var15 == NULL)) {
4227 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4228 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4229 fatal_exit(1);
4230 }
4231 var13 = var15;
4232 RET_LABEL14:(void)0;
4233 }
4234 }
4235 {
4236 var16 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var13, var_bucket);
4237 }
4238 if (var16){
4239 goto BREAK_label17;
4240 } else {
4241 }
4242 var_color = var_min_color;
4243 for(;;) {
4244 {
4245 var18 = nitc___nitc__BucketsColorer___is_color_free(self, var_bucket, var_color);
4246 }
4247 var19 = !var18;
4248 if (var19){
4249 {
4250 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
4251 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4252 /* <1l:Int> isa OTHER */
4253 var22 = 1; /* easy <1l:Int> isa OTHER*/
4254 if (unlikely(!var22)) {
4255 var_class_name25 = type_core__Int.name;
4256 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
4257 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
4258 fatal_exit(1);
4259 }
4260 var26 = var_color + 1l;
4261 var20 = var26;
4262 goto RET_LABEL21;
4263 RET_LABEL21:(void)0;
4264 }
4265 }
4266 var_color = var20;
4267 } else {
4268 goto BREAK_label27;
4269 }
4270 }
4271 BREAK_label27: (void)0;
4272 {
4273 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
4274 var30 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4275 if (unlikely(var30 == NULL)) {
4276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4277 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4278 fatal_exit(1);
4279 }
4280 var28 = var30;
4281 RET_LABEL29:(void)0;
4282 }
4283 }
4284 {
4285 var31 = (val*)(var_color<<2|1);
4286 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var28, var_bucket, var31); /* Direct call hash_collection#HashMap#[]= on <var28:HashMap[Object, Int]>*/
4287 }
4288 var_color = var_min_color;
4289 BREAK_label17: (void)0;
4290 {
4291 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:Iterator[Object]>*/
4292 }
4293 }
4294 BREAK_label11: (void)0;
4295 {
4296 ((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:Iterator[Object]>*/
4297 }
4298 {
4299 ((void(*)(val* self))((((long)var_3&3)?class_info[((long)var_3&3)]:var_3->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_3); /* next on <var_3:MapIterator[Object, Set[Object]]>*/
4300 }
4301 }
4302 BREAK_label: (void)0;
4303 {
4304 { /* Inline abstract_collection#MapIterator#finish (var_3) on <var_3:MapIterator[Object, Set[Object]]> */
4305 RET_LABEL32:(void)0;
4306 }
4307 }
4308 {
4309 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
4310 var35 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4311 if (unlikely(var35 == NULL)) {
4312 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4313 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4314 fatal_exit(1);
4315 }
4316 var33 = var35;
4317 RET_LABEL34:(void)0;
4318 }
4319 }
4320 var = var33;
4321 goto RET_LABEL;
4322 RET_LABEL:;
4323 return var;
4324 }
4325 /* method coloring#BucketsColorer#is_color_free for (self: BucketsColorer[Object, Object], Object, Int): Bool */
4326 short int nitc___nitc__BucketsColorer___is_color_free(val* self, val* p0, long p1) {
4327 short int var /* : Bool */;
4328 short int var1 /* : Bool */;
4329 int cltype;
4330 int idtype;
4331 const struct type* type_struct;
4332 const char* var_class_name;
4333 val* var_bucket /* var bucket: Object */;
4334 long var_color /* var color: Int */;
4335 val* var2 /* : HashMap[Object, Set[Object]] */;
4336 val* var4 /* : HashMap[Object, Set[Object]] */;
4337 short int var5 /* : Bool */;
4338 val* var6 /* : HashMap[Object, Set[Object]] */;
4339 val* var8 /* : HashMap[Object, Set[Object]] */;
4340 val* var9 /* : nullable Object */;
4341 val* var_ /* var : Set[Object] */;
4342 val* var10 /* : Iterator[nullable Object] */;
4343 val* var_11 /* var : Iterator[Object] */;
4344 short int var12 /* : Bool */;
4345 val* var13 /* : nullable Object */;
4346 val* var_other /* var other: Object */;
4347 short int var14 /* : Bool */;
4348 val* var15 /* : HashMap[Object, Int] */;
4349 val* var17 /* : HashMap[Object, Int] */;
4350 short int var18 /* : Bool */;
4351 short int var_19 /* var : Bool */;
4352 val* var20 /* : HashMap[Object, Int] */;
4353 val* var22 /* : HashMap[Object, Int] */;
4354 val* var23 /* : nullable Object */;
4355 short int var24 /* : Bool */;
4356 short int var26 /* : Bool */;
4357 long var27 /* : Int */;
4358 /* Covariant cast for argument 0 (bucket) <p0:Object> isa E */
4359 /* <p0:Object> isa E */
4360 type_struct = self->type->resolution_table->types[COLOR_nitc__BucketsColorer___35dE];
4361 cltype = type_struct->color;
4362 idtype = type_struct->id;
4363 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
4364 var1 = 0;
4365 } else {
4366 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
4367 }
4368 if (unlikely(!var1)) {
4369 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
4370 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
4371 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 479);
4372 fatal_exit(1);
4373 }
4374 var_bucket = p0;
4375 var_color = p1;
4376 {
4377 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4378 var4 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4379 if (unlikely(var4 == NULL)) {
4380 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4381 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4382 fatal_exit(1);
4383 }
4384 var2 = var4;
4385 RET_LABEL3:(void)0;
4386 }
4387 }
4388 {
4389 var5 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var2, var_bucket);
4390 }
4391 if (var5){
4392 {
4393 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4394 var8 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4395 if (unlikely(var8 == NULL)) {
4396 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4397 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4398 fatal_exit(1);
4399 }
4400 var6 = var8;
4401 RET_LABEL7:(void)0;
4402 }
4403 }
4404 {
4405 var9 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var6, var_bucket);
4406 }
4407 var_ = var9;
4408 {
4409 var10 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[Object]>*/
4410 }
4411 var_11 = var10;
4412 for(;;) {
4413 {
4414 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:Iterator[Object]>*/
4415 }
4416 if (var12){
4417 } else {
4418 goto BREAK_label;
4419 }
4420 {
4421 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:Iterator[Object]>*/
4422 }
4423 var_other = var13;
4424 {
4425 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
4426 var17 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4427 if (unlikely(var17 == NULL)) {
4428 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4429 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4430 fatal_exit(1);
4431 }
4432 var15 = var17;
4433 RET_LABEL16:(void)0;
4434 }
4435 }
4436 {
4437 var18 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var15, var_other);
4438 }
4439 var_19 = var18;
4440 if (var18){
4441 {
4442 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
4443 var22 = self->attrs[COLOR_nitc__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
4444 if (unlikely(var22 == NULL)) {
4445 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4446 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 458);
4447 fatal_exit(1);
4448 }
4449 var20 = var22;
4450 RET_LABEL21:(void)0;
4451 }
4452 }
4453 {
4454 var23 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var20, var_other);
4455 }
4456 {
4457 { /* Inline kernel#Int#== (var23,var_color) on <var23:nullable Object(Int)> */
4458 var27 = (long)(var23)>>2;
4459 var26 = var27 == var_color;
4460 var24 = var26;
4461 goto RET_LABEL25;
4462 RET_LABEL25:(void)0;
4463 }
4464 }
4465 var14 = var24;
4466 } else {
4467 var14 = var_19;
4468 }
4469 if (var14){
4470 var = 0;
4471 goto RET_LABEL;
4472 } else {
4473 }
4474 {
4475 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:Iterator[Object]>*/
4476 }
4477 }
4478 BREAK_label: (void)0;
4479 {
4480 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:Iterator[Object]>*/
4481 }
4482 } else {
4483 }
4484 var = 1;
4485 goto RET_LABEL;
4486 RET_LABEL:;
4487 return var;
4488 }
4489 /* method coloring#BucketsColorer#compute_conflicts for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]) */
4490 void nitc___nitc__BucketsColorer___compute_conflicts(val* self, val* p0) {
4491 short int var /* : Bool */;
4492 int cltype;
4493 int idtype;
4494 const struct type* type_struct;
4495 const char* var_class_name;
4496 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4497 val* var1 /* : HashMap[Object, Set[Object]] */;
4498 val* var3 /* : HashMap[Object, Set[Object]] */;
4499 val* var_ /* var : Map[Object, Set[Object]] */;
4500 val* var4 /* : MapIterator[nullable Object, nullable Object] */;
4501 val* var_5 /* var : MapIterator[Object, Set[Object]] */;
4502 short int var6 /* : Bool */;
4503 val* var7 /* : nullable Object */;
4504 val* var_holder /* var holder: Object */;
4505 val* var8 /* : nullable Object */;
4506 val* var_hbuckets /* var hbuckets: Set[Object] */;
4507 val* var_9 /* var : Set[Object] */;
4508 val* var10 /* : Iterator[nullable Object] */;
4509 val* var_11 /* var : Iterator[Object] */;
4510 short int var12 /* : Bool */;
4511 val* var14 /* : nullable Object */;
4512 val* var_bucket /* var bucket: Object */;
4513 val* var15 /* : HashMap[Object, Set[Object]] */;
4514 val* var17 /* : HashMap[Object, Set[Object]] */;
4515 short int var18 /* : Bool */;
4516 short int var19 /* : Bool */;
4517 val* var20 /* : HashMap[Object, Set[Object]] */;
4518 val* var22 /* : HashMap[Object, Set[Object]] */;
4519 val* var23 /* : HashSet[Object] */;
4520 val* var_24 /* var : Set[Object] */;
4521 val* var25 /* : Iterator[nullable Object] */;
4522 val* var_26 /* var : Iterator[Object] */;
4523 short int var27 /* : Bool */;
4524 val* var29 /* : nullable Object */;
4525 val* var_obucket /* var obucket: Object */;
4526 short int var30 /* : Bool */;
4527 val* var32 /* : HashMap[Object, Set[Object]] */;
4528 val* var34 /* : HashMap[Object, Set[Object]] */;
4529 short int var35 /* : Bool */;
4530 short int var36 /* : Bool */;
4531 val* var37 /* : HashMap[Object, Set[Object]] */;
4532 val* var39 /* : HashMap[Object, Set[Object]] */;
4533 val* var40 /* : HashSet[Object] */;
4534 val* var41 /* : HashMap[Object, Set[Object]] */;
4535 val* var43 /* : HashMap[Object, Set[Object]] */;
4536 val* var44 /* : nullable Object */;
4537 val* var45 /* : HashMap[Object, Set[Object]] */;
4538 val* var47 /* : HashMap[Object, Set[Object]] */;
4539 val* var48 /* : nullable Object */;
4540 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4541 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4542 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__BucketsColorer___35dH__core__Set__nitc__BucketsColorer___35dE];
4543 cltype = type_struct->color;
4544 idtype = type_struct->id;
4545 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
4546 var = 0;
4547 } else {
4548 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
4549 }
4550 if (unlikely(!var)) {
4551 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
4552 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
4553 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 488);
4554 fatal_exit(1);
4555 }
4556 var_buckets = p0;
4557 {
4558 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4559 var3 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4560 if (unlikely(var3 == NULL)) {
4561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4562 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4563 fatal_exit(1);
4564 }
4565 var1 = var3;
4566 RET_LABEL2:(void)0;
4567 }
4568 }
4569 {
4570 core___core__HashMap___core__abstract_collection__Map__clear(var1); /* Direct call hash_collection#HashMap#clear on <var1:HashMap[Object, Set[Object]]>*/
4571 }
4572 var_ = var_buckets;
4573 {
4574 var4 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:Map[Object, Set[Object]]>*/
4575 }
4576 var_5 = var4;
4577 for(;;) {
4578 {
4579 var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_5); /* is_ok on <var_5:MapIterator[Object, Set[Object]]>*/
4580 }
4581 if (var6){
4582 } else {
4583 goto BREAK_label;
4584 }
4585 {
4586 var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_5); /* key on <var_5:MapIterator[Object, Set[Object]]>*/
4587 }
4588 var_holder = var7;
4589 {
4590 var8 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_5); /* item on <var_5:MapIterator[Object, Set[Object]]>*/
4591 }
4592 var_hbuckets = var8;
4593 var_9 = var_hbuckets;
4594 {
4595 var10 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_9); /* iterator on <var_9:Set[Object]>*/
4596 }
4597 var_11 = var10;
4598 for(;;) {
4599 {
4600 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:Iterator[Object]>*/
4601 }
4602 if (var12){
4603 } else {
4604 goto BREAK_label13;
4605 }
4606 {
4607 var14 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:Iterator[Object]>*/
4608 }
4609 var_bucket = var14;
4610 {
4611 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4612 var17 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4613 if (unlikely(var17 == NULL)) {
4614 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4615 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4616 fatal_exit(1);
4617 }
4618 var15 = var17;
4619 RET_LABEL16:(void)0;
4620 }
4621 }
4622 {
4623 var18 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var15, var_bucket);
4624 }
4625 var19 = !var18;
4626 if (var19){
4627 {
4628 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4629 var22 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4630 if (unlikely(var22 == NULL)) {
4631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4632 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4633 fatal_exit(1);
4634 }
4635 var20 = var22;
4636 RET_LABEL21:(void)0;
4637 }
4638 }
4639 var23 = NEW_core__HashSet(self->type->resolution_table->types[COLOR_core__HashSet__nitc__BucketsColorer___35dE]);
4640 {
4641 core___core__HashSet___core__kernel__Object__init(var23); /* Direct call hash_collection#HashSet#init on <var23:HashSet[Object]>*/
4642 }
4643 {
4644 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var20, var_bucket, var23); /* Direct call hash_collection#HashMap#[]= on <var20:HashMap[Object, Set[Object]]>*/
4645 }
4646 } else {
4647 }
4648 var_24 = var_hbuckets;
4649 {
4650 var25 = ((val*(*)(val* self))((((long)var_24&3)?class_info[((long)var_24&3)]:var_24->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_24); /* iterator on <var_24:Set[Object]>*/
4651 }
4652 var_26 = var25;
4653 for(;;) {
4654 {
4655 var27 = ((short int(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_26); /* is_ok on <var_26:Iterator[Object]>*/
4656 }
4657 if (var27){
4658 } else {
4659 goto BREAK_label28;
4660 }
4661 {
4662 var29 = ((val*(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_26); /* item on <var_26:Iterator[Object]>*/
4663 }
4664 var_obucket = var29;
4665 {
4666 var30 = ((short int(*)(val* self, val* p0))((((long)var_obucket&3)?class_info[((long)var_obucket&3)]:var_obucket->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_obucket, var_bucket); /* == on <var_obucket:Object>*/
4667 }
4668 if (var30){
4669 goto BREAK_label31;
4670 } else {
4671 }
4672 {
4673 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4674 var34 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4675 if (unlikely(var34 == NULL)) {
4676 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4677 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4678 fatal_exit(1);
4679 }
4680 var32 = var34;
4681 RET_LABEL33:(void)0;
4682 }
4683 }
4684 {
4685 var35 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var32, var_obucket);
4686 }
4687 var36 = !var35;
4688 if (var36){
4689 {
4690 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4691 var39 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4692 if (unlikely(var39 == NULL)) {
4693 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4694 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4695 fatal_exit(1);
4696 }
4697 var37 = var39;
4698 RET_LABEL38:(void)0;
4699 }
4700 }
4701 var40 = NEW_core__HashSet(self->type->resolution_table->types[COLOR_core__HashSet__nitc__BucketsColorer___35dE]);
4702 {
4703 core___core__HashSet___core__kernel__Object__init(var40); /* Direct call hash_collection#HashSet#init on <var40:HashSet[Object]>*/
4704 }
4705 {
4706 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var37, var_obucket, var40); /* Direct call hash_collection#HashMap#[]= on <var37:HashMap[Object, Set[Object]]>*/
4707 }
4708 } else {
4709 }
4710 {
4711 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4712 var43 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4713 if (unlikely(var43 == NULL)) {
4714 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4715 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4716 fatal_exit(1);
4717 }
4718 var41 = var43;
4719 RET_LABEL42:(void)0;
4720 }
4721 }
4722 {
4723 var44 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var41, var_bucket);
4724 }
4725 {
4726 ((void(*)(val* self, val* p0))((((long)var44&3)?class_info[((long)var44&3)]:var44->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var44, var_obucket); /* add on <var44:nullable Object(Set[Object])>*/
4727 }
4728 {
4729 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
4730 var47 = self->attrs[COLOR_nitc__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
4731 if (unlikely(var47 == NULL)) {
4732 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4733 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 459);
4734 fatal_exit(1);
4735 }
4736 var45 = var47;
4737 RET_LABEL46:(void)0;
4738 }
4739 }
4740 {
4741 var48 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var45, var_obucket);
4742 }
4743 {
4744 ((void(*)(val* self, val* p0))((((long)var48&3)?class_info[((long)var48&3)]:var48->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var48, var_bucket); /* add on <var48:nullable Object(Set[Object])>*/
4745 }
4746 BREAK_label31: (void)0;
4747 {
4748 ((void(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_26); /* next on <var_26:Iterator[Object]>*/
4749 }
4750 }
4751 BREAK_label28: (void)0;
4752 {
4753 ((void(*)(val* self))((((long)var_26&3)?class_info[((long)var_26&3)]:var_26->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_26); /* finish on <var_26:Iterator[Object]>*/
4754 }
4755 {
4756 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:Iterator[Object]>*/
4757 }
4758 }
4759 BREAK_label13: (void)0;
4760 {
4761 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:Iterator[Object]>*/
4762 }
4763 {
4764 ((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_5); /* next on <var_5:MapIterator[Object, Set[Object]]>*/
4765 }
4766 }
4767 BREAK_label: (void)0;
4768 {
4769 { /* Inline abstract_collection#MapIterator#finish (var_5) on <var_5:MapIterator[Object, Set[Object]]> */
4770 RET_LABEL49:(void)0;
4771 }
4772 }
4773 RET_LABEL:;
4774 }
4775 /* method coloring#POSetBucketsColorer#colors for (self: POSetBucketsColorer[Object, Object]): HashMap[Object, Int] */
4776 val* nitc___nitc__POSetBucketsColorer___colors(val* self) {
4777 val* var /* : HashMap[Object, Int] */;
4778 val* var1 /* : HashMap[Object, Int] */;
4779 var1 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4780 if (unlikely(var1 == NULL)) {
4781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4782 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
4783 fatal_exit(1);
4784 }
4785 var = var1;
4786 RET_LABEL:;
4787 return var;
4788 }
4789 /* method coloring#POSetBucketsColorer#poset for (self: POSetBucketsColorer[Object, Object]): POSet[Object] */
4790 val* nitc___nitc__POSetBucketsColorer___poset(val* self) {
4791 val* var /* : POSet[Object] */;
4792 val* var1 /* : POSet[Object] */;
4793 var1 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
4794 if (unlikely(var1 == NULL)) {
4795 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
4796 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 510);
4797 fatal_exit(1);
4798 }
4799 var = var1;
4800 RET_LABEL:;
4801 return var;
4802 }
4803 /* method coloring#POSetBucketsColorer#poset= for (self: POSetBucketsColorer[Object, Object], POSet[Object]) */
4804 void nitc___nitc__POSetBucketsColorer___poset_61d(val* self, val* p0) {
4805 short int var /* : Bool */;
4806 int cltype;
4807 int idtype;
4808 const struct type* type_struct;
4809 const char* var_class_name;
4810 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[H] */
4811 /* <p0:POSet[Object]> isa POSet[H] */
4812 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nitc__POSetBucketsColorer___35dH];
4813 cltype = type_struct->color;
4814 idtype = type_struct->id;
4815 if(cltype >= p0->type->table_size) {
4816 var = 0;
4817 } else {
4818 var = p0->type->type_table[cltype] == idtype;
4819 }
4820 if (unlikely(!var)) {
4821 var_class_name = p0 == NULL ? "null" : p0->type->name;
4822 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name);
4823 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 510);
4824 fatal_exit(1);
4825 }
4826 self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___poset].val = p0; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
4827 RET_LABEL:;
4828 }
4829 /* method coloring#POSetBucketsColorer#conflicts for (self: POSetBucketsColorer[Object, Object]): Map[Object, Set[Object]] */
4830 val* nitc___nitc__POSetBucketsColorer___conflicts(val* self) {
4831 val* var /* : Map[Object, Set[Object]] */;
4832 val* var1 /* : Map[Object, Set[Object]] */;
4833 var1 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
4834 if (unlikely(var1 == NULL)) {
4835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
4836 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 511);
4837 fatal_exit(1);
4838 }
4839 var = var1;
4840 RET_LABEL:;
4841 return var;
4842 }
4843 /* method coloring#POSetBucketsColorer#conflicts= for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]) */
4844 void nitc___nitc__POSetBucketsColorer___conflicts_61d(val* self, val* p0) {
4845 short int var /* : Bool */;
4846 int cltype;
4847 int idtype;
4848 const struct type* type_struct;
4849 const char* var_class_name;
4850 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
4851 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
4852 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetBucketsColorer___35dH__core__Set__nitc__POSetBucketsColorer___35dH];
4853 cltype = type_struct->color;
4854 idtype = type_struct->id;
4855 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
4856 var = 0;
4857 } else {
4858 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
4859 }
4860 if (unlikely(!var)) {
4861 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
4862 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name);
4863 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 511);
4864 fatal_exit(1);
4865 }
4866 self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___conflicts].val = p0; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
4867 RET_LABEL:;
4868 }
4869 /* method coloring#POSetBucketsColorer#colorize for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
4870 val* nitc___nitc__POSetBucketsColorer___colorize(val* self, val* p0) {
4871 val* var /* : Map[Object, Int] */;
4872 short int var1 /* : Bool */;
4873 int cltype;
4874 int idtype;
4875 const struct type* type_struct;
4876 const char* var_class_name;
4877 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
4878 val* var2 /* : HashMap[Object, Int] */;
4879 val* var4 /* : HashMap[Object, Int] */;
4880 val* var5 /* : POSet[Object] */;
4881 val* var7 /* : POSet[Object] */;
4882 val* var8 /* : Collection[nullable Object] */;
4883 val* var9 /* : Array[nullable Object] */;
4884 val* var_ /* var : Array[Object] */;
4885 val* var10 /* : IndexedIterator[nullable Object] */;
4886 val* var_11 /* var : IndexedIterator[Object] */;
4887 short int var12 /* : Bool */;
4888 val* var13 /* : nullable Object */;
4889 val* var_h /* var h: Object */;
4890 val* var14 /* : POSet[Object] */;
4891 val* var16 /* : POSet[Object] */;
4892 val* var17 /* : POSetElement[nullable Object] */;
4893 val* var18 /* : Collection[nullable Object] */;
4894 long var19 /* : Int */;
4895 long var_color /* var color: Int */;
4896 val* var20 /* : nullable Object */;
4897 val* var_21 /* var : Set[Object] */;
4898 val* var22 /* : Iterator[nullable Object] */;
4899 val* var_23 /* var : Iterator[Object] */;
4900 short int var24 /* : Bool */;
4901 val* var26 /* : nullable Object */;
4902 val* var_bucket /* var bucket: Object */;
4903 val* var27 /* : HashMap[Object, Int] */;
4904 val* var29 /* : HashMap[Object, Int] */;
4905 short int var30 /* : Bool */;
4906 short int var32 /* : Bool */;
4907 short int var33 /* : Bool */;
4908 long var34 /* : Int */;
4909 short int var36 /* : Bool */;
4910 int cltype37;
4911 int idtype38;
4912 const char* var_class_name39;
4913 long var40 /* : Int */;
4914 val* var42 /* : HashMap[Object, Int] */;
4915 val* var44 /* : HashMap[Object, Int] */;
4916 val* var45 /* : nullable Object */;
4917 long var46 /* : Int */;
4918 short int var48 /* : Bool */;
4919 int cltype49;
4920 int idtype50;
4921 const char* var_class_name51;
4922 long var52 /* : Int */;
4923 val* var53 /* : HashMap[Object, Int] */;
4924 val* var55 /* : HashMap[Object, Int] */;
4925 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4926 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
4927 type_struct = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetBucketsColorer___35dH__core__Set__nitc__POSetBucketsColorer___35dE];
4928 cltype = type_struct->color;
4929 idtype = type_struct->id;
4930 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
4931 var1 = 0;
4932 } else {
4933 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
4934 }
4935 if (unlikely(!var1)) {
4936 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
4937 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
4938 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 513);
4939 fatal_exit(1);
4940 }
4941 var_buckets = p0;
4942 {
4943 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
4944 var4 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
4945 if (unlikely(var4 == NULL)) {
4946 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
4947 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
4948 fatal_exit(1);
4949 }
4950 var2 = var4;
4951 RET_LABEL3:(void)0;
4952 }
4953 }
4954 {
4955 core___core__HashMap___core__abstract_collection__Map__clear(var2); /* Direct call hash_collection#HashMap#clear on <var2:HashMap[Object, Int]>*/
4956 }
4957 {
4958 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
4959 var7 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
4960 if (unlikely(var7 == NULL)) {
4961 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
4962 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 510);
4963 fatal_exit(1);
4964 }
4965 var5 = var7;
4966 RET_LABEL6:(void)0;
4967 }
4968 }
4969 {
4970 var8 = ((val*(*)(val* self))((((long)var_buckets&3)?class_info[((long)var_buckets&3)]:var_buckets->class)->vft[COLOR_core__abstract_collection__MapRead__keys]))(var_buckets); /* keys on <var_buckets:Map[Object, Set[Object]]>*/
4971 }
4972 {
4973 var9 = poset___poset__POSet___linearize(var5, var8);
4974 }
4975 var_ = var9;
4976 {
4977 var10 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
4978 }
4979 var_11 = var10;
4980 for(;;) {
4981 {
4982 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:IndexedIterator[Object]>*/
4983 }
4984 if (var12){
4985 } else {
4986 goto BREAK_label;
4987 }
4988 {
4989 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:IndexedIterator[Object]>*/
4990 }
4991 var_h = var13;
4992 {
4993 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
4994 var16 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
4995 if (unlikely(var16 == NULL)) {
4996 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
4997 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 510);
4998 fatal_exit(1);
4999 }
5000 var14 = var16;
5001 RET_LABEL15:(void)0;
5002 }
5003 }
5004 {
5005 var17 = poset___poset__POSet____91d_93d(var14, var_h);
5006 }
5007 {
5008 var18 = poset___poset__POSetElement___direct_greaters(var17);
5009 }
5010 {
5011 var19 = nitc___nitc__POSetBucketsColorer___min_color(self, var18, var_buckets);
5012 }
5013 var_color = var19;
5014 {
5015 var20 = ((val*(*)(val* self, val* p0))((((long)var_buckets&3)?class_info[((long)var_buckets&3)]:var_buckets->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var_buckets, var_h); /* [] on <var_buckets:Map[Object, Set[Object]]>*/
5016 }
5017 var_21 = var20;
5018 {
5019 var22 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_21); /* iterator on <var_21:Set[Object]>*/
5020 }
5021 var_23 = var22;
5022 for(;;) {
5023 {
5024 var24 = ((short int(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_23); /* is_ok on <var_23:Iterator[Object]>*/
5025 }
5026 if (var24){
5027 } else {
5028 goto BREAK_label25;
5029 }
5030 {
5031 var26 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_23); /* item on <var_23:Iterator[Object]>*/
5032 }
5033 var_bucket = var26;
5034 {
5035 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5036 var29 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5037 if (unlikely(var29 == NULL)) {
5038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5039 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5040 fatal_exit(1);
5041 }
5042 var27 = var29;
5043 RET_LABEL28:(void)0;
5044 }
5045 }
5046 {
5047 var30 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var27, var_bucket);
5048 }
5049 if (var30){
5050 goto BREAK_label31;
5051 } else {
5052 }
5053 for(;;) {
5054 {
5055 var32 = nitc___nitc__POSetBucketsColorer___is_color_free(self, var_color, var_h, var_buckets);
5056 }
5057 var33 = !var32;
5058 if (var33){
5059 {
5060 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
5061 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5062 /* <1l:Int> isa OTHER */
5063 var36 = 1; /* easy <1l:Int> isa OTHER*/
5064 if (unlikely(!var36)) {
5065 var_class_name39 = type_core__Int.name;
5066 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
5067 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5068 fatal_exit(1);
5069 }
5070 var40 = var_color + 1l;
5071 var34 = var40;
5072 goto RET_LABEL35;
5073 RET_LABEL35:(void)0;
5074 }
5075 }
5076 var_color = var34;
5077 } else {
5078 goto BREAK_label41;
5079 }
5080 }
5081 BREAK_label41: (void)0;
5082 {
5083 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5084 var44 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5085 if (unlikely(var44 == NULL)) {
5086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5087 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5088 fatal_exit(1);
5089 }
5090 var42 = var44;
5091 RET_LABEL43:(void)0;
5092 }
5093 }
5094 {
5095 var45 = (val*)(var_color<<2|1);
5096 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var42, var_bucket, var45); /* Direct call hash_collection#HashMap#[]= on <var42:HashMap[Object, Int]>*/
5097 }
5098 {
5099 { /* Inline kernel#Int#+ (var_color,1l) on <var_color:Int> */
5100 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5101 /* <1l:Int> isa OTHER */
5102 var48 = 1; /* easy <1l:Int> isa OTHER*/
5103 if (unlikely(!var48)) {
5104 var_class_name51 = type_core__Int.name;
5105 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name51);
5106 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5107 fatal_exit(1);
5108 }
5109 var52 = var_color + 1l;
5110 var46 = var52;
5111 goto RET_LABEL47;
5112 RET_LABEL47:(void)0;
5113 }
5114 }
5115 var_color = var46;
5116 BREAK_label31: (void)0;
5117 {
5118 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_23); /* next on <var_23:Iterator[Object]>*/
5119 }
5120 }
5121 BREAK_label25: (void)0;
5122 {
5123 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_23); /* finish on <var_23:Iterator[Object]>*/
5124 }
5125 {
5126 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:IndexedIterator[Object]>*/
5127 }
5128 }
5129 BREAK_label: (void)0;
5130 {
5131 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:IndexedIterator[Object]>*/
5132 }
5133 {
5134 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5135 var55 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5136 if (unlikely(var55 == NULL)) {
5137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5138 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5139 fatal_exit(1);
5140 }
5141 var53 = var55;
5142 RET_LABEL54:(void)0;
5143 }
5144 }
5145 var = var53;
5146 goto RET_LABEL;
5147 RET_LABEL:;
5148 return var;
5149 }
5150 /* method coloring#POSetBucketsColorer#min_color for (self: POSetBucketsColorer[Object, Object], Collection[Object], Map[Object, Set[Object]]): Int */
5151 long nitc___nitc__POSetBucketsColorer___min_color(val* self, val* p0, val* p1) {
5152 long var /* : Int */;
5153 short int var1 /* : Bool */;
5154 int cltype;
5155 int idtype;
5156 const struct type* type_struct;
5157 const char* var_class_name;
5158 short int var2 /* : Bool */;
5159 int cltype3;
5160 int idtype4;
5161 const struct type* type_struct5;
5162 const char* var_class_name6;
5163 val* var_others /* var others: Collection[Object] */;
5164 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
5165 long var7 /* : Int */;
5166 long var9 /* : Int */;
5167 long var_min /* var min: Int */;
5168 val* var_ /* var : Collection[Object] */;
5169 val* var10 /* : Iterator[nullable Object] */;
5170 val* var_11 /* var : Iterator[Object] */;
5171 short int var12 /* : Bool */;
5172 val* var13 /* : nullable Object */;
5173 val* var_holder /* var holder: Object */;
5174 long var14 /* : Int */;
5175 long var_color /* var color: Int */;
5176 short int var15 /* : Bool */;
5177 short int var17 /* : Bool */;
5178 int cltype18;
5179 int idtype19;
5180 const char* var_class_name20;
5181 short int var21 /* : Bool */;
5182 long var22 /* : Int */;
5183 short int var24 /* : Bool */;
5184 int cltype25;
5185 int idtype26;
5186 const char* var_class_name27;
5187 long var28 /* : Int */;
5188 /* Covariant cast for argument 0 (others) <p0:Collection[Object]> isa Collection[H] */
5189 /* <p0:Collection[Object]> isa Collection[H] */
5190 type_struct = self->type->resolution_table->types[COLOR_core__Collection__nitc__POSetBucketsColorer___35dH];
5191 cltype = type_struct->color;
5192 idtype = type_struct->id;
5193 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
5194 var1 = 0;
5195 } else {
5196 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
5197 }
5198 if (unlikely(!var1)) {
5199 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
5200 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[H]", var_class_name);
5201 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 528);
5202 fatal_exit(1);
5203 }
5204 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5205 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5206 type_struct5 = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetBucketsColorer___35dH__core__Set__nitc__POSetBucketsColorer___35dE];
5207 cltype3 = type_struct5->color;
5208 idtype4 = type_struct5->id;
5209 if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
5210 var2 = 0;
5211 } else {
5212 var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
5213 }
5214 if (unlikely(!var2)) {
5215 var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
5216 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
5217 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 528);
5218 fatal_exit(1);
5219 }
5220 var_others = p0;
5221 var_buckets = p1;
5222 {
5223 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
5224 var9 = -1l;
5225 var7 = var9;
5226 goto RET_LABEL8;
5227 RET_LABEL8:(void)0;
5228 }
5229 }
5230 var_min = var7;
5231 var_ = var_others;
5232 {
5233 var10 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
5234 }
5235 var_11 = var10;
5236 for(;;) {
5237 {
5238 var12 = ((short int(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_11); /* is_ok on <var_11:Iterator[Object]>*/
5239 }
5240 if (var12){
5241 } else {
5242 goto BREAK_label;
5243 }
5244 {
5245 var13 = ((val*(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_11); /* item on <var_11:Iterator[Object]>*/
5246 }
5247 var_holder = var13;
5248 {
5249 var14 = nitc___nitc__POSetBucketsColorer___max_color(self, var_holder, var_buckets);
5250 }
5251 var_color = var14;
5252 {
5253 { /* Inline kernel#Int#> (var_color,var_min) on <var_color:Int> */
5254 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
5255 /* <var_min:Int> isa OTHER */
5256 var17 = 1; /* easy <var_min:Int> isa OTHER*/
5257 if (unlikely(!var17)) {
5258 var_class_name20 = type_core__Int.name;
5259 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
5260 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
5261 fatal_exit(1);
5262 }
5263 var21 = var_color > var_min;
5264 var15 = var21;
5265 goto RET_LABEL16;
5266 RET_LABEL16:(void)0;
5267 }
5268 }
5269 if (var15){
5270 var_min = var_color;
5271 } else {
5272 }
5273 {
5274 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_11); /* next on <var_11:Iterator[Object]>*/
5275 }
5276 }
5277 BREAK_label: (void)0;
5278 {
5279 ((void(*)(val* self))((((long)var_11&3)?class_info[((long)var_11&3)]:var_11->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_11); /* finish on <var_11:Iterator[Object]>*/
5280 }
5281 {
5282 { /* Inline kernel#Int#+ (var_min,1l) on <var_min:Int> */
5283 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5284 /* <1l:Int> isa OTHER */
5285 var24 = 1; /* easy <1l:Int> isa OTHER*/
5286 if (unlikely(!var24)) {
5287 var_class_name27 = type_core__Int.name;
5288 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
5289 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5290 fatal_exit(1);
5291 }
5292 var28 = var_min + 1l;
5293 var22 = var28;
5294 goto RET_LABEL23;
5295 RET_LABEL23:(void)0;
5296 }
5297 }
5298 var = var22;
5299 goto RET_LABEL;
5300 RET_LABEL:;
5301 return var;
5302 }
5303 /* method coloring#POSetBucketsColorer#max_color for (self: POSetBucketsColorer[Object, Object], Object, Map[Object, Set[Object]]): Int */
5304 long nitc___nitc__POSetBucketsColorer___max_color(val* self, val* p0, val* p1) {
5305 long var /* : Int */;
5306 short int var1 /* : Bool */;
5307 int cltype;
5308 int idtype;
5309 const struct type* type_struct;
5310 const char* var_class_name;
5311 short int var2 /* : Bool */;
5312 int cltype3;
5313 int idtype4;
5314 const struct type* type_struct5;
5315 const char* var_class_name6;
5316 val* var_holder /* var holder: Object */;
5317 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
5318 long var7 /* : Int */;
5319 long var9 /* : Int */;
5320 long var_max /* var max: Int */;
5321 val* var10 /* : nullable Object */;
5322 val* var_ /* var : Set[Object] */;
5323 val* var11 /* : Iterator[nullable Object] */;
5324 val* var_12 /* var : Iterator[Object] */;
5325 short int var13 /* : Bool */;
5326 val* var14 /* : nullable Object */;
5327 val* var_bucket /* var bucket: Object */;
5328 val* var15 /* : HashMap[Object, Int] */;
5329 val* var17 /* : HashMap[Object, Int] */;
5330 short int var18 /* : Bool */;
5331 short int var19 /* : Bool */;
5332 val* var21 /* : HashMap[Object, Int] */;
5333 val* var23 /* : HashMap[Object, Int] */;
5334 val* var24 /* : nullable Object */;
5335 long var25 /* : Int */;
5336 long var_color /* var color: Int */;
5337 short int var26 /* : Bool */;
5338 short int var28 /* : Bool */;
5339 int cltype29;
5340 int idtype30;
5341 const char* var_class_name31;
5342 short int var32 /* : Bool */;
5343 /* Covariant cast for argument 0 (holder) <p0:Object> isa H */
5344 /* <p0:Object> isa H */
5345 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetBucketsColorer___35dH];
5346 cltype = type_struct->color;
5347 idtype = type_struct->id;
5348 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
5349 var1 = 0;
5350 } else {
5351 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
5352 }
5353 if (unlikely(!var1)) {
5354 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
5355 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
5356 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 538);
5357 fatal_exit(1);
5358 }
5359 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5360 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5361 type_struct5 = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetBucketsColorer___35dH__core__Set__nitc__POSetBucketsColorer___35dE];
5362 cltype3 = type_struct5->color;
5363 idtype4 = type_struct5->id;
5364 if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
5365 var2 = 0;
5366 } else {
5367 var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
5368 }
5369 if (unlikely(!var2)) {
5370 var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
5371 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
5372 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 538);
5373 fatal_exit(1);
5374 }
5375 var_holder = p0;
5376 var_buckets = p1;
5377 {
5378 { /* Inline kernel#Int#unary - (1l) on <1l:Int> */
5379 var9 = -1l;
5380 var7 = var9;
5381 goto RET_LABEL8;
5382 RET_LABEL8:(void)0;
5383 }
5384 }
5385 var_max = var7;
5386 {
5387 var10 = ((val*(*)(val* self, val* p0))((((long)var_buckets&3)?class_info[((long)var_buckets&3)]:var_buckets->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var_buckets, var_holder); /* [] on <var_buckets:Map[Object, Set[Object]]>*/
5388 }
5389 var_ = var10;
5390 {
5391 var11 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[Object]>*/
5392 }
5393 var_12 = var11;
5394 for(;;) {
5395 {
5396 var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:Iterator[Object]>*/
5397 }
5398 if (var13){
5399 } else {
5400 goto BREAK_label;
5401 }
5402 {
5403 var14 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:Iterator[Object]>*/
5404 }
5405 var_bucket = var14;
5406 {
5407 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5408 var17 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5409 if (unlikely(var17 == NULL)) {
5410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5411 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5412 fatal_exit(1);
5413 }
5414 var15 = var17;
5415 RET_LABEL16:(void)0;
5416 }
5417 }
5418 {
5419 var18 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var15, var_bucket);
5420 }
5421 var19 = !var18;
5422 if (var19){
5423 goto BREAK_label20;
5424 } else {
5425 }
5426 {
5427 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5428 var23 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5429 if (unlikely(var23 == NULL)) {
5430 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5431 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5432 fatal_exit(1);
5433 }
5434 var21 = var23;
5435 RET_LABEL22:(void)0;
5436 }
5437 }
5438 {
5439 var24 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var21, var_bucket);
5440 }
5441 var25 = (long)(var24)>>2;
5442 var_color = var25;
5443 {
5444 { /* Inline kernel#Int#> (var_color,var_max) on <var_color:Int> */
5445 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
5446 /* <var_max:Int> isa OTHER */
5447 var28 = 1; /* easy <var_max:Int> isa OTHER*/
5448 if (unlikely(!var28)) {
5449 var_class_name31 = type_core__Int.name;
5450 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
5451 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
5452 fatal_exit(1);
5453 }
5454 var32 = var_color > var_max;
5455 var26 = var32;
5456 goto RET_LABEL27;
5457 RET_LABEL27:(void)0;
5458 }
5459 }
5460 if (var26){
5461 var_max = var_color;
5462 } else {
5463 }
5464 BREAK_label20: (void)0;
5465 {
5466 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:Iterator[Object]>*/
5467 }
5468 }
5469 BREAK_label: (void)0;
5470 {
5471 ((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:Iterator[Object]>*/
5472 }
5473 var = var_max;
5474 goto RET_LABEL;
5475 RET_LABEL:;
5476 return var;
5477 }
5478 /* method coloring#POSetBucketsColorer#is_color_free for (self: POSetBucketsColorer[Object, Object], Int, Object, Map[Object, Set[Object]]): Bool */
5479 short int nitc___nitc__POSetBucketsColorer___is_color_free(val* self, long p0, val* p1, val* p2) {
5480 short int var /* : Bool */;
5481 short int var1 /* : Bool */;
5482 int cltype;
5483 int idtype;
5484 const struct type* type_struct;
5485 const char* var_class_name;
5486 short int var2 /* : Bool */;
5487 int cltype3;
5488 int idtype4;
5489 const struct type* type_struct5;
5490 const char* var_class_name6;
5491 long var_color /* var color: Int */;
5492 val* var_holder /* var holder: Object */;
5493 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
5494 val* var7 /* : Map[Object, Set[Object]] */;
5495 val* var9 /* : Map[Object, Set[Object]] */;
5496 short int var10 /* : Bool */;
5497 short int var11 /* : Bool */;
5498 val* var12 /* : Map[Object, Set[Object]] */;
5499 val* var14 /* : Map[Object, Set[Object]] */;
5500 val* var15 /* : nullable Object */;
5501 val* var_ /* var : Set[Object] */;
5502 val* var16 /* : Iterator[nullable Object] */;
5503 val* var_17 /* var : Iterator[Object] */;
5504 short int var18 /* : Bool */;
5505 val* var19 /* : nullable Object */;
5506 val* var_conflict /* var conflict: Object */;
5507 val* var20 /* : nullable Object */;
5508 val* var_21 /* var : Set[Object] */;
5509 val* var22 /* : Iterator[nullable Object] */;
5510 val* var_23 /* var : Iterator[Object] */;
5511 short int var24 /* : Bool */;
5512 val* var26 /* : nullable Object */;
5513 val* var_bucket /* var bucket: Object */;
5514 val* var27 /* : HashMap[Object, Int] */;
5515 val* var29 /* : HashMap[Object, Int] */;
5516 short int var30 /* : Bool */;
5517 short int var31 /* : Bool */;
5518 val* var33 /* : HashMap[Object, Int] */;
5519 val* var35 /* : HashMap[Object, Int] */;
5520 val* var36 /* : nullable Object */;
5521 short int var37 /* : Bool */;
5522 short int var39 /* : Bool */;
5523 long var40 /* : Int */;
5524 /* Covariant cast for argument 1 (holder) <p1:Object> isa H */
5525 /* <p1:Object> isa H */
5526 type_struct = self->type->resolution_table->types[COLOR_nitc__POSetBucketsColorer___35dH];
5527 cltype = type_struct->color;
5528 idtype = type_struct->id;
5529 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
5530 var1 = 0;
5531 } else {
5532 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
5533 }
5534 if (unlikely(!var1)) {
5535 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
5536 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
5537 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 549);
5538 fatal_exit(1);
5539 }
5540 /* Covariant cast for argument 2 (buckets) <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5541 /* <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
5542 type_struct5 = self->type->resolution_table->types[COLOR_core__Map__nitc__POSetBucketsColorer___35dH__core__Set__nitc__POSetBucketsColorer___35dE];
5543 cltype3 = type_struct5->color;
5544 idtype4 = type_struct5->id;
5545 if(cltype3 >= (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->table_size) {
5546 var2 = 0;
5547 } else {
5548 var2 = (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->type_table[cltype3] == idtype4;
5549 }
5550 if (unlikely(!var2)) {
5551 var_class_name6 = p2 == NULL ? "null" : (((long)p2&3)?type_info[((long)p2&3)]:p2->type)->name;
5552 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
5553 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 549);
5554 fatal_exit(1);
5555 }
5556 var_color = p0;
5557 var_holder = p1;
5558 var_buckets = p2;
5559 {
5560 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
5561 var9 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
5562 if (unlikely(var9 == NULL)) {
5563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
5564 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 511);
5565 fatal_exit(1);
5566 }
5567 var7 = var9;
5568 RET_LABEL8:(void)0;
5569 }
5570 }
5571 {
5572 var10 = ((short int(*)(val* self, val* p0))((((long)var7&3)?class_info[((long)var7&3)]:var7->class)->vft[COLOR_core__abstract_collection__MapRead__has_key]))(var7, var_holder); /* has_key on <var7:Map[Object, Set[Object]]>*/
5573 }
5574 var11 = !var10;
5575 if (var11){
5576 var = 1;
5577 goto RET_LABEL;
5578 } else {
5579 }
5580 {
5581 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
5582 var14 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
5583 if (unlikely(var14 == NULL)) {
5584 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
5585 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 511);
5586 fatal_exit(1);
5587 }
5588 var12 = var14;
5589 RET_LABEL13:(void)0;
5590 }
5591 }
5592 {
5593 var15 = ((val*(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var12, var_holder); /* [] on <var12:Map[Object, Set[Object]]>*/
5594 }
5595 var_ = var15;
5596 {
5597 var16 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[Object]>*/
5598 }
5599 var_17 = var16;
5600 for(;;) {
5601 {
5602 var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:Iterator[Object]>*/
5603 }
5604 if (var18){
5605 } else {
5606 goto BREAK_label;
5607 }
5608 {
5609 var19 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:Iterator[Object]>*/
5610 }
5611 var_conflict = var19;
5612 {
5613 var20 = ((val*(*)(val* self, val* p0))((((long)var_buckets&3)?class_info[((long)var_buckets&3)]:var_buckets->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var_buckets, var_conflict); /* [] on <var_buckets:Map[Object, Set[Object]]>*/
5614 }
5615 var_21 = var20;
5616 {
5617 var22 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_21); /* iterator on <var_21:Set[Object]>*/
5618 }
5619 var_23 = var22;
5620 for(;;) {
5621 {
5622 var24 = ((short int(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_23); /* is_ok on <var_23:Iterator[Object]>*/
5623 }
5624 if (var24){
5625 } else {
5626 goto BREAK_label25;
5627 }
5628 {
5629 var26 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_23); /* item on <var_23:Iterator[Object]>*/
5630 }
5631 var_bucket = var26;
5632 {
5633 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5634 var29 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5635 if (unlikely(var29 == NULL)) {
5636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5637 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5638 fatal_exit(1);
5639 }
5640 var27 = var29;
5641 RET_LABEL28:(void)0;
5642 }
5643 }
5644 {
5645 var30 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var27, var_bucket);
5646 }
5647 var31 = !var30;
5648 if (var31){
5649 goto BREAK_label32;
5650 } else {
5651 }
5652 {
5653 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
5654 var35 = self->attrs[COLOR_nitc__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
5655 if (unlikely(var35 == NULL)) {
5656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
5657 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__coloring, 509);
5658 fatal_exit(1);
5659 }
5660 var33 = var35;
5661 RET_LABEL34:(void)0;
5662 }
5663 }
5664 {
5665 var36 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var33, var_bucket);
5666 }
5667 {
5668 { /* Inline kernel#Int#== (var36,var_color) on <var36:nullable Object(Int)> */
5669 var40 = (long)(var36)>>2;
5670 var39 = var40 == var_color;
5671 var37 = var39;
5672 goto RET_LABEL38;
5673 RET_LABEL38:(void)0;
5674 }
5675 }
5676 if (var37){
5677 var = 0;
5678 goto RET_LABEL;
5679 } else {
5680 }
5681 BREAK_label32: (void)0;
5682 {
5683 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_23); /* next on <var_23:Iterator[Object]>*/
5684 }
5685 }
5686 BREAK_label25: (void)0;
5687 {
5688 ((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_23); /* finish on <var_23:Iterator[Object]>*/
5689 }
5690 {
5691 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:Iterator[Object]>*/
5692 }
5693 }
5694 BREAK_label: (void)0;
5695 {
5696 ((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:Iterator[Object]>*/
5697 }
5698 var = 1;
5699 goto RET_LABEL;
5700 RET_LABEL:;
5701 return var;
5702 }
5703 /* method coloring#POSetBucketsColorer#init for (self: POSetBucketsColorer[Object, Object]) */
5704 void nitc___nitc__POSetBucketsColorer___core__kernel__Object__init(val* self) {
5705 {
5706 ((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__POSetBucketsColorer___core__kernel__Object__init]))(self); /* init on <self:POSetBucketsColorer[Object, Object]>*/
5707 }
5708 RET_LABEL:;
5709 }