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