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