misc/vim: inform the user when no results are found
[nit.git] / c_src / nit__coloring.sep.1.c
1 #include "nit__coloring.sep.0.h"
2 /* method coloring#POSetConflictGraph#core for (self: POSetConflictGraph[Object]): HashSet[Object] */
3 val* nit___nit__POSetConflictGraph___core(val* self) {
4 val* var /* : HashSet[Object] */;
5 val* var1 /* : HashSet[Object] */;
6 var1 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[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 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method coloring#POSetConflictGraph#border for (self: POSetConflictGraph[Object]): HashSet[Object] */
17 val* nit___nit__POSetConflictGraph___border(val* self) {
18 val* var /* : HashSet[Object] */;
19 val* var1 /* : HashSet[Object] */;
20 var1 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[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 show_backtrace(1);
25 }
26 var = var1;
27 RET_LABEL:;
28 return var;
29 }
30 /* method coloring#POSetConflictGraph#crown for (self: POSetConflictGraph[Object]): HashSet[Object] */
31 val* nit___nit__POSetConflictGraph___crown(val* self) {
32 val* var /* : HashSet[Object] */;
33 val* var1 /* : HashSet[Object] */;
34 var1 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[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 show_backtrace(1);
39 }
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method coloring#POSetConflictGraph#conflicts for (self: POSetConflictGraph[Object]): HashMap[Object, Set[Object]] */
45 val* nit___nit__POSetConflictGraph___conflicts(val* self) {
46 val* var /* : HashMap[Object, Set[Object]] */;
47 val* var1 /* : HashMap[Object, Set[Object]] */;
48 var1 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[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 show_backtrace(1);
53 }
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method coloring#POSetConflictGraph#poset for (self: POSetConflictGraph[Object]): POSet[Object] */
59 val* nit___nit__POSetConflictGraph___poset(val* self) {
60 val* var /* : POSet[Object] */;
61 val* var1 /* : POSet[Object] */;
62 var1 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[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 show_backtrace(1);
67 }
68 var = var1;
69 RET_LABEL:;
70 return var;
71 }
72 /* method coloring#POSetConflictGraph#poset= for (self: POSetConflictGraph[Object], POSet[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[Object]> isa POSet[E] */
80 /* <p0:POSet[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 show_backtrace(1);
94 }
95 self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val = p0; /* _poset on <self:POSetConflictGraph[Object]> */
96 RET_LABEL:;
97 }
98 /* method coloring#POSetConflictGraph#init for (self: POSetConflictGraph[Object]) */
99 void nit___nit__POSetConflictGraph___standard__kernel__Object__init(val* self) {
100 {
101 nit___nit__POSetConflictGraph___extract_core(self); /* Direct call coloring#POSetConflictGraph#extract_core on <self:POSetConflictGraph[Object]>*/
102 }
103 {
104 nit___nit__POSetConflictGraph___extract_border(self); /* Direct call coloring#POSetConflictGraph#extract_border on <self:POSetConflictGraph[Object]>*/
105 }
106 {
107 nit___nit__POSetConflictGraph___extract_crown(self); /* Direct call coloring#POSetConflictGraph#extract_crown on <self:POSetConflictGraph[Object]>*/
108 }
109 {
110 nit___nit__POSetConflictGraph___compute_conflicts(self); /* Direct call coloring#POSetConflictGraph#compute_conflicts on <self:POSetConflictGraph[Object]>*/
111 }
112 RET_LABEL:;
113 }
114 /* method coloring#POSetConflictGraph#extract_core for (self: POSetConflictGraph[Object]) */
115 void nit___nit__POSetConflictGraph___extract_core(val* self) {
116 val* var /* : HashSet[Object] */;
117 val* var2 /* : HashSet[Object] */;
118 val* var3 /* : POSet[Object] */;
119 val* var5 /* : POSet[Object] */;
120 val* var_ /* var : POSet[Object] */;
121 val* var6 /* : Iterator[nullable Object] */;
122 val* var_7 /* var : Iterator[Object] */;
123 short int var8 /* : Bool */;
124 val* var9 /* : nullable Object */;
125 val* var_e /* var e: Object */;
126 val* var10 /* : POSet[Object] */;
127 val* var12 /* : POSet[Object] */;
128 val* var13 /* : POSetElement[nullable Object] */;
129 val* var14 /* : Collection[nullable Object] */;
130 long var15 /* : Int */;
131 long var16 /* : Int */;
132 short int var17 /* : Bool */;
133 short int var19 /* : Bool */;
134 int cltype;
135 int idtype;
136 const char* var_class_name;
137 short int var20 /* : Bool */;
138 val* var21 /* : HashSet[Object] */;
139 val* var23 /* : HashSet[Object] */;
140 val* var24 /* : POSet[Object] */;
141 val* var26 /* : POSet[Object] */;
142 val* var27 /* : POSetElement[nullable Object] */;
143 val* var28 /* : Collection[nullable Object] */;
144 {
145 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
146 var2 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
147 if (unlikely(var2 == NULL)) {
148 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
149 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
150 show_backtrace(1);
151 }
152 var = var2;
153 RET_LABEL1:(void)0;
154 }
155 }
156 {
157 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
158 }
159 {
160 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
161 var5 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
162 if (unlikely(var5 == NULL)) {
163 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
164 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
165 show_backtrace(1);
166 }
167 var3 = var5;
168 RET_LABEL4:(void)0;
169 }
170 }
171 var_ = var3;
172 {
173 var6 = poset___poset__POSet___standard__abstract_collection__Collection__iterator(var_);
174 }
175 var_7 = var6;
176 for(;;) {
177 {
178 var8 = ((short int (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
179 }
180 if (var8){
181 {
182 var9 = ((val* (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
183 }
184 var_e = var9;
185 {
186 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
187 var12 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
188 if (unlikely(var12 == NULL)) {
189 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
190 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
191 show_backtrace(1);
192 }
193 var10 = var12;
194 RET_LABEL11:(void)0;
195 }
196 }
197 {
198 var13 = poset___poset__POSet____91d_93d(var10, var_e);
199 }
200 {
201 var14 = poset___poset__POSetElement___direct_greaters(var13);
202 }
203 {
204 var15 = ((long (*)(val* self))(var14->class->vft[COLOR_standard__abstract_collection__Collection__length]))(var14) /* length on <var14:Collection[nullable Object](Collection[Object])>*/;
205 }
206 var16 = 1;
207 {
208 { /* Inline kernel#Int#> (var15,var16) on <var15:Int> */
209 /* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
210 /* <var16:Int> isa OTHER */
211 var19 = 1; /* easy <var16:Int> isa OTHER*/
212 if (unlikely(!var19)) {
213 var_class_name = type_standard__Int.name;
214 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
215 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
216 show_backtrace(1);
217 }
218 var20 = var15 > var16;
219 var17 = var20;
220 goto RET_LABEL18;
221 RET_LABEL18:(void)0;
222 }
223 }
224 if (var17){
225 {
226 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
227 var23 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
228 if (unlikely(var23 == NULL)) {
229 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
230 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
231 show_backtrace(1);
232 }
233 var21 = var23;
234 RET_LABEL22:(void)0;
235 }
236 }
237 {
238 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
239 var26 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
240 if (unlikely(var26 == NULL)) {
241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
242 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
243 show_backtrace(1);
244 }
245 var24 = var26;
246 RET_LABEL25:(void)0;
247 }
248 }
249 {
250 var27 = poset___poset__POSet____91d_93d(var24, var_e);
251 }
252 {
253 var28 = poset___poset__POSetElement___greaters(var27);
254 }
255 {
256 standard___standard__SimpleCollection___add_all(var21, var28); /* Direct call abstract_collection#SimpleCollection#add_all on <var21:HashSet[Object]>*/
257 }
258 } else {
259 }
260 {
261 ((void (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
262 }
263 } else {
264 goto BREAK_label;
265 }
266 }
267 BREAK_label: (void)0;
268 {
269 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
270 RET_LABEL29:(void)0;
271 }
272 }
273 RET_LABEL:;
274 }
275 /* method coloring#POSetConflictGraph#extract_border for (self: POSetConflictGraph[Object]) */
276 void nit___nit__POSetConflictGraph___extract_border(val* self) {
277 val* var /* : HashSet[Object] */;
278 val* var2 /* : HashSet[Object] */;
279 val* var3 /* : HashSet[Object] */;
280 val* var5 /* : HashSet[Object] */;
281 val* var_ /* var : HashSet[Object] */;
282 val* var6 /* : Iterator[nullable Object] */;
283 val* var_7 /* var : Iterator[Object] */;
284 short int var8 /* : Bool */;
285 val* var9 /* : nullable Object */;
286 val* var_e /* var e: Object */;
287 short int var10 /* : Bool */;
288 short int var11 /* : Bool */;
289 val* var12 /* : HashSet[Object] */;
290 val* var14 /* : HashSet[Object] */;
291 val* var17 /* : HashSet[Object] */;
292 val* var19 /* : HashSet[Object] */;
293 val* var_20 /* var : HashSet[Object] */;
294 val* var21 /* : Iterator[nullable Object] */;
295 val* var_22 /* var : Iterator[Object] */;
296 short int var23 /* : Bool */;
297 val* var24 /* : nullable Object */;
298 val* var_e25 /* var e: Object */;
299 val* var26 /* : HashSet[Object] */;
300 val* var28 /* : HashSet[Object] */;
301 {
302 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
303 var2 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
304 if (unlikely(var2 == NULL)) {
305 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
306 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
307 show_backtrace(1);
308 }
309 var = var2;
310 RET_LABEL1:(void)0;
311 }
312 }
313 {
314 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
315 }
316 {
317 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
318 var5 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
319 if (unlikely(var5 == NULL)) {
320 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
321 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
322 show_backtrace(1);
323 }
324 var3 = var5;
325 RET_LABEL4:(void)0;
326 }
327 }
328 var_ = var3;
329 {
330 var6 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
331 }
332 var_7 = var6;
333 for(;;) {
334 {
335 var8 = ((short int (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
336 }
337 if (var8){
338 {
339 var9 = ((val* (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
340 }
341 var_e = var9;
342 {
343 var10 = nit___nit__POSetConflictGraph___is_border(self, var_e);
344 }
345 var11 = !var10;
346 if (var11){
347 goto BREAK_label;
348 } else {
349 }
350 {
351 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
352 var14 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
353 if (unlikely(var14 == NULL)) {
354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
355 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
356 show_backtrace(1);
357 }
358 var12 = var14;
359 RET_LABEL13:(void)0;
360 }
361 }
362 {
363 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var12, var_e); /* Direct call hash_collection#HashSet#add on <var12:HashSet[Object]>*/
364 }
365 BREAK_label: (void)0;
366 {
367 ((void (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
368 }
369 } else {
370 goto BREAK_label15;
371 }
372 }
373 BREAK_label15: (void)0;
374 {
375 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
376 RET_LABEL16:(void)0;
377 }
378 }
379 {
380 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
381 var19 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
382 if (unlikely(var19 == NULL)) {
383 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
384 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
385 show_backtrace(1);
386 }
387 var17 = var19;
388 RET_LABEL18:(void)0;
389 }
390 }
391 var_20 = var17;
392 {
393 var21 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_20);
394 }
395 var_22 = var21;
396 for(;;) {
397 {
398 var23 = ((short int (*)(val* self))(var_22->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_22) /* is_ok on <var_22:Iterator[Object]>*/;
399 }
400 if (var23){
401 {
402 var24 = ((val* (*)(val* self))(var_22->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_22) /* item on <var_22:Iterator[Object]>*/;
403 }
404 var_e25 = var24;
405 {
406 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
407 var28 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
408 if (unlikely(var28 == NULL)) {
409 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
410 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
411 show_backtrace(1);
412 }
413 var26 = var28;
414 RET_LABEL27:(void)0;
415 }
416 }
417 {
418 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__remove(var26, var_e25); /* Direct call hash_collection#HashSet#remove on <var26:HashSet[Object]>*/
419 }
420 {
421 ((void (*)(val* self))(var_22->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_22) /* next on <var_22:Iterator[Object]>*/;
422 }
423 } else {
424 goto BREAK_label29;
425 }
426 }
427 BREAK_label29: (void)0;
428 {
429 { /* Inline abstract_collection#Iterator#finish (var_22) on <var_22:Iterator[Object]> */
430 RET_LABEL30:(void)0;
431 }
432 }
433 RET_LABEL:;
434 }
435 /* method coloring#POSetConflictGraph#is_border for (self: POSetConflictGraph[Object], Object): Bool */
436 short int nit___nit__POSetConflictGraph___is_border(val* self, val* p0) {
437 short int var /* : Bool */;
438 short int var1 /* : Bool */;
439 int cltype;
440 int idtype;
441 const struct type* type_struct;
442 const char* var_class_name;
443 val* var_e /* var e: Object */;
444 val* var2 /* : POSet[Object] */;
445 val* var4 /* : POSet[Object] */;
446 val* var5 /* : POSetElement[nullable Object] */;
447 val* var6 /* : Collection[nullable Object] */;
448 val* var_ /* var : Collection[Object] */;
449 val* var7 /* : Iterator[nullable Object] */;
450 val* var_8 /* var : Iterator[Object] */;
451 short int var9 /* : Bool */;
452 val* var10 /* : nullable Object */;
453 val* var_child /* var child: Object */;
454 val* var11 /* : HashSet[Object] */;
455 val* var13 /* : HashSet[Object] */;
456 short int var14 /* : Bool */;
457 short int var15 /* : Bool */;
458 short int var17 /* : Bool */;
459 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
460 /* <p0:Object> isa E */
461 type_struct = self->type->resolution_table->types[COLOR_nit__POSetConflictGraph___35dE];
462 cltype = type_struct->color;
463 idtype = type_struct->id;
464 if(cltype >= p0->type->table_size) {
465 var1 = 0;
466 } else {
467 var1 = p0->type->type_table[cltype] == idtype;
468 }
469 if (unlikely(!var1)) {
470 var_class_name = p0 == NULL ? "null" : p0->type->name;
471 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
472 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 78);
473 show_backtrace(1);
474 }
475 var_e = p0;
476 {
477 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
478 var4 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
479 if (unlikely(var4 == NULL)) {
480 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
481 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
482 show_backtrace(1);
483 }
484 var2 = var4;
485 RET_LABEL3:(void)0;
486 }
487 }
488 {
489 var5 = poset___poset__POSet____91d_93d(var2, var_e);
490 }
491 {
492 var6 = poset___poset__POSetElement___direct_smallers(var5);
493 }
494 var_ = var6;
495 {
496 var7 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
497 }
498 var_8 = var7;
499 for(;;) {
500 {
501 var9 = ((short int (*)(val* self))(var_8->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_8) /* is_ok on <var_8:Iterator[Object]>*/;
502 }
503 if (var9){
504 {
505 var10 = ((val* (*)(val* self))(var_8->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_8) /* item on <var_8:Iterator[Object]>*/;
506 }
507 var_child = var10;
508 {
509 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
510 var13 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
511 if (unlikely(var13 == NULL)) {
512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
513 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
514 show_backtrace(1);
515 }
516 var11 = var13;
517 RET_LABEL12:(void)0;
518 }
519 }
520 {
521 var14 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var11, var_child);
522 }
523 if (var14){
524 var15 = 0;
525 var = var15;
526 goto RET_LABEL;
527 } else {
528 }
529 {
530 ((void (*)(val* self))(var_8->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_8) /* next on <var_8:Iterator[Object]>*/;
531 }
532 } else {
533 goto BREAK_label;
534 }
535 }
536 BREAK_label: (void)0;
537 {
538 { /* Inline abstract_collection#Iterator#finish (var_8) on <var_8:Iterator[Object]> */
539 RET_LABEL16:(void)0;
540 }
541 }
542 var17 = 1;
543 var = var17;
544 goto RET_LABEL;
545 RET_LABEL:;
546 return var;
547 }
548 /* method coloring#POSetConflictGraph#extract_crown for (self: POSetConflictGraph[Object]) */
549 void nit___nit__POSetConflictGraph___extract_crown(val* self) {
550 val* var /* : HashSet[Object] */;
551 val* var2 /* : HashSet[Object] */;
552 val* var3 /* : POSet[Object] */;
553 val* var5 /* : POSet[Object] */;
554 val* var_ /* var : POSet[Object] */;
555 val* var6 /* : Iterator[nullable Object] */;
556 val* var_7 /* var : Iterator[Object] */;
557 short int var8 /* : Bool */;
558 val* var9 /* : nullable Object */;
559 val* var_e /* var e: Object */;
560 short int var10 /* : Bool */;
561 val* var11 /* : HashSet[Object] */;
562 val* var13 /* : HashSet[Object] */;
563 short int var14 /* : Bool */;
564 short int var15 /* : Bool */;
565 short int var_16 /* var : Bool */;
566 val* var17 /* : HashSet[Object] */;
567 val* var19 /* : HashSet[Object] */;
568 short int var20 /* : Bool */;
569 short int var21 /* : Bool */;
570 val* var22 /* : HashSet[Object] */;
571 val* var24 /* : HashSet[Object] */;
572 {
573 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[Object]> */
574 var2 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[Object]> */
575 if (unlikely(var2 == NULL)) {
576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
577 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 34);
578 show_backtrace(1);
579 }
580 var = var2;
581 RET_LABEL1:(void)0;
582 }
583 }
584 {
585 standard___standard__HashSet___standard__abstract_collection__RemovableCollection__clear(var); /* Direct call hash_collection#HashSet#clear on <var:HashSet[Object]>*/
586 }
587 {
588 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
589 var5 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
590 if (unlikely(var5 == NULL)) {
591 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
592 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
593 show_backtrace(1);
594 }
595 var3 = var5;
596 RET_LABEL4:(void)0;
597 }
598 }
599 var_ = var3;
600 {
601 var6 = poset___poset__POSet___standard__abstract_collection__Collection__iterator(var_);
602 }
603 var_7 = var6;
604 for(;;) {
605 {
606 var8 = ((short int (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
607 }
608 if (var8){
609 {
610 var9 = ((val* (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
611 }
612 var_e = var9;
613 {
614 { /* Inline coloring#POSetConflictGraph#core (self) on <self:POSetConflictGraph[Object]> */
615 var13 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <self:POSetConflictGraph[Object]> */
616 if (unlikely(var13 == NULL)) {
617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
618 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
619 show_backtrace(1);
620 }
621 var11 = var13;
622 RET_LABEL12:(void)0;
623 }
624 }
625 {
626 var14 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var11, var_e);
627 }
628 var15 = !var14;
629 var_16 = var15;
630 if (var15){
631 {
632 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
633 var19 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
634 if (unlikely(var19 == NULL)) {
635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
636 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
637 show_backtrace(1);
638 }
639 var17 = var19;
640 RET_LABEL18:(void)0;
641 }
642 }
643 {
644 var20 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var17, var_e);
645 }
646 var21 = !var20;
647 var10 = var21;
648 } else {
649 var10 = var_16;
650 }
651 if (var10){
652 {
653 { /* Inline coloring#POSetConflictGraph#crown (self) on <self:POSetConflictGraph[Object]> */
654 var24 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___crown].val; /* _crown on <self:POSetConflictGraph[Object]> */
655 if (unlikely(var24 == NULL)) {
656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
657 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 34);
658 show_backtrace(1);
659 }
660 var22 = var24;
661 RET_LABEL23:(void)0;
662 }
663 }
664 {
665 standard___standard__HashSet___standard__abstract_collection__SimpleCollection__add(var22, var_e); /* Direct call hash_collection#HashSet#add on <var22:HashSet[Object]>*/
666 }
667 } else {
668 }
669 {
670 ((void (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
671 }
672 } else {
673 goto BREAK_label;
674 }
675 }
676 BREAK_label: (void)0;
677 {
678 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
679 RET_LABEL25:(void)0;
680 }
681 }
682 RET_LABEL:;
683 }
684 /* method coloring#POSetConflictGraph#compute_conflicts for (self: POSetConflictGraph[Object]) */
685 void nit___nit__POSetConflictGraph___compute_conflicts(val* self) {
686 val* var /* : HashMap[Object, Set[Object]] */;
687 val* var2 /* : HashMap[Object, Set[Object]] */;
688 val* var3 /* : HashSet[Object] */;
689 val* var5 /* : HashSet[Object] */;
690 val* var_ /* var : HashSet[Object] */;
691 val* var6 /* : Iterator[nullable Object] */;
692 val* var_7 /* var : Iterator[Object] */;
693 short int var8 /* : Bool */;
694 val* var9 /* : nullable Object */;
695 val* var_e /* var e: Object */;
696 val* var10 /* : POSet[Object] */;
697 val* var12 /* : POSet[Object] */;
698 val* var13 /* : POSetElement[nullable Object] */;
699 val* var14 /* : Collection[nullable Object] */;
700 {
701 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
702 var2 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
703 if (unlikely(var2 == NULL)) {
704 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
705 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
706 show_backtrace(1);
707 }
708 var = var2;
709 RET_LABEL1:(void)0;
710 }
711 }
712 {
713 standard___standard__HashMap___standard__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Set[Object]]>*/
714 }
715 {
716 { /* Inline coloring#POSetConflictGraph#border (self) on <self:POSetConflictGraph[Object]> */
717 var5 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <self:POSetConflictGraph[Object]> */
718 if (unlikely(var5 == NULL)) {
719 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
720 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
721 show_backtrace(1);
722 }
723 var3 = var5;
724 RET_LABEL4:(void)0;
725 }
726 }
727 var_ = var3;
728 {
729 var6 = standard___standard__HashSet___standard__abstract_collection__Collection__iterator(var_);
730 }
731 var_7 = var6;
732 for(;;) {
733 {
734 var8 = ((short int (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
735 }
736 if (var8){
737 {
738 var9 = ((val* (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
739 }
740 var_e = var9;
741 {
742 { /* Inline coloring#POSetConflictGraph#poset (self) on <self:POSetConflictGraph[Object]> */
743 var12 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___poset].val; /* _poset on <self:POSetConflictGraph[Object]> */
744 if (unlikely(var12 == NULL)) {
745 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
746 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 48);
747 show_backtrace(1);
748 }
749 var10 = var12;
750 RET_LABEL11:(void)0;
751 }
752 }
753 {
754 var13 = poset___poset__POSet____91d_93d(var10, var_e);
755 }
756 {
757 var14 = poset___poset__POSetElement___greaters(var13);
758 }
759 {
760 nit___nit__POSetConflictGraph___add_conflicts(self, var14); /* Direct call coloring#POSetConflictGraph#add_conflicts on <self:POSetConflictGraph[Object]>*/
761 }
762 {
763 ((void (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
764 }
765 } else {
766 goto BREAK_label;
767 }
768 }
769 BREAK_label: (void)0;
770 {
771 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
772 RET_LABEL15:(void)0;
773 }
774 }
775 RET_LABEL:;
776 }
777 /* method coloring#POSetConflictGraph#add_conflict for (self: POSetConflictGraph[Object], Object, Object) */
778 void nit___nit__POSetConflictGraph___add_conflict(val* self, val* p0, val* p1) {
779 short int var /* : Bool */;
780 int cltype;
781 int idtype;
782 const struct type* type_struct;
783 const char* var_class_name;
784 short int var1 /* : Bool */;
785 int cltype2;
786 int idtype3;
787 const struct type* type_struct4;
788 const char* var_class_name5;
789 val* var_e /* var e: Object */;
790 val* var_o /* var o: Object */;
791 val* var6 /* : HashMap[Object, Set[Object]] */;
792 val* var8 /* : HashMap[Object, Set[Object]] */;
793 short int var9 /* : Bool */;
794 short int var10 /* : Bool */;
795 val* var11 /* : HashMap[Object, Set[Object]] */;
796 val* var13 /* : HashMap[Object, Set[Object]] */;
797 val* var14 /* : HashSet[Object] */;
798 val* var15 /* : HashMap[Object, Set[Object]] */;
799 val* var17 /* : HashMap[Object, Set[Object]] */;
800 short int var18 /* : Bool */;
801 short int var19 /* : Bool */;
802 val* var20 /* : HashMap[Object, Set[Object]] */;
803 val* var22 /* : HashMap[Object, Set[Object]] */;
804 val* var23 /* : HashSet[Object] */;
805 val* var24 /* : HashMap[Object, Set[Object]] */;
806 val* var26 /* : HashMap[Object, Set[Object]] */;
807 val* var27 /* : nullable Object */;
808 val* var28 /* : HashMap[Object, Set[Object]] */;
809 val* var30 /* : HashMap[Object, Set[Object]] */;
810 val* var31 /* : nullable Object */;
811 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
812 /* <p0:Object> isa E */
813 type_struct = self->type->resolution_table->types[COLOR_nit__POSetConflictGraph___35dE];
814 cltype = type_struct->color;
815 idtype = type_struct->id;
816 if(cltype >= p0->type->table_size) {
817 var = 0;
818 } else {
819 var = p0->type->type_table[cltype] == idtype;
820 }
821 if (unlikely(!var)) {
822 var_class_name = p0 == NULL ? "null" : p0->type->name;
823 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
824 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 100);
825 show_backtrace(1);
826 }
827 /* Covariant cast for argument 1 (o) <p1:Object> isa E */
828 /* <p1:Object> isa E */
829 type_struct4 = self->type->resolution_table->types[COLOR_nit__POSetConflictGraph___35dE];
830 cltype2 = type_struct4->color;
831 idtype3 = type_struct4->id;
832 if(cltype2 >= p1->type->table_size) {
833 var1 = 0;
834 } else {
835 var1 = p1->type->type_table[cltype2] == idtype3;
836 }
837 if (unlikely(!var1)) {
838 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
839 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name5);
840 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 100);
841 show_backtrace(1);
842 }
843 var_e = p0;
844 var_o = p1;
845 {
846 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
847 var8 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
848 if (unlikely(var8 == NULL)) {
849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
850 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
851 show_backtrace(1);
852 }
853 var6 = var8;
854 RET_LABEL7:(void)0;
855 }
856 }
857 {
858 var9 = standard___standard__MapRead___has_key(var6, var_e);
859 }
860 var10 = !var9;
861 if (var10){
862 {
863 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
864 var13 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
865 if (unlikely(var13 == NULL)) {
866 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
867 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
868 show_backtrace(1);
869 }
870 var11 = var13;
871 RET_LABEL12:(void)0;
872 }
873 }
874 var14 = NEW_standard__HashSet(self->type->resolution_table->types[COLOR_standard__HashSet__nit__POSetConflictGraph___35dE]);
875 {
876 standard___standard__HashSet___standard__kernel__Object__init(var14); /* Direct call hash_collection#HashSet#init on <var14:HashSet[Object]>*/
877 }
878 {
879 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var11, var_e, var14); /* Direct call hash_collection#HashMap#[]= on <var11:HashMap[Object, Set[Object]]>*/
880 }
881 } else {
882 }
883 {
884 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
885 var17 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
886 if (unlikely(var17 == NULL)) {
887 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
888 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
889 show_backtrace(1);
890 }
891 var15 = var17;
892 RET_LABEL16:(void)0;
893 }
894 }
895 {
896 var18 = standard___standard__MapRead___has_key(var15, var_o);
897 }
898 var19 = !var18;
899 if (var19){
900 {
901 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
902 var22 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
903 if (unlikely(var22 == NULL)) {
904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
905 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
906 show_backtrace(1);
907 }
908 var20 = var22;
909 RET_LABEL21:(void)0;
910 }
911 }
912 var23 = NEW_standard__HashSet(self->type->resolution_table->types[COLOR_standard__HashSet__nit__POSetConflictGraph___35dE]);
913 {
914 standard___standard__HashSet___standard__kernel__Object__init(var23); /* Direct call hash_collection#HashSet#init on <var23:HashSet[Object]>*/
915 }
916 {
917 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var20, var_o, var23); /* Direct call hash_collection#HashMap#[]= on <var20:HashMap[Object, Set[Object]]>*/
918 }
919 } else {
920 }
921 {
922 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
923 var26 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
924 if (unlikely(var26 == NULL)) {
925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
926 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
927 show_backtrace(1);
928 }
929 var24 = var26;
930 RET_LABEL25:(void)0;
931 }
932 }
933 {
934 var27 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var24, var_e);
935 }
936 {
937 ((void (*)(val* self, val* p0))(var27->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var27, var_o) /* add on <var27:nullable Object(Set[Object])>*/;
938 }
939 {
940 { /* Inline coloring#POSetConflictGraph#conflicts (self) on <self:POSetConflictGraph[Object]> */
941 var30 = self->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <self:POSetConflictGraph[Object]> */
942 if (unlikely(var30 == NULL)) {
943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
944 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
945 show_backtrace(1);
946 }
947 var28 = var30;
948 RET_LABEL29:(void)0;
949 }
950 }
951 {
952 var31 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var28, var_o);
953 }
954 {
955 ((void (*)(val* self, val* p0))(var31->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var31, var_e) /* add on <var31:nullable Object(Set[Object])>*/;
956 }
957 RET_LABEL:;
958 }
959 /* method coloring#POSetConflictGraph#add_conflicts for (self: POSetConflictGraph[Object], Collection[Object]) */
960 void nit___nit__POSetConflictGraph___add_conflicts(val* self, val* p0) {
961 short int var /* : Bool */;
962 int cltype;
963 int idtype;
964 const struct type* type_struct;
965 const char* var_class_name;
966 val* var_es /* var es: Collection[Object] */;
967 val* var_ /* var : Collection[Object] */;
968 val* var1 /* : Iterator[nullable Object] */;
969 val* var_2 /* var : Iterator[Object] */;
970 short int var3 /* : Bool */;
971 val* var4 /* : nullable Object */;
972 val* var_e1 /* var e1: Object */;
973 val* var_5 /* var : Collection[Object] */;
974 val* var6 /* : Iterator[nullable Object] */;
975 val* var_7 /* var : Iterator[Object] */;
976 short int var8 /* : Bool */;
977 val* var9 /* : nullable Object */;
978 val* var_e2 /* var e2: Object */;
979 /* Covariant cast for argument 0 (es) <p0:Collection[Object]> isa Collection[E] */
980 /* <p0:Collection[Object]> isa Collection[E] */
981 type_struct = self->type->resolution_table->types[COLOR_standard__Collection__nit__POSetConflictGraph___35dE];
982 cltype = type_struct->color;
983 idtype = type_struct->id;
984 if(cltype >= p0->type->table_size) {
985 var = 0;
986 } else {
987 var = p0->type->type_table[cltype] == idtype;
988 }
989 if (unlikely(!var)) {
990 var_class_name = p0 == NULL ? "null" : p0->type->name;
991 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
992 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 107);
993 show_backtrace(1);
994 }
995 var_es = p0;
996 var_ = var_es;
997 {
998 var1 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
999 }
1000 var_2 = var1;
1001 for(;;) {
1002 {
1003 var3 = ((short int (*)(val* self))(var_2->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_2) /* is_ok on <var_2:Iterator[Object]>*/;
1004 }
1005 if (var3){
1006 {
1007 var4 = ((val* (*)(val* self))(var_2->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_2) /* item on <var_2:Iterator[Object]>*/;
1008 }
1009 var_e1 = var4;
1010 var_5 = var_es;
1011 {
1012 var6 = ((val* (*)(val* self))(var_5->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_5) /* iterator on <var_5:Collection[Object]>*/;
1013 }
1014 var_7 = var6;
1015 for(;;) {
1016 {
1017 var8 = ((short int (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_7) /* is_ok on <var_7:Iterator[Object]>*/;
1018 }
1019 if (var8){
1020 {
1021 var9 = ((val* (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_7) /* item on <var_7:Iterator[Object]>*/;
1022 }
1023 var_e2 = var9;
1024 {
1025 nit___nit__POSetConflictGraph___add_conflict(self, var_e1, var_e2); /* Direct call coloring#POSetConflictGraph#add_conflict on <self:POSetConflictGraph[Object]>*/
1026 }
1027 {
1028 ((void (*)(val* self))(var_7->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_7) /* next on <var_7:Iterator[Object]>*/;
1029 }
1030 } else {
1031 goto BREAK_label;
1032 }
1033 }
1034 BREAK_label: (void)0;
1035 {
1036 { /* Inline abstract_collection#Iterator#finish (var_7) on <var_7:Iterator[Object]> */
1037 RET_LABEL10:(void)0;
1038 }
1039 }
1040 {
1041 ((void (*)(val* self))(var_2->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_2) /* next on <var_2:Iterator[Object]>*/;
1042 }
1043 } else {
1044 goto BREAK_label11;
1045 }
1046 }
1047 BREAK_label11: (void)0;
1048 {
1049 { /* Inline abstract_collection#Iterator#finish (var_2) on <var_2:Iterator[Object]> */
1050 RET_LABEL12:(void)0;
1051 }
1052 }
1053 RET_LABEL:;
1054 }
1055 /* method coloring#POSetColorer#is_colored for (self: POSetColorer[Object]): Bool */
1056 short int nit___nit__POSetColorer___is_colored(val* self) {
1057 short int var /* : Bool */;
1058 short int var1 /* : Bool */;
1059 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1060 var = var1;
1061 RET_LABEL:;
1062 return var;
1063 }
1064 /* method coloring#POSetColorer#is_colored= for (self: POSetColorer[Object], Bool) */
1065 void nit___nit__POSetColorer___is_colored_61d(val* self, short int p0) {
1066 self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s = p0; /* _is_colored on <self:POSetColorer[Object]> */
1067 RET_LABEL:;
1068 }
1069 /* method coloring#POSetColorer#ids for (self: POSetColorer[Object]): Map[Object, Int] */
1070 val* nit___nit__POSetColorer___ids(val* self) {
1071 val* var /* : Map[Object, Int] */;
1072 short int var1 /* : Bool */;
1073 short int var3 /* : Bool */;
1074 val* var4 /* : HashMap[Object, Int] */;
1075 val* var6 /* : HashMap[Object, Int] */;
1076 {
1077 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1078 var3 = self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1079 var1 = var3;
1080 RET_LABEL2:(void)0;
1081 }
1082 }
1083 if (unlikely(!var1)) {
1084 PRINT_ERROR("Runtime error: %s", "Assert failed");
1085 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 167);
1086 show_backtrace(1);
1087 }
1088 {
1089 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1090 var6 = self->attrs[COLOR_nit__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1091 if (unlikely(var6 == NULL)) {
1092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1093 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 170);
1094 show_backtrace(1);
1095 }
1096 var4 = var6;
1097 RET_LABEL5:(void)0;
1098 }
1099 }
1100 var = var4;
1101 goto RET_LABEL;
1102 RET_LABEL:;
1103 return var;
1104 }
1105 /* method coloring#POSetColorer#ids_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1106 val* nit___nit__POSetColorer___ids_cache(val* self) {
1107 val* var /* : HashMap[Object, Int] */;
1108 val* var1 /* : HashMap[Object, Int] */;
1109 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1110 if (unlikely(var1 == NULL)) {
1111 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1112 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 170);
1113 show_backtrace(1);
1114 }
1115 var = var1;
1116 RET_LABEL:;
1117 return var;
1118 }
1119 /* method coloring#POSetColorer#colors for (self: POSetColorer[Object]): Map[Object, Int] */
1120 val* nit___nit__POSetColorer___colors(val* self) {
1121 val* var /* : Map[Object, Int] */;
1122 short int var1 /* : Bool */;
1123 short int var3 /* : Bool */;
1124 val* var4 /* : HashMap[Object, Int] */;
1125 val* var6 /* : HashMap[Object, Int] */;
1126 {
1127 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1128 var3 = self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1129 var1 = var3;
1130 RET_LABEL2:(void)0;
1131 }
1132 }
1133 if (unlikely(!var1)) {
1134 PRINT_ERROR("Runtime error: %s", "Assert failed");
1135 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 175);
1136 show_backtrace(1);
1137 }
1138 {
1139 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1140 var6 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1141 if (unlikely(var6 == NULL)) {
1142 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1143 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
1144 show_backtrace(1);
1145 }
1146 var4 = var6;
1147 RET_LABEL5:(void)0;
1148 }
1149 }
1150 var = var4;
1151 goto RET_LABEL;
1152 RET_LABEL:;
1153 return var;
1154 }
1155 /* method coloring#POSetColorer#colors_cache for (self: POSetColorer[Object]): HashMap[Object, Int] */
1156 val* nit___nit__POSetColorer___colors_cache(val* self) {
1157 val* var /* : HashMap[Object, Int] */;
1158 val* var1 /* : HashMap[Object, Int] */;
1159 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1160 if (unlikely(var1 == NULL)) {
1161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1162 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
1163 show_backtrace(1);
1164 }
1165 var = var1;
1166 RET_LABEL:;
1167 return var;
1168 }
1169 /* method coloring#POSetColorer#poset_cache for (self: POSetColorer[Object]): POSet[Object] */
1170 val* nit___nit__POSetColorer___poset_cache(val* self) {
1171 val* var /* : POSet[Object] */;
1172 val* var1 /* : POSet[Object] */;
1173 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1174 if (unlikely(var1 == NULL)) {
1175 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1176 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1177 show_backtrace(1);
1178 }
1179 var = var1;
1180 RET_LABEL:;
1181 return var;
1182 }
1183 /* method coloring#POSetColorer#poset_cache= for (self: POSetColorer[Object], POSet[Object]) */
1184 void nit___nit__POSetColorer___poset_cache_61d(val* self, val* p0) {
1185 short int var /* : Bool */;
1186 int cltype;
1187 int idtype;
1188 const struct type* type_struct;
1189 const char* var_class_name;
1190 /* Covariant cast for argument 0 (poset_cache) <p0:POSet[Object]> isa POSet[E] */
1191 /* <p0:POSet[Object]> isa POSet[E] */
1192 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nit__POSetColorer___35dE];
1193 cltype = type_struct->color;
1194 idtype = type_struct->id;
1195 if(cltype >= p0->type->table_size) {
1196 var = 0;
1197 } else {
1198 var = p0->type->type_table[cltype] == idtype;
1199 }
1200 if (unlikely(!var)) {
1201 var_class_name = p0 == NULL ? "null" : p0->type->name;
1202 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1203 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1204 show_backtrace(1);
1205 }
1206 self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val = p0; /* _poset_cache on <self:POSetColorer[Object]> */
1207 RET_LABEL:;
1208 }
1209 /* method coloring#POSetColorer#conflicts for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1210 val* nit___nit__POSetColorer___conflicts(val* self) {
1211 val* var /* : Map[Object, Set[Object]] */;
1212 short int var1 /* : Bool */;
1213 short int var3 /* : Bool */;
1214 val* var4 /* : Map[Object, Set[Object]] */;
1215 val* var6 /* : Map[Object, Set[Object]] */;
1216 {
1217 { /* Inline coloring#POSetColorer#is_colored (self) on <self:POSetColorer[Object]> */
1218 var3 = self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s; /* _is_colored on <self:POSetColorer[Object]> */
1219 var1 = var3;
1220 RET_LABEL2:(void)0;
1221 }
1222 }
1223 if (unlikely(!var1)) {
1224 PRINT_ERROR("Runtime error: %s", "Assert failed");
1225 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 189);
1226 show_backtrace(1);
1227 }
1228 {
1229 { /* Inline coloring#POSetColorer#conflicts_cache (self) on <self:POSetColorer[Object]> */
1230 var6 = self->attrs[COLOR_nit__coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1231 if (unlikely(var6 == NULL)) {
1232 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1233 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 192);
1234 show_backtrace(1);
1235 }
1236 var4 = var6;
1237 RET_LABEL5:(void)0;
1238 }
1239 }
1240 var = var4;
1241 goto RET_LABEL;
1242 RET_LABEL:;
1243 return var;
1244 }
1245 /* method coloring#POSetColorer#conflicts_cache for (self: POSetColorer[Object]): Map[Object, Set[Object]] */
1246 val* nit___nit__POSetColorer___conflicts_cache(val* self) {
1247 val* var /* : Map[Object, Set[Object]] */;
1248 val* var1 /* : Map[Object, Set[Object]] */;
1249 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___conflicts_cache].val; /* _conflicts_cache on <self:POSetColorer[Object]> */
1250 if (unlikely(var1 == NULL)) {
1251 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts_cache");
1252 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 192);
1253 show_backtrace(1);
1254 }
1255 var = var1;
1256 RET_LABEL:;
1257 return var;
1258 }
1259 /* method coloring#POSetColorer#conflicts_cache= for (self: POSetColorer[Object], Map[Object, Set[Object]]) */
1260 void nit___nit__POSetColorer___conflicts_cache_61d(val* self, val* p0) {
1261 short int var /* : Bool */;
1262 int cltype;
1263 int idtype;
1264 const struct type* type_struct;
1265 const char* var_class_name;
1266 /* Covariant cast for argument 0 (conflicts_cache) <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1267 /* <p0:Map[Object, Set[Object]]> isa Map[E, Set[E]] */
1268 type_struct = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetColorer___35dE__standard__Set__nit__POSetColorer___35dE];
1269 cltype = type_struct->color;
1270 idtype = type_struct->id;
1271 if(cltype >= p0->type->table_size) {
1272 var = 0;
1273 } else {
1274 var = p0->type->type_table[cltype] == idtype;
1275 }
1276 if (unlikely(!var)) {
1277 var_class_name = p0 == NULL ? "null" : p0->type->name;
1278 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name);
1279 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 192);
1280 show_backtrace(1);
1281 }
1282 self->attrs[COLOR_nit__coloring__POSetColorer___conflicts_cache].val = p0; /* _conflicts_cache on <self:POSetColorer[Object]> */
1283 RET_LABEL:;
1284 }
1285 /* method coloring#POSetColorer#graph for (self: POSetColorer[Object]): POSetConflictGraph[Object] */
1286 val* nit___nit__POSetColorer___graph(val* self) {
1287 val* var /* : POSetConflictGraph[Object] */;
1288 val* var1 /* : POSetConflictGraph[Object] */;
1289 var1 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1290 if (unlikely(var1 == NULL)) {
1291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1292 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1293 show_backtrace(1);
1294 }
1295 var = var1;
1296 RET_LABEL:;
1297 return var;
1298 }
1299 /* method coloring#POSetColorer#graph= for (self: POSetColorer[Object], POSetConflictGraph[Object]) */
1300 void nit___nit__POSetColorer___graph_61d(val* self, val* p0) {
1301 short int var /* : Bool */;
1302 int cltype;
1303 int idtype;
1304 const struct type* type_struct;
1305 const char* var_class_name;
1306 /* Covariant cast for argument 0 (graph) <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1307 /* <p0:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1308 type_struct = self->type->resolution_table->types[COLOR_nit__POSetConflictGraph__nit__POSetColorer___35dE];
1309 cltype = type_struct->color;
1310 idtype = type_struct->id;
1311 if(cltype >= p0->type->table_size) {
1312 var = 0;
1313 } else {
1314 var = p0->type->type_table[cltype] == idtype;
1315 }
1316 if (unlikely(!var)) {
1317 var_class_name = p0 == NULL ? "null" : p0->type->name;
1318 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name);
1319 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1320 show_backtrace(1);
1321 }
1322 self->attrs[COLOR_nit__coloring__POSetColorer___graph].val = p0; /* _graph on <self:POSetColorer[Object]> */
1323 RET_LABEL:;
1324 }
1325 /* method coloring#POSetColorer#colorize for (self: POSetColorer[Object], POSet[Object]) */
1326 void nit___nit__POSetColorer___colorize(val* self, val* p0) {
1327 short int var /* : Bool */;
1328 int cltype;
1329 int idtype;
1330 const struct type* type_struct;
1331 const char* var_class_name;
1332 val* var_poset /* var poset: POSet[Object] */;
1333 short int var2 /* : Bool */;
1334 int cltype3;
1335 int idtype4;
1336 const struct type* type_struct5;
1337 const char* var_class_name6;
1338 val* var7 /* : POSetConflictGraph[Object] */;
1339 short int var9 /* : Bool */;
1340 int cltype10;
1341 int idtype11;
1342 const struct type* type_struct12;
1343 const char* var_class_name13;
1344 val* var14 /* : POSetConflictGraph[Object] */;
1345 val* var16 /* : POSetConflictGraph[Object] */;
1346 val* var17 /* : HashMap[Object, Set[Object]] */;
1347 val* var19 /* : HashMap[Object, Set[Object]] */;
1348 short int var21 /* : Bool */;
1349 int cltype22;
1350 int idtype23;
1351 const struct type* type_struct24;
1352 const char* var_class_name25;
1353 short int var26 /* : Bool */;
1354 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[E] */
1355 /* <p0:POSet[Object]> isa POSet[E] */
1356 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nit__POSetColorer___35dE];
1357 cltype = type_struct->color;
1358 idtype = type_struct->id;
1359 if(cltype >= p0->type->table_size) {
1360 var = 0;
1361 } else {
1362 var = p0->type->type_table[cltype] == idtype;
1363 }
1364 if (unlikely(!var)) {
1365 var_class_name = p0 == NULL ? "null" : p0->type->name;
1366 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name);
1367 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 196);
1368 show_backtrace(1);
1369 }
1370 var_poset = p0;
1371 {
1372 { /* Inline coloring#POSetColorer#poset_cache= (self,var_poset) on <self:POSetColorer[Object]> */
1373 /* Covariant cast for argument 0 (poset_cache) <var_poset:POSet[Object]> isa POSet[E] */
1374 /* <var_poset:POSet[Object]> isa POSet[E] */
1375 type_struct5 = self->type->resolution_table->types[COLOR_poset__POSet__nit__POSetColorer___35dE];
1376 cltype3 = type_struct5->color;
1377 idtype4 = type_struct5->id;
1378 if(cltype3 >= var_poset->type->table_size) {
1379 var2 = 0;
1380 } else {
1381 var2 = var_poset->type->type_table[cltype3] == idtype4;
1382 }
1383 if (unlikely(!var2)) {
1384 var_class_name6 = var_poset == NULL ? "null" : var_poset->type->name;
1385 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[E]", var_class_name6);
1386 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1387 show_backtrace(1);
1388 }
1389 self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val = var_poset; /* _poset_cache on <self:POSetColorer[Object]> */
1390 RET_LABEL1:(void)0;
1391 }
1392 }
1393 var7 = NEW_nit__POSetConflictGraph(self->type->resolution_table->types[COLOR_nit__POSetConflictGraph__nit__POSetColorer___35dE]);
1394 {
1395 ((void (*)(val* self, val* p0))(var7->class->vft[COLOR_nit__coloring__POSetConflictGraph__poset_61d]))(var7, var_poset) /* poset= on <var7:POSetConflictGraph[Object]>*/;
1396 }
1397 {
1398 ((void (*)(val* self))(var7->class->vft[COLOR_standard__kernel__Object__init]))(var7) /* init on <var7:POSetConflictGraph[Object]>*/;
1399 }
1400 {
1401 { /* Inline coloring#POSetColorer#graph= (self,var7) on <self:POSetColorer[Object]> */
1402 /* Covariant cast for argument 0 (graph) <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1403 /* <var7:POSetConflictGraph[Object]> isa POSetConflictGraph[E] */
1404 type_struct12 = self->type->resolution_table->types[COLOR_nit__POSetConflictGraph__nit__POSetColorer___35dE];
1405 cltype10 = type_struct12->color;
1406 idtype11 = type_struct12->id;
1407 if(cltype10 >= var7->type->table_size) {
1408 var9 = 0;
1409 } else {
1410 var9 = var7->type->type_table[cltype10] == idtype11;
1411 }
1412 if (unlikely(!var9)) {
1413 var_class_name13 = var7 == NULL ? "null" : var7->type->name;
1414 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSetConflictGraph[E]", var_class_name13);
1415 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1416 show_backtrace(1);
1417 }
1418 self->attrs[COLOR_nit__coloring__POSetColorer___graph].val = var7; /* _graph on <self:POSetColorer[Object]> */
1419 RET_LABEL8:(void)0;
1420 }
1421 }
1422 {
1423 nit___nit__POSetColorer___allocate_ids(self); /* Direct call coloring#POSetColorer#allocate_ids on <self:POSetColorer[Object]>*/
1424 }
1425 {
1426 nit___nit__POSetColorer___compute_colors(self); /* Direct call coloring#POSetColorer#compute_colors on <self:POSetColorer[Object]>*/
1427 }
1428 {
1429 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1430 var16 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1431 if (unlikely(var16 == NULL)) {
1432 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1433 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1434 show_backtrace(1);
1435 }
1436 var14 = var16;
1437 RET_LABEL15:(void)0;
1438 }
1439 }
1440 {
1441 { /* Inline coloring#POSetConflictGraph#conflicts (var14) on <var14:POSetConflictGraph[Object]> */
1442 var19 = var14->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var14:POSetConflictGraph[Object]> */
1443 if (unlikely(var19 == NULL)) {
1444 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1445 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
1446 show_backtrace(1);
1447 }
1448 var17 = var19;
1449 RET_LABEL18:(void)0;
1450 }
1451 }
1452 {
1453 { /* Inline coloring#POSetColorer#conflicts_cache= (self,var17) on <self:POSetColorer[Object]> */
1454 /* Covariant cast for argument 0 (conflicts_cache) <var17:HashMap[Object, Set[Object]]> isa Map[E, Set[E]] */
1455 /* <var17:HashMap[Object, Set[Object]]> isa Map[E, Set[E]] */
1456 type_struct24 = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetColorer___35dE__standard__Set__nit__POSetColorer___35dE];
1457 cltype22 = type_struct24->color;
1458 idtype23 = type_struct24->id;
1459 if(cltype22 >= var17->type->table_size) {
1460 var21 = 0;
1461 } else {
1462 var21 = var17->type->type_table[cltype22] == idtype23;
1463 }
1464 if (unlikely(!var21)) {
1465 var_class_name25 = var17 == NULL ? "null" : var17->type->name;
1466 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[E, Set[E]]", var_class_name25);
1467 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 192);
1468 show_backtrace(1);
1469 }
1470 self->attrs[COLOR_nit__coloring__POSetColorer___conflicts_cache].val = var17; /* _conflicts_cache on <self:POSetColorer[Object]> */
1471 RET_LABEL20:(void)0;
1472 }
1473 }
1474 var26 = 1;
1475 {
1476 { /* Inline coloring#POSetColorer#is_colored= (self,var26) on <self:POSetColorer[Object]> */
1477 self->attrs[COLOR_nit__coloring__POSetColorer___is_colored].s = var26; /* _is_colored on <self:POSetColorer[Object]> */
1478 RET_LABEL27:(void)0;
1479 }
1480 }
1481 RET_LABEL:;
1482 }
1483 /* method coloring#POSetColorer#allocate_ids for (self: POSetColorer[Object]) */
1484 void nit___nit__POSetColorer___allocate_ids(val* self) {
1485 val* var /* : HashMap[Object, Int] */;
1486 val* var2 /* : HashMap[Object, Int] */;
1487 val* var3 /* : HashSet[Object] */;
1488 val* var4 /* : POSet[Object] */;
1489 val* var6 /* : POSet[Object] */;
1490 val* var7 /* : Array[nullable Object] */;
1491 val* var_elements /* var elements: HashSet[Object] */;
1492 val* var8 /* : POSet[Object] */;
1493 val* var10 /* : POSet[Object] */;
1494 val* var11 /* : Array[nullable Object] */;
1495 val* var_ /* var : Array[Object] */;
1496 val* var12 /* : ArrayIterator[nullable Object] */;
1497 val* var_13 /* var : ArrayIterator[Object] */;
1498 short int var14 /* : Bool */;
1499 val* var15 /* : nullable Object */;
1500 val* var_e /* var e: Object */;
1501 val* var16 /* : HashMap[Object, Int] */;
1502 val* var18 /* : HashMap[Object, Int] */;
1503 val* var19 /* : HashMap[Object, Int] */;
1504 val* var21 /* : HashMap[Object, Int] */;
1505 long var22 /* : Int */;
1506 val* var23 /* : nullable Object */;
1507 {
1508 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1509 var2 = self->attrs[COLOR_nit__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1510 if (unlikely(var2 == NULL)) {
1511 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1512 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 170);
1513 show_backtrace(1);
1514 }
1515 var = var2;
1516 RET_LABEL1:(void)0;
1517 }
1518 }
1519 {
1520 standard___standard__HashMap___standard__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
1521 }
1522 var3 = NEW_standard__HashSet(self->type->resolution_table->types[COLOR_standard__HashSet__nit__POSetColorer___35dE]);
1523 {
1524 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1525 var6 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1526 if (unlikely(var6 == NULL)) {
1527 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1528 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1529 show_backtrace(1);
1530 }
1531 var4 = var6;
1532 RET_LABEL5:(void)0;
1533 }
1534 }
1535 {
1536 var7 = standard__array___Collection___to_a(var4);
1537 }
1538 {
1539 standard___standard__HashSet___from(var3, var7); /* Direct call hash_collection#HashSet#from on <var3:HashSet[Object]>*/
1540 }
1541 var_elements = var3;
1542 {
1543 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1544 var10 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1545 if (unlikely(var10 == NULL)) {
1546 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1547 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1548 show_backtrace(1);
1549 }
1550 var8 = var10;
1551 RET_LABEL9:(void)0;
1552 }
1553 }
1554 {
1555 var11 = poset___poset__POSet___linearize(var8, var_elements);
1556 }
1557 var_ = var11;
1558 {
1559 var12 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
1560 }
1561 var_13 = var12;
1562 for(;;) {
1563 {
1564 var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_13);
1565 }
1566 if (var14){
1567 {
1568 var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_13);
1569 }
1570 var_e = var15;
1571 {
1572 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1573 var18 = self->attrs[COLOR_nit__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1574 if (unlikely(var18 == NULL)) {
1575 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1576 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 170);
1577 show_backtrace(1);
1578 }
1579 var16 = var18;
1580 RET_LABEL17:(void)0;
1581 }
1582 }
1583 {
1584 { /* Inline coloring#POSetColorer#ids_cache (self) on <self:POSetColorer[Object]> */
1585 var21 = self->attrs[COLOR_nit__coloring__POSetColorer___ids_cache].val; /* _ids_cache on <self:POSetColorer[Object]> */
1586 if (unlikely(var21 == NULL)) {
1587 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ids_cache");
1588 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 170);
1589 show_backtrace(1);
1590 }
1591 var19 = var21;
1592 RET_LABEL20:(void)0;
1593 }
1594 }
1595 {
1596 var22 = standard___standard__HashMap___standard__abstract_collection__MapRead__length(var19);
1597 }
1598 {
1599 var23 = BOX_standard__Int(var22); /* autobox from Int to nullable Object */
1600 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var16, var_e, var23); /* Direct call hash_collection#HashMap#[]= on <var16:HashMap[Object, Int]>*/
1601 }
1602 {
1603 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_13); /* Direct call array#ArrayIterator#next on <var_13:ArrayIterator[Object]>*/
1604 }
1605 } else {
1606 goto BREAK_label;
1607 }
1608 }
1609 BREAK_label: (void)0;
1610 {
1611 { /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:ArrayIterator[Object]> */
1612 RET_LABEL24:(void)0;
1613 }
1614 }
1615 RET_LABEL:;
1616 }
1617 /* method coloring#POSetColorer#compute_colors for (self: POSetColorer[Object]) */
1618 void nit___nit__POSetColorer___compute_colors(val* self) {
1619 val* var /* : HashMap[Object, Int] */;
1620 val* var2 /* : HashMap[Object, Int] */;
1621 val* var3 /* : POSetConflictGraph[Object] */;
1622 val* var5 /* : POSetConflictGraph[Object] */;
1623 val* var6 /* : HashSet[Object] */;
1624 val* var8 /* : HashSet[Object] */;
1625 val* var9 /* : POSetConflictGraph[Object] */;
1626 val* var11 /* : POSetConflictGraph[Object] */;
1627 val* var12 /* : HashSet[Object] */;
1628 val* var14 /* : HashSet[Object] */;
1629 {
1630 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1631 var2 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1632 if (unlikely(var2 == NULL)) {
1633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1634 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
1635 show_backtrace(1);
1636 }
1637 var = var2;
1638 RET_LABEL1:(void)0;
1639 }
1640 }
1641 {
1642 standard___standard__HashMap___standard__abstract_collection__Map__clear(var); /* Direct call hash_collection#HashMap#clear on <var:HashMap[Object, Int]>*/
1643 }
1644 {
1645 nit___nit__POSetColorer___colorize_core(self); /* Direct call coloring#POSetColorer#colorize_core on <self:POSetColorer[Object]>*/
1646 }
1647 {
1648 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1649 var5 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1650 if (unlikely(var5 == NULL)) {
1651 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1652 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1653 show_backtrace(1);
1654 }
1655 var3 = var5;
1656 RET_LABEL4:(void)0;
1657 }
1658 }
1659 {
1660 { /* Inline coloring#POSetConflictGraph#border (var3) on <var3:POSetConflictGraph[Object]> */
1661 var8 = var3->attrs[COLOR_nit__coloring__POSetConflictGraph___border].val; /* _border on <var3:POSetConflictGraph[Object]> */
1662 if (unlikely(var8 == NULL)) {
1663 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _border");
1664 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 28);
1665 show_backtrace(1);
1666 }
1667 var6 = var8;
1668 RET_LABEL7:(void)0;
1669 }
1670 }
1671 {
1672 nit___nit__POSetColorer___colorize_set(self, var6); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
1673 }
1674 {
1675 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1676 var11 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1677 if (unlikely(var11 == NULL)) {
1678 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1679 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1680 show_backtrace(1);
1681 }
1682 var9 = var11;
1683 RET_LABEL10:(void)0;
1684 }
1685 }
1686 {
1687 { /* Inline coloring#POSetConflictGraph#crown (var9) on <var9:POSetConflictGraph[Object]> */
1688 var14 = var9->attrs[COLOR_nit__coloring__POSetConflictGraph___crown].val; /* _crown on <var9:POSetConflictGraph[Object]> */
1689 if (unlikely(var14 == NULL)) {
1690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _crown");
1691 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 34);
1692 show_backtrace(1);
1693 }
1694 var12 = var14;
1695 RET_LABEL13:(void)0;
1696 }
1697 }
1698 {
1699 nit___nit__POSetColorer___colorize_set(self, var12); /* Direct call coloring#POSetColorer#colorize_set on <self:POSetColorer[Object]>*/
1700 }
1701 RET_LABEL:;
1702 }
1703 /* method coloring#POSetColorer#colorize_core for (self: POSetColorer[Object]) */
1704 void nit___nit__POSetColorer___colorize_core(val* self) {
1705 val* var /* : POSet[Object] */;
1706 val* var2 /* : POSet[Object] */;
1707 val* var3 /* : POSetConflictGraph[Object] */;
1708 val* var5 /* : POSetConflictGraph[Object] */;
1709 val* var6 /* : HashSet[Object] */;
1710 val* var8 /* : HashSet[Object] */;
1711 val* var9 /* : Array[nullable Object] */;
1712 val* var_ /* var : Array[Object] */;
1713 val* var10 /* : ArrayIterator[nullable Object] */;
1714 val* var_11 /* var : ArrayIterator[Object] */;
1715 short int var12 /* : Bool */;
1716 val* var13 /* : nullable Object */;
1717 val* var_e /* var e: Object */;
1718 long var14 /* : Int */;
1719 long var_color /* var color: Int */;
1720 val* var15 /* : POSetConflictGraph[Object] */;
1721 val* var17 /* : POSetConflictGraph[Object] */;
1722 val* var18 /* : HashMap[Object, Set[Object]] */;
1723 val* var20 /* : HashMap[Object, Set[Object]] */;
1724 val* var21 /* : nullable Object */;
1725 val* var_conflicts /* var conflicts: Set[Object] */;
1726 short int var22 /* : Bool */;
1727 short int var23 /* : Bool */;
1728 long var24 /* : Int */;
1729 long var25 /* : Int */;
1730 short int var27 /* : Bool */;
1731 int cltype;
1732 int idtype;
1733 const char* var_class_name;
1734 long var28 /* : Int */;
1735 val* var29 /* : HashMap[Object, Int] */;
1736 val* var31 /* : HashMap[Object, Int] */;
1737 val* var32 /* : nullable Object */;
1738 {
1739 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1740 var2 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1741 if (unlikely(var2 == NULL)) {
1742 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1743 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1744 show_backtrace(1);
1745 }
1746 var = var2;
1747 RET_LABEL1:(void)0;
1748 }
1749 }
1750 {
1751 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1752 var5 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1753 if (unlikely(var5 == NULL)) {
1754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1755 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1756 show_backtrace(1);
1757 }
1758 var3 = var5;
1759 RET_LABEL4:(void)0;
1760 }
1761 }
1762 {
1763 { /* Inline coloring#POSetConflictGraph#core (var3) on <var3:POSetConflictGraph[Object]> */
1764 var8 = var3->attrs[COLOR_nit__coloring__POSetConflictGraph___core].val; /* _core on <var3:POSetConflictGraph[Object]> */
1765 if (unlikely(var8 == NULL)) {
1766 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _core");
1767 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 22);
1768 show_backtrace(1);
1769 }
1770 var6 = var8;
1771 RET_LABEL7:(void)0;
1772 }
1773 }
1774 {
1775 var9 = poset___poset__POSet___linearize(var, var6);
1776 }
1777 var_ = var9;
1778 {
1779 var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
1780 }
1781 var_11 = var10;
1782 for(;;) {
1783 {
1784 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
1785 }
1786 if (var12){
1787 {
1788 var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
1789 }
1790 var_e = var13;
1791 {
1792 var14 = nit___nit__POSetColorer___min_color(self, var_e);
1793 }
1794 var_color = var14;
1795 {
1796 { /* Inline coloring#POSetColorer#graph (self) on <self:POSetColorer[Object]> */
1797 var17 = self->attrs[COLOR_nit__coloring__POSetColorer___graph].val; /* _graph on <self:POSetColorer[Object]> */
1798 if (unlikely(var17 == NULL)) {
1799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _graph");
1800 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 194);
1801 show_backtrace(1);
1802 }
1803 var15 = var17;
1804 RET_LABEL16:(void)0;
1805 }
1806 }
1807 {
1808 { /* Inline coloring#POSetConflictGraph#conflicts (var15) on <var15:POSetConflictGraph[Object]> */
1809 var20 = var15->attrs[COLOR_nit__coloring__POSetConflictGraph___conflicts].val; /* _conflicts on <var15:POSetConflictGraph[Object]> */
1810 if (unlikely(var20 == NULL)) {
1811 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
1812 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 40);
1813 show_backtrace(1);
1814 }
1815 var18 = var20;
1816 RET_LABEL19:(void)0;
1817 }
1818 }
1819 {
1820 var21 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var18, var_e);
1821 }
1822 var_conflicts = var21;
1823 for(;;) {
1824 {
1825 var22 = nit___nit__POSetColorer___is_color_free(self, var_color, var_conflicts);
1826 }
1827 var23 = !var22;
1828 if (var23){
1829 var24 = 1;
1830 {
1831 { /* Inline kernel#Int#+ (var_color,var24) on <var_color:Int> */
1832 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
1833 /* <var24:Int> isa OTHER */
1834 var27 = 1; /* easy <var24:Int> isa OTHER*/
1835 if (unlikely(!var27)) {
1836 var_class_name = type_standard__Int.name;
1837 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1838 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
1839 show_backtrace(1);
1840 }
1841 var28 = var_color + var24;
1842 var25 = var28;
1843 goto RET_LABEL26;
1844 RET_LABEL26:(void)0;
1845 }
1846 }
1847 var_color = var25;
1848 } else {
1849 goto BREAK_label;
1850 }
1851 }
1852 BREAK_label: (void)0;
1853 {
1854 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1855 var31 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1856 if (unlikely(var31 == NULL)) {
1857 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1858 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
1859 show_backtrace(1);
1860 }
1861 var29 = var31;
1862 RET_LABEL30:(void)0;
1863 }
1864 }
1865 {
1866 var32 = BOX_standard__Int(var_color); /* autobox from Int to nullable Object */
1867 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var29, var_e, var32); /* Direct call hash_collection#HashMap#[]= on <var29:HashMap[Object, Int]>*/
1868 }
1869 {
1870 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[Object]>*/
1871 }
1872 } else {
1873 goto BREAK_label33;
1874 }
1875 }
1876 BREAK_label33: (void)0;
1877 {
1878 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[Object]> */
1879 RET_LABEL34:(void)0;
1880 }
1881 }
1882 RET_LABEL:;
1883 }
1884 /* method coloring#POSetColorer#colorize_set for (self: POSetColorer[Object], Set[Object]) */
1885 void nit___nit__POSetColorer___colorize_set(val* self, val* p0) {
1886 short int var /* : Bool */;
1887 int cltype;
1888 int idtype;
1889 const struct type* type_struct;
1890 const char* var_class_name;
1891 val* var_set /* var set: Set[Object] */;
1892 val* var1 /* : POSet[Object] */;
1893 val* var3 /* : POSet[Object] */;
1894 val* var4 /* : Array[nullable Object] */;
1895 val* var_ /* var : Array[Object] */;
1896 val* var5 /* : ArrayIterator[nullable Object] */;
1897 val* var_6 /* var : ArrayIterator[Object] */;
1898 short int var7 /* : Bool */;
1899 val* var8 /* : nullable Object */;
1900 val* var_e /* var e: Object */;
1901 val* var9 /* : HashMap[Object, Int] */;
1902 val* var11 /* : HashMap[Object, Int] */;
1903 long var12 /* : Int */;
1904 val* var13 /* : nullable Object */;
1905 /* Covariant cast for argument 0 (set) <p0:Set[Object]> isa Set[E] */
1906 /* <p0:Set[Object]> isa Set[E] */
1907 type_struct = self->type->resolution_table->types[COLOR_standard__Set__nit__POSetColorer___35dE];
1908 cltype = type_struct->color;
1909 idtype = type_struct->id;
1910 if(cltype >= p0->type->table_size) {
1911 var = 0;
1912 } else {
1913 var = p0->type->type_table[cltype] == idtype;
1914 }
1915 if (unlikely(!var)) {
1916 var_class_name = p0 == NULL ? "null" : p0->type->name;
1917 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Set[E]", var_class_name);
1918 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 236);
1919 show_backtrace(1);
1920 }
1921 var_set = p0;
1922 {
1923 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
1924 var3 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
1925 if (unlikely(var3 == NULL)) {
1926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
1927 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
1928 show_backtrace(1);
1929 }
1930 var1 = var3;
1931 RET_LABEL2:(void)0;
1932 }
1933 }
1934 {
1935 var4 = poset___poset__POSet___linearize(var1, var_set);
1936 }
1937 var_ = var4;
1938 {
1939 var5 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
1940 }
1941 var_6 = var5;
1942 for(;;) {
1943 {
1944 var7 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_6);
1945 }
1946 if (var7){
1947 {
1948 var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_6);
1949 }
1950 var_e = var8;
1951 {
1952 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
1953 var11 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
1954 if (unlikely(var11 == NULL)) {
1955 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
1956 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
1957 show_backtrace(1);
1958 }
1959 var9 = var11;
1960 RET_LABEL10:(void)0;
1961 }
1962 }
1963 {
1964 var12 = nit___nit__POSetColorer___min_color(self, var_e);
1965 }
1966 {
1967 var13 = BOX_standard__Int(var12); /* autobox from Int to nullable Object */
1968 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var9, var_e, var13); /* Direct call hash_collection#HashMap#[]= on <var9:HashMap[Object, Int]>*/
1969 }
1970 {
1971 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[Object]>*/
1972 }
1973 } else {
1974 goto BREAK_label;
1975 }
1976 }
1977 BREAK_label: (void)0;
1978 {
1979 { /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[Object]> */
1980 RET_LABEL14:(void)0;
1981 }
1982 }
1983 RET_LABEL:;
1984 }
1985 /* method coloring#POSetColorer#min_color for (self: POSetColorer[Object], Object): Int */
1986 long nit___nit__POSetColorer___min_color(val* self, val* p0) {
1987 long var /* : Int */;
1988 short int var1 /* : Bool */;
1989 int cltype;
1990 int idtype;
1991 const struct type* type_struct;
1992 const char* var_class_name;
1993 val* var_e /* var e: Object */;
1994 long var2 /* : Int */;
1995 long var3 /* : Int */;
1996 long var5 /* : Int */;
1997 long var_max_color /* var max_color: Int */;
1998 val* var6 /* : POSet[Object] */;
1999 val* var8 /* : POSet[Object] */;
2000 val* var9 /* : POSetElement[nullable Object] */;
2001 val* var10 /* : Collection[nullable Object] */;
2002 val* var_ /* var : Collection[Object] */;
2003 val* var11 /* : Iterator[nullable Object] */;
2004 val* var_12 /* var : Iterator[Object] */;
2005 short int var13 /* : Bool */;
2006 val* var14 /* : nullable Object */;
2007 val* var_p /* var p: Object */;
2008 val* var15 /* : HashMap[Object, Int] */;
2009 val* var17 /* : HashMap[Object, Int] */;
2010 short int var18 /* : Bool */;
2011 short int var19 /* : Bool */;
2012 val* var20 /* : HashMap[Object, Int] */;
2013 val* var22 /* : HashMap[Object, Int] */;
2014 val* var23 /* : nullable Object */;
2015 long var24 /* : Int */;
2016 long var_color /* var color: Int */;
2017 short int var25 /* : Bool */;
2018 short int var27 /* : Bool */;
2019 int cltype28;
2020 int idtype29;
2021 const char* var_class_name30;
2022 short int var31 /* : Bool */;
2023 long var34 /* : Int */;
2024 long var35 /* : Int */;
2025 short int var37 /* : Bool */;
2026 int cltype38;
2027 int idtype39;
2028 const char* var_class_name40;
2029 long var41 /* : Int */;
2030 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
2031 /* <p0:Object> isa E */
2032 type_struct = self->type->resolution_table->types[COLOR_nit__POSetColorer___35dE];
2033 cltype = type_struct->color;
2034 idtype = type_struct->id;
2035 if(cltype >= p0->type->table_size) {
2036 var1 = 0;
2037 } else {
2038 var1 = p0->type->type_table[cltype] == idtype;
2039 }
2040 if (unlikely(!var1)) {
2041 var_class_name = p0 == NULL ? "null" : p0->type->name;
2042 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2043 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 241);
2044 show_backtrace(1);
2045 }
2046 var_e = p0;
2047 var2 = 1;
2048 {
2049 { /* Inline kernel#Int#unary - (var2) on <var2:Int> */
2050 var5 = -var2;
2051 var3 = var5;
2052 goto RET_LABEL4;
2053 RET_LABEL4:(void)0;
2054 }
2055 }
2056 var_max_color = var3;
2057 {
2058 { /* Inline coloring#POSetColorer#poset_cache (self) on <self:POSetColorer[Object]> */
2059 var8 = self->attrs[COLOR_nit__coloring__POSetColorer___poset_cache].val; /* _poset_cache on <self:POSetColorer[Object]> */
2060 if (unlikely(var8 == NULL)) {
2061 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset_cache");
2062 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 185);
2063 show_backtrace(1);
2064 }
2065 var6 = var8;
2066 RET_LABEL7:(void)0;
2067 }
2068 }
2069 {
2070 var9 = poset___poset__POSet____91d_93d(var6, var_e);
2071 }
2072 {
2073 var10 = poset___poset__POSetElement___direct_greaters(var9);
2074 }
2075 var_ = var10;
2076 {
2077 var11 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
2078 }
2079 var_12 = var11;
2080 for(;;) {
2081 {
2082 var13 = ((short int (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_12) /* is_ok on <var_12:Iterator[Object]>*/;
2083 }
2084 if (var13){
2085 {
2086 var14 = ((val* (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_12) /* item on <var_12:Iterator[Object]>*/;
2087 }
2088 var_p = var14;
2089 {
2090 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2091 var17 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2092 if (unlikely(var17 == NULL)) {
2093 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2094 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
2095 show_backtrace(1);
2096 }
2097 var15 = var17;
2098 RET_LABEL16:(void)0;
2099 }
2100 }
2101 {
2102 var18 = standard___standard__MapRead___has_key(var15, var_p);
2103 }
2104 var19 = !var18;
2105 if (var19){
2106 goto BREAK_label;
2107 } else {
2108 }
2109 {
2110 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2111 var22 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2112 if (unlikely(var22 == NULL)) {
2113 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2114 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
2115 show_backtrace(1);
2116 }
2117 var20 = var22;
2118 RET_LABEL21:(void)0;
2119 }
2120 }
2121 {
2122 var23 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var20, var_p);
2123 }
2124 var24 = ((struct instance_standard__Int*)var23)->value; /* autounbox from nullable Object to Int */;
2125 var_color = var24;
2126 {
2127 { /* Inline kernel#Int#> (var_color,var_max_color) on <var_color:Int> */
2128 /* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
2129 /* <var_max_color:Int> isa OTHER */
2130 var27 = 1; /* easy <var_max_color:Int> isa OTHER*/
2131 if (unlikely(!var27)) {
2132 var_class_name30 = type_standard__Int.name;
2133 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
2134 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
2135 show_backtrace(1);
2136 }
2137 var31 = var_color > var_max_color;
2138 var25 = var31;
2139 goto RET_LABEL26;
2140 RET_LABEL26:(void)0;
2141 }
2142 }
2143 if (var25){
2144 var_max_color = var_color;
2145 } else {
2146 }
2147 BREAK_label: (void)0;
2148 {
2149 ((void (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_12) /* next on <var_12:Iterator[Object]>*/;
2150 }
2151 } else {
2152 goto BREAK_label32;
2153 }
2154 }
2155 BREAK_label32: (void)0;
2156 {
2157 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:Iterator[Object]> */
2158 RET_LABEL33:(void)0;
2159 }
2160 }
2161 var34 = 1;
2162 {
2163 { /* Inline kernel#Int#+ (var_max_color,var34) on <var_max_color:Int> */
2164 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
2165 /* <var34:Int> isa OTHER */
2166 var37 = 1; /* easy <var34:Int> isa OTHER*/
2167 if (unlikely(!var37)) {
2168 var_class_name40 = type_standard__Int.name;
2169 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
2170 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
2171 show_backtrace(1);
2172 }
2173 var41 = var_max_color + var34;
2174 var35 = var41;
2175 goto RET_LABEL36;
2176 RET_LABEL36:(void)0;
2177 }
2178 }
2179 var = var35;
2180 goto RET_LABEL;
2181 RET_LABEL:;
2182 return var;
2183 }
2184 /* method coloring#POSetColorer#is_color_free for (self: POSetColorer[Object], Int, Collection[Object]): Bool */
2185 short int nit___nit__POSetColorer___is_color_free(val* self, long p0, val* p1) {
2186 short int var /* : Bool */;
2187 short int var1 /* : Bool */;
2188 int cltype;
2189 int idtype;
2190 const struct type* type_struct;
2191 const char* var_class_name;
2192 long var_color /* var color: Int */;
2193 val* var_set /* var set: Collection[Object] */;
2194 val* var_ /* var : Collection[Object] */;
2195 val* var2 /* : Iterator[nullable Object] */;
2196 val* var_3 /* var : Iterator[Object] */;
2197 short int var4 /* : Bool */;
2198 val* var5 /* : nullable Object */;
2199 val* var_e /* var e: Object */;
2200 short int var6 /* : Bool */;
2201 val* var7 /* : HashMap[Object, Int] */;
2202 val* var9 /* : HashMap[Object, Int] */;
2203 short int var10 /* : Bool */;
2204 short int var_11 /* var : Bool */;
2205 val* var12 /* : HashMap[Object, Int] */;
2206 val* var14 /* : HashMap[Object, Int] */;
2207 val* var15 /* : nullable Object */;
2208 short int var16 /* : Bool */;
2209 short int var18 /* : Bool */;
2210 long var19 /* : Int */;
2211 short int var20 /* : Bool */;
2212 short int var22 /* : Bool */;
2213 /* Covariant cast for argument 1 (set) <p1:Collection[Object]> isa Collection[E] */
2214 /* <p1:Collection[Object]> isa Collection[E] */
2215 type_struct = self->type->resolution_table->types[COLOR_standard__Collection__nit__POSetColorer___35dE];
2216 cltype = type_struct->color;
2217 idtype = type_struct->id;
2218 if(cltype >= p1->type->table_size) {
2219 var1 = 0;
2220 } else {
2221 var1 = p1->type->type_table[cltype] == idtype;
2222 }
2223 if (unlikely(!var1)) {
2224 var_class_name = p1 == NULL ? "null" : p1->type->name;
2225 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
2226 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 252);
2227 show_backtrace(1);
2228 }
2229 var_color = p0;
2230 var_set = p1;
2231 var_ = var_set;
2232 {
2233 var2 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
2234 }
2235 var_3 = var2;
2236 for(;;) {
2237 {
2238 var4 = ((short int (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on <var_3:Iterator[Object]>*/;
2239 }
2240 if (var4){
2241 {
2242 var5 = ((val* (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_3) /* item on <var_3:Iterator[Object]>*/;
2243 }
2244 var_e = var5;
2245 {
2246 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2247 var9 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2248 if (unlikely(var9 == NULL)) {
2249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2250 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
2251 show_backtrace(1);
2252 }
2253 var7 = var9;
2254 RET_LABEL8:(void)0;
2255 }
2256 }
2257 {
2258 var10 = standard___standard__MapRead___has_key(var7, var_e);
2259 }
2260 var_11 = var10;
2261 if (var10){
2262 {
2263 { /* Inline coloring#POSetColorer#colors_cache (self) on <self:POSetColorer[Object]> */
2264 var14 = self->attrs[COLOR_nit__coloring__POSetColorer___colors_cache].val; /* _colors_cache on <self:POSetColorer[Object]> */
2265 if (unlikely(var14 == NULL)) {
2266 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors_cache");
2267 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 178);
2268 show_backtrace(1);
2269 }
2270 var12 = var14;
2271 RET_LABEL13:(void)0;
2272 }
2273 }
2274 {
2275 var15 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var12, var_e);
2276 }
2277 {
2278 { /* Inline kernel#Int#== (var15,var_color) on <var15:nullable Object(Int)> */
2279 var18 = (var15 != NULL) && (var15->class == &class_standard__Int);
2280 if (var18) {
2281 var19 = ((struct instance_standard__Int*)var15)->value; /* autounbox from nullable Object to Int */;
2282 var18 = (var19 == var_color);
2283 }
2284 var16 = var18;
2285 goto RET_LABEL17;
2286 RET_LABEL17:(void)0;
2287 }
2288 }
2289 var6 = var16;
2290 } else {
2291 var6 = var_11;
2292 }
2293 if (var6){
2294 var20 = 0;
2295 var = var20;
2296 goto RET_LABEL;
2297 } else {
2298 }
2299 {
2300 ((void (*)(val* self))(var_3->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_3) /* next on <var_3:Iterator[Object]>*/;
2301 }
2302 } else {
2303 goto BREAK_label;
2304 }
2305 }
2306 BREAK_label: (void)0;
2307 {
2308 { /* Inline abstract_collection#Iterator#finish (var_3) on <var_3:Iterator[Object]> */
2309 RET_LABEL21:(void)0;
2310 }
2311 }
2312 var22 = 1;
2313 var = var22;
2314 goto RET_LABEL;
2315 RET_LABEL:;
2316 return var;
2317 }
2318 /* method coloring#BucketsColorer#colors for (self: BucketsColorer[Object, Object]): HashMap[Object, Int] */
2319 val* nit___nit__BucketsColorer___colors(val* self) {
2320 val* var /* : HashMap[Object, Int] */;
2321 val* var1 /* : HashMap[Object, Int] */;
2322 var1 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2323 if (unlikely(var1 == NULL)) {
2324 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2325 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2326 show_backtrace(1);
2327 }
2328 var = var1;
2329 RET_LABEL:;
2330 return var;
2331 }
2332 /* method coloring#BucketsColorer#conflicts for (self: BucketsColorer[Object, Object]): HashMap[Object, Set[Object]] */
2333 val* nit___nit__BucketsColorer___conflicts(val* self) {
2334 val* var /* : HashMap[Object, Set[Object]] */;
2335 val* var1 /* : HashMap[Object, Set[Object]] */;
2336 var1 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2337 if (unlikely(var1 == NULL)) {
2338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2339 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2340 show_backtrace(1);
2341 }
2342 var = var1;
2343 RET_LABEL:;
2344 return var;
2345 }
2346 /* method coloring#BucketsColorer#colorize for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
2347 val* nit___nit__BucketsColorer___colorize(val* self, val* p0) {
2348 val* var /* : Map[Object, Int] */;
2349 short int var1 /* : Bool */;
2350 int cltype;
2351 int idtype;
2352 const struct type* type_struct;
2353 const char* var_class_name;
2354 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
2355 long var2 /* : Int */;
2356 long var_min_color /* var min_color: Int */;
2357 val* var_ /* var : Map[Object, Set[Object]] */;
2358 val* var3 /* : MapIterator[nullable Object, nullable Object] */;
2359 val* var_4 /* var : MapIterator[Object, Set[Object]] */;
2360 short int var5 /* : Bool */;
2361 val* var6 /* : nullable Object */;
2362 val* var_holder /* var holder: Object */;
2363 val* var7 /* : nullable Object */;
2364 val* var_hbuckets /* var hbuckets: Set[Object] */;
2365 val* var_8 /* var : Set[Object] */;
2366 val* var9 /* : Iterator[nullable Object] */;
2367 val* var_10 /* var : Iterator[Object] */;
2368 short int var11 /* : Bool */;
2369 val* var12 /* : nullable Object */;
2370 val* var_bucket /* var bucket: Object */;
2371 val* var13 /* : HashMap[Object, Int] */;
2372 val* var15 /* : HashMap[Object, Int] */;
2373 short int var16 /* : Bool */;
2374 long var_color /* var color: Int */;
2375 short int var17 /* : Bool */;
2376 short int var18 /* : Bool */;
2377 long var19 /* : Int */;
2378 long var20 /* : Int */;
2379 short int var22 /* : Bool */;
2380 int cltype23;
2381 int idtype24;
2382 const char* var_class_name25;
2383 long var26 /* : Int */;
2384 val* var28 /* : HashMap[Object, Int] */;
2385 val* var30 /* : HashMap[Object, Int] */;
2386 val* var31 /* : nullable Object */;
2387 val* var36 /* : HashMap[Object, Int] */;
2388 val* var38 /* : HashMap[Object, Int] */;
2389 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2390 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2391 type_struct = self->type->resolution_table->types[COLOR_standard__Map__nit__BucketsColorer___35dH__standard__Set__nit__BucketsColorer___35dE];
2392 cltype = type_struct->color;
2393 idtype = type_struct->id;
2394 if(cltype >= p0->type->table_size) {
2395 var1 = 0;
2396 } else {
2397 var1 = p0->type->type_table[cltype] == idtype;
2398 }
2399 if (unlikely(!var1)) {
2400 var_class_name = p0 == NULL ? "null" : p0->type->name;
2401 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
2402 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 287);
2403 show_backtrace(1);
2404 }
2405 var_buckets = p0;
2406 {
2407 nit___nit__BucketsColorer___compute_conflicts(self, var_buckets); /* Direct call coloring#BucketsColorer#compute_conflicts on <self:BucketsColorer[Object, Object]>*/
2408 }
2409 var2 = 0;
2410 var_min_color = var2;
2411 var_ = var_buckets;
2412 {
2413 var3 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_) /* iterator on <var_:Map[Object, Set[Object]]>*/;
2414 }
2415 var_4 = var3;
2416 for(;;) {
2417 {
2418 var5 = ((short int (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_4) /* is_ok on <var_4:MapIterator[Object, Set[Object]]>*/;
2419 }
2420 if (var5){
2421 {
2422 var6 = ((val* (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_4) /* key on <var_4:MapIterator[Object, Set[Object]]>*/;
2423 }
2424 var_holder = var6;
2425 {
2426 var7 = ((val* (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_4) /* item on <var_4:MapIterator[Object, Set[Object]]>*/;
2427 }
2428 var_hbuckets = var7;
2429 var_8 = var_hbuckets;
2430 {
2431 var9 = ((val* (*)(val* self))(var_8->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_8) /* iterator on <var_8:Set[Object]>*/;
2432 }
2433 var_10 = var9;
2434 for(;;) {
2435 {
2436 var11 = ((short int (*)(val* self))(var_10->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_10) /* is_ok on <var_10:Iterator[Object]>*/;
2437 }
2438 if (var11){
2439 {
2440 var12 = ((val* (*)(val* self))(var_10->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_10) /* item on <var_10:Iterator[Object]>*/;
2441 }
2442 var_bucket = var12;
2443 {
2444 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2445 var15 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2446 if (unlikely(var15 == NULL)) {
2447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2448 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2449 show_backtrace(1);
2450 }
2451 var13 = var15;
2452 RET_LABEL14:(void)0;
2453 }
2454 }
2455 {
2456 var16 = standard___standard__MapRead___has_key(var13, var_bucket);
2457 }
2458 if (var16){
2459 goto BREAK_label;
2460 } else {
2461 }
2462 var_color = var_min_color;
2463 for(;;) {
2464 {
2465 var17 = nit___nit__BucketsColorer___is_color_free(self, var_bucket, var_color);
2466 }
2467 var18 = !var17;
2468 if (var18){
2469 var19 = 1;
2470 {
2471 { /* Inline kernel#Int#+ (var_color,var19) on <var_color:Int> */
2472 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
2473 /* <var19:Int> isa OTHER */
2474 var22 = 1; /* easy <var19:Int> isa OTHER*/
2475 if (unlikely(!var22)) {
2476 var_class_name25 = type_standard__Int.name;
2477 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
2478 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
2479 show_backtrace(1);
2480 }
2481 var26 = var_color + var19;
2482 var20 = var26;
2483 goto RET_LABEL21;
2484 RET_LABEL21:(void)0;
2485 }
2486 }
2487 var_color = var20;
2488 } else {
2489 goto BREAK_label27;
2490 }
2491 }
2492 BREAK_label27: (void)0;
2493 {
2494 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2495 var30 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2496 if (unlikely(var30 == NULL)) {
2497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2499 show_backtrace(1);
2500 }
2501 var28 = var30;
2502 RET_LABEL29:(void)0;
2503 }
2504 }
2505 {
2506 var31 = BOX_standard__Int(var_color); /* autobox from Int to nullable Object */
2507 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var28, var_bucket, var31); /* Direct call hash_collection#HashMap#[]= on <var28:HashMap[Object, Int]>*/
2508 }
2509 var_color = var_min_color;
2510 BREAK_label: (void)0;
2511 {
2512 ((void (*)(val* self))(var_10->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_10) /* next on <var_10:Iterator[Object]>*/;
2513 }
2514 } else {
2515 goto BREAK_label32;
2516 }
2517 }
2518 BREAK_label32: (void)0;
2519 {
2520 { /* Inline abstract_collection#Iterator#finish (var_10) on <var_10:Iterator[Object]> */
2521 RET_LABEL33:(void)0;
2522 }
2523 }
2524 {
2525 ((void (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_4) /* next on <var_4:MapIterator[Object, Set[Object]]>*/;
2526 }
2527 } else {
2528 goto BREAK_label34;
2529 }
2530 }
2531 BREAK_label34: (void)0;
2532 {
2533 { /* Inline abstract_collection#MapIterator#finish (var_4) on <var_4:MapIterator[Object, Set[Object]]> */
2534 RET_LABEL35:(void)0;
2535 }
2536 }
2537 {
2538 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2539 var38 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2540 if (unlikely(var38 == NULL)) {
2541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2542 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2543 show_backtrace(1);
2544 }
2545 var36 = var38;
2546 RET_LABEL37:(void)0;
2547 }
2548 }
2549 var = var36;
2550 goto RET_LABEL;
2551 RET_LABEL:;
2552 return var;
2553 }
2554 /* method coloring#BucketsColorer#is_color_free for (self: BucketsColorer[Object, Object], Object, Int): Bool */
2555 short int nit___nit__BucketsColorer___is_color_free(val* self, val* p0, long p1) {
2556 short int var /* : Bool */;
2557 short int var1 /* : Bool */;
2558 int cltype;
2559 int idtype;
2560 const struct type* type_struct;
2561 const char* var_class_name;
2562 val* var_bucket /* var bucket: Object */;
2563 long var_color /* var color: Int */;
2564 val* var2 /* : HashMap[Object, Set[Object]] */;
2565 val* var4 /* : HashMap[Object, Set[Object]] */;
2566 short int var5 /* : Bool */;
2567 val* var6 /* : HashMap[Object, Set[Object]] */;
2568 val* var8 /* : HashMap[Object, Set[Object]] */;
2569 val* var9 /* : nullable Object */;
2570 val* var_ /* var : Set[Object] */;
2571 val* var10 /* : Iterator[nullable Object] */;
2572 val* var_11 /* var : Iterator[Object] */;
2573 short int var12 /* : Bool */;
2574 val* var13 /* : nullable Object */;
2575 val* var_other /* var other: Object */;
2576 short int var14 /* : Bool */;
2577 val* var15 /* : HashMap[Object, Int] */;
2578 val* var17 /* : HashMap[Object, Int] */;
2579 short int var18 /* : Bool */;
2580 short int var_19 /* var : Bool */;
2581 val* var20 /* : HashMap[Object, Int] */;
2582 val* var22 /* : HashMap[Object, Int] */;
2583 val* var23 /* : nullable Object */;
2584 short int var24 /* : Bool */;
2585 short int var26 /* : Bool */;
2586 long var27 /* : Int */;
2587 short int var28 /* : Bool */;
2588 short int var30 /* : Bool */;
2589 /* Covariant cast for argument 0 (bucket) <p0:Object> isa E */
2590 /* <p0:Object> isa E */
2591 type_struct = self->type->resolution_table->types[COLOR_nit__BucketsColorer___35dE];
2592 cltype = type_struct->color;
2593 idtype = type_struct->id;
2594 if(cltype >= p0->type->table_size) {
2595 var1 = 0;
2596 } else {
2597 var1 = p0->type->type_table[cltype] == idtype;
2598 }
2599 if (unlikely(!var1)) {
2600 var_class_name = p0 == NULL ? "null" : p0->type->name;
2601 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
2602 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 305);
2603 show_backtrace(1);
2604 }
2605 var_bucket = p0;
2606 var_color = p1;
2607 {
2608 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2609 var4 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2610 if (unlikely(var4 == NULL)) {
2611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2612 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2613 show_backtrace(1);
2614 }
2615 var2 = var4;
2616 RET_LABEL3:(void)0;
2617 }
2618 }
2619 {
2620 var5 = standard___standard__MapRead___has_key(var2, var_bucket);
2621 }
2622 if (var5){
2623 {
2624 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2625 var8 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2626 if (unlikely(var8 == NULL)) {
2627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2628 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2629 show_backtrace(1);
2630 }
2631 var6 = var8;
2632 RET_LABEL7:(void)0;
2633 }
2634 }
2635 {
2636 var9 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var6, var_bucket);
2637 }
2638 var_ = var9;
2639 {
2640 var10 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
2641 }
2642 var_11 = var10;
2643 for(;;) {
2644 {
2645 var12 = ((short int (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_11) /* is_ok on <var_11:Iterator[Object]>*/;
2646 }
2647 if (var12){
2648 {
2649 var13 = ((val* (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_11) /* item on <var_11:Iterator[Object]>*/;
2650 }
2651 var_other = var13;
2652 {
2653 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2654 var17 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2655 if (unlikely(var17 == NULL)) {
2656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2657 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2658 show_backtrace(1);
2659 }
2660 var15 = var17;
2661 RET_LABEL16:(void)0;
2662 }
2663 }
2664 {
2665 var18 = standard___standard__MapRead___has_key(var15, var_other);
2666 }
2667 var_19 = var18;
2668 if (var18){
2669 {
2670 { /* Inline coloring#BucketsColorer#colors (self) on <self:BucketsColorer[Object, Object]> */
2671 var22 = self->attrs[COLOR_nit__coloring__BucketsColorer___colors].val; /* _colors on <self:BucketsColorer[Object, Object]> */
2672 if (unlikely(var22 == NULL)) {
2673 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
2674 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 284);
2675 show_backtrace(1);
2676 }
2677 var20 = var22;
2678 RET_LABEL21:(void)0;
2679 }
2680 }
2681 {
2682 var23 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var20, var_other);
2683 }
2684 {
2685 { /* Inline kernel#Int#== (var23,var_color) on <var23:nullable Object(Int)> */
2686 var26 = (var23 != NULL) && (var23->class == &class_standard__Int);
2687 if (var26) {
2688 var27 = ((struct instance_standard__Int*)var23)->value; /* autounbox from nullable Object to Int */;
2689 var26 = (var27 == var_color);
2690 }
2691 var24 = var26;
2692 goto RET_LABEL25;
2693 RET_LABEL25:(void)0;
2694 }
2695 }
2696 var14 = var24;
2697 } else {
2698 var14 = var_19;
2699 }
2700 if (var14){
2701 var28 = 0;
2702 var = var28;
2703 goto RET_LABEL;
2704 } else {
2705 }
2706 {
2707 ((void (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_11) /* next on <var_11:Iterator[Object]>*/;
2708 }
2709 } else {
2710 goto BREAK_label;
2711 }
2712 }
2713 BREAK_label: (void)0;
2714 {
2715 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:Iterator[Object]> */
2716 RET_LABEL29:(void)0;
2717 }
2718 }
2719 } else {
2720 }
2721 var30 = 1;
2722 var = var30;
2723 goto RET_LABEL;
2724 RET_LABEL:;
2725 return var;
2726 }
2727 /* method coloring#BucketsColorer#compute_conflicts for (self: BucketsColorer[Object, Object], Map[Object, Set[Object]]) */
2728 void nit___nit__BucketsColorer___compute_conflicts(val* self, val* p0) {
2729 short int var /* : Bool */;
2730 int cltype;
2731 int idtype;
2732 const struct type* type_struct;
2733 const char* var_class_name;
2734 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
2735 val* var1 /* : HashMap[Object, Set[Object]] */;
2736 val* var3 /* : HashMap[Object, Set[Object]] */;
2737 val* var_ /* var : Map[Object, Set[Object]] */;
2738 val* var4 /* : MapIterator[nullable Object, nullable Object] */;
2739 val* var_5 /* var : MapIterator[Object, Set[Object]] */;
2740 short int var6 /* : Bool */;
2741 val* var7 /* : nullable Object */;
2742 val* var_holder /* var holder: Object */;
2743 val* var8 /* : nullable Object */;
2744 val* var_hbuckets /* var hbuckets: Set[Object] */;
2745 val* var_9 /* var : Set[Object] */;
2746 val* var10 /* : Iterator[nullable Object] */;
2747 val* var_11 /* var : Iterator[Object] */;
2748 short int var12 /* : Bool */;
2749 val* var13 /* : nullable Object */;
2750 val* var_bucket /* var bucket: Object */;
2751 val* var14 /* : HashMap[Object, Set[Object]] */;
2752 val* var16 /* : HashMap[Object, Set[Object]] */;
2753 short int var17 /* : Bool */;
2754 short int var18 /* : Bool */;
2755 val* var19 /* : HashMap[Object, Set[Object]] */;
2756 val* var21 /* : HashMap[Object, Set[Object]] */;
2757 val* var22 /* : HashSet[Object] */;
2758 val* var_23 /* var : Set[Object] */;
2759 val* var24 /* : Iterator[nullable Object] */;
2760 val* var_25 /* var : Iterator[Object] */;
2761 short int var26 /* : Bool */;
2762 val* var27 /* : nullable Object */;
2763 val* var_obucket /* var obucket: Object */;
2764 short int var28 /* : Bool */;
2765 val* var29 /* : HashMap[Object, Set[Object]] */;
2766 val* var31 /* : HashMap[Object, Set[Object]] */;
2767 short int var32 /* : Bool */;
2768 short int var33 /* : Bool */;
2769 val* var34 /* : HashMap[Object, Set[Object]] */;
2770 val* var36 /* : HashMap[Object, Set[Object]] */;
2771 val* var37 /* : HashSet[Object] */;
2772 val* var38 /* : HashMap[Object, Set[Object]] */;
2773 val* var40 /* : HashMap[Object, Set[Object]] */;
2774 val* var41 /* : nullable Object */;
2775 val* var42 /* : HashMap[Object, Set[Object]] */;
2776 val* var44 /* : HashMap[Object, Set[Object]] */;
2777 val* var45 /* : nullable Object */;
2778 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2779 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
2780 type_struct = self->type->resolution_table->types[COLOR_standard__Map__nit__BucketsColorer___35dH__standard__Set__nit__BucketsColorer___35dE];
2781 cltype = type_struct->color;
2782 idtype = type_struct->id;
2783 if(cltype >= p0->type->table_size) {
2784 var = 0;
2785 } else {
2786 var = p0->type->type_table[cltype] == idtype;
2787 }
2788 if (unlikely(!var)) {
2789 var_class_name = p0 == NULL ? "null" : p0->type->name;
2790 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
2791 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 314);
2792 show_backtrace(1);
2793 }
2794 var_buckets = p0;
2795 {
2796 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2797 var3 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2798 if (unlikely(var3 == NULL)) {
2799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2800 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2801 show_backtrace(1);
2802 }
2803 var1 = var3;
2804 RET_LABEL2:(void)0;
2805 }
2806 }
2807 {
2808 standard___standard__HashMap___standard__abstract_collection__Map__clear(var1); /* Direct call hash_collection#HashMap#clear on <var1:HashMap[Object, Set[Object]]>*/
2809 }
2810 var_ = var_buckets;
2811 {
2812 var4 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_) /* iterator on <var_:Map[Object, Set[Object]]>*/;
2813 }
2814 var_5 = var4;
2815 for(;;) {
2816 {
2817 var6 = ((short int (*)(val* self))(var_5->class->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_5) /* is_ok on <var_5:MapIterator[Object, Set[Object]]>*/;
2818 }
2819 if (var6){
2820 {
2821 var7 = ((val* (*)(val* self))(var_5->class->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_5) /* key on <var_5:MapIterator[Object, Set[Object]]>*/;
2822 }
2823 var_holder = var7;
2824 {
2825 var8 = ((val* (*)(val* self))(var_5->class->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_5) /* item on <var_5:MapIterator[Object, Set[Object]]>*/;
2826 }
2827 var_hbuckets = var8;
2828 var_9 = var_hbuckets;
2829 {
2830 var10 = ((val* (*)(val* self))(var_9->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_9) /* iterator on <var_9:Set[Object]>*/;
2831 }
2832 var_11 = var10;
2833 for(;;) {
2834 {
2835 var12 = ((short int (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_11) /* is_ok on <var_11:Iterator[Object]>*/;
2836 }
2837 if (var12){
2838 {
2839 var13 = ((val* (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_11) /* item on <var_11:Iterator[Object]>*/;
2840 }
2841 var_bucket = var13;
2842 {
2843 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2844 var16 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2845 if (unlikely(var16 == NULL)) {
2846 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2847 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2848 show_backtrace(1);
2849 }
2850 var14 = var16;
2851 RET_LABEL15:(void)0;
2852 }
2853 }
2854 {
2855 var17 = standard___standard__MapRead___has_key(var14, var_bucket);
2856 }
2857 var18 = !var17;
2858 if (var18){
2859 {
2860 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2861 var21 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2862 if (unlikely(var21 == NULL)) {
2863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2864 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2865 show_backtrace(1);
2866 }
2867 var19 = var21;
2868 RET_LABEL20:(void)0;
2869 }
2870 }
2871 var22 = NEW_standard__HashSet(self->type->resolution_table->types[COLOR_standard__HashSet__nit__BucketsColorer___35dE]);
2872 {
2873 standard___standard__HashSet___standard__kernel__Object__init(var22); /* Direct call hash_collection#HashSet#init on <var22:HashSet[Object]>*/
2874 }
2875 {
2876 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]]>*/
2877 }
2878 } else {
2879 }
2880 var_23 = var_hbuckets;
2881 {
2882 var24 = ((val* (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_23) /* iterator on <var_23:Set[Object]>*/;
2883 }
2884 var_25 = var24;
2885 for(;;) {
2886 {
2887 var26 = ((short int (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_25) /* is_ok on <var_25:Iterator[Object]>*/;
2888 }
2889 if (var26){
2890 {
2891 var27 = ((val* (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_25) /* item on <var_25:Iterator[Object]>*/;
2892 }
2893 var_obucket = var27;
2894 {
2895 var28 = ((short int (*)(val* self, val* p0))(var_obucket->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_obucket, var_bucket) /* == on <var_obucket:Object>*/;
2896 }
2897 if (var28){
2898 goto BREAK_label;
2899 } else {
2900 }
2901 {
2902 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2903 var31 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2904 if (unlikely(var31 == NULL)) {
2905 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2906 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2907 show_backtrace(1);
2908 }
2909 var29 = var31;
2910 RET_LABEL30:(void)0;
2911 }
2912 }
2913 {
2914 var32 = standard___standard__MapRead___has_key(var29, var_obucket);
2915 }
2916 var33 = !var32;
2917 if (var33){
2918 {
2919 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2920 var36 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2921 if (unlikely(var36 == NULL)) {
2922 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2923 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2924 show_backtrace(1);
2925 }
2926 var34 = var36;
2927 RET_LABEL35:(void)0;
2928 }
2929 }
2930 var37 = NEW_standard__HashSet(self->type->resolution_table->types[COLOR_standard__HashSet__nit__BucketsColorer___35dE]);
2931 {
2932 standard___standard__HashSet___standard__kernel__Object__init(var37); /* Direct call hash_collection#HashSet#init on <var37:HashSet[Object]>*/
2933 }
2934 {
2935 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]]>*/
2936 }
2937 } else {
2938 }
2939 {
2940 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2941 var40 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2942 if (unlikely(var40 == NULL)) {
2943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2944 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2945 show_backtrace(1);
2946 }
2947 var38 = var40;
2948 RET_LABEL39:(void)0;
2949 }
2950 }
2951 {
2952 var41 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var38, var_bucket);
2953 }
2954 {
2955 ((void (*)(val* self, val* p0))(var41->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var41, var_obucket) /* add on <var41:nullable Object(Set[Object])>*/;
2956 }
2957 {
2958 { /* Inline coloring#BucketsColorer#conflicts (self) on <self:BucketsColorer[Object, Object]> */
2959 var44 = self->attrs[COLOR_nit__coloring__BucketsColorer___conflicts].val; /* _conflicts on <self:BucketsColorer[Object, Object]> */
2960 if (unlikely(var44 == NULL)) {
2961 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
2962 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 285);
2963 show_backtrace(1);
2964 }
2965 var42 = var44;
2966 RET_LABEL43:(void)0;
2967 }
2968 }
2969 {
2970 var45 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var42, var_obucket);
2971 }
2972 {
2973 ((void (*)(val* self, val* p0))(var45->class->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var45, var_bucket) /* add on <var45:nullable Object(Set[Object])>*/;
2974 }
2975 BREAK_label: (void)0;
2976 {
2977 ((void (*)(val* self))(var_25->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_25) /* next on <var_25:Iterator[Object]>*/;
2978 }
2979 } else {
2980 goto BREAK_label46;
2981 }
2982 }
2983 BREAK_label46: (void)0;
2984 {
2985 { /* Inline abstract_collection#Iterator#finish (var_25) on <var_25:Iterator[Object]> */
2986 RET_LABEL47:(void)0;
2987 }
2988 }
2989 {
2990 ((void (*)(val* self))(var_11->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_11) /* next on <var_11:Iterator[Object]>*/;
2991 }
2992 } else {
2993 goto BREAK_label48;
2994 }
2995 }
2996 BREAK_label48: (void)0;
2997 {
2998 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:Iterator[Object]> */
2999 RET_LABEL49:(void)0;
3000 }
3001 }
3002 {
3003 ((void (*)(val* self))(var_5->class->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_5) /* next on <var_5:MapIterator[Object, Set[Object]]>*/;
3004 }
3005 } else {
3006 goto BREAK_label50;
3007 }
3008 }
3009 BREAK_label50: (void)0;
3010 {
3011 { /* Inline abstract_collection#MapIterator#finish (var_5) on <var_5:MapIterator[Object, Set[Object]]> */
3012 RET_LABEL51:(void)0;
3013 }
3014 }
3015 RET_LABEL:;
3016 }
3017 /* method coloring#POSetBucketsColorer#colors for (self: POSetBucketsColorer[Object, Object]): HashMap[Object, Int] */
3018 val* nit___nit__POSetBucketsColorer___colors(val* self) {
3019 val* var /* : HashMap[Object, Int] */;
3020 val* var1 /* : HashMap[Object, Int] */;
3021 var1 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3022 if (unlikely(var1 == NULL)) {
3023 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3024 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3025 show_backtrace(1);
3026 }
3027 var = var1;
3028 RET_LABEL:;
3029 return var;
3030 }
3031 /* method coloring#POSetBucketsColorer#poset for (self: POSetBucketsColorer[Object, Object]): POSet[Object] */
3032 val* nit___nit__POSetBucketsColorer___poset(val* self) {
3033 val* var /* : POSet[Object] */;
3034 val* var1 /* : POSet[Object] */;
3035 var1 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3036 if (unlikely(var1 == NULL)) {
3037 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3038 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 336);
3039 show_backtrace(1);
3040 }
3041 var = var1;
3042 RET_LABEL:;
3043 return var;
3044 }
3045 /* method coloring#POSetBucketsColorer#poset= for (self: POSetBucketsColorer[Object, Object], POSet[Object]) */
3046 void nit___nit__POSetBucketsColorer___poset_61d(val* self, val* p0) {
3047 short int var /* : Bool */;
3048 int cltype;
3049 int idtype;
3050 const struct type* type_struct;
3051 const char* var_class_name;
3052 /* Covariant cast for argument 0 (poset) <p0:POSet[Object]> isa POSet[H] */
3053 /* <p0:POSet[Object]> isa POSet[H] */
3054 type_struct = self->type->resolution_table->types[COLOR_poset__POSet__nit__POSetBucketsColorer___35dH];
3055 cltype = type_struct->color;
3056 idtype = type_struct->id;
3057 if(cltype >= p0->type->table_size) {
3058 var = 0;
3059 } else {
3060 var = p0->type->type_table[cltype] == idtype;
3061 }
3062 if (unlikely(!var)) {
3063 var_class_name = p0 == NULL ? "null" : p0->type->name;
3064 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "POSet[H]", var_class_name);
3065 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 336);
3066 show_backtrace(1);
3067 }
3068 self->attrs[COLOR_nit__coloring__POSetBucketsColorer___poset].val = p0; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3069 RET_LABEL:;
3070 }
3071 /* method coloring#POSetBucketsColorer#conflicts for (self: POSetBucketsColorer[Object, Object]): Map[Object, Set[Object]] */
3072 val* nit___nit__POSetBucketsColorer___conflicts(val* self) {
3073 val* var /* : Map[Object, Set[Object]] */;
3074 val* var1 /* : Map[Object, Set[Object]] */;
3075 var1 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3076 if (unlikely(var1 == NULL)) {
3077 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3078 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 337);
3079 show_backtrace(1);
3080 }
3081 var = var1;
3082 RET_LABEL:;
3083 return var;
3084 }
3085 /* method coloring#POSetBucketsColorer#conflicts= for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]) */
3086 void nit___nit__POSetBucketsColorer___conflicts_61d(val* self, val* p0) {
3087 short int var /* : Bool */;
3088 int cltype;
3089 int idtype;
3090 const struct type* type_struct;
3091 const char* var_class_name;
3092 /* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3093 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[H]] */
3094 type_struct = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetBucketsColorer___35dH__standard__Set__nit__POSetBucketsColorer___35dH];
3095 cltype = type_struct->color;
3096 idtype = type_struct->id;
3097 if(cltype >= p0->type->table_size) {
3098 var = 0;
3099 } else {
3100 var = p0->type->type_table[cltype] == idtype;
3101 }
3102 if (unlikely(!var)) {
3103 var_class_name = p0 == NULL ? "null" : p0->type->name;
3104 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[H]]", var_class_name);
3105 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 337);
3106 show_backtrace(1);
3107 }
3108 self->attrs[COLOR_nit__coloring__POSetBucketsColorer___conflicts].val = p0; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3109 RET_LABEL:;
3110 }
3111 /* method coloring#POSetBucketsColorer#colorize for (self: POSetBucketsColorer[Object, Object], Map[Object, Set[Object]]): Map[Object, Int] */
3112 val* nit___nit__POSetBucketsColorer___colorize(val* self, val* p0) {
3113 val* var /* : Map[Object, Int] */;
3114 short int var1 /* : Bool */;
3115 int cltype;
3116 int idtype;
3117 const struct type* type_struct;
3118 const char* var_class_name;
3119 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3120 val* var2 /* : HashMap[Object, Int] */;
3121 val* var4 /* : HashMap[Object, Int] */;
3122 val* var5 /* : POSet[Object] */;
3123 val* var7 /* : POSet[Object] */;
3124 val* var8 /* : Collection[nullable Object] */;
3125 val* var9 /* : Array[nullable Object] */;
3126 val* var_ /* var : Array[Object] */;
3127 val* var10 /* : ArrayIterator[nullable Object] */;
3128 val* var_11 /* var : ArrayIterator[Object] */;
3129 short int var12 /* : Bool */;
3130 val* var13 /* : nullable Object */;
3131 val* var_h /* var h: Object */;
3132 val* var14 /* : POSet[Object] */;
3133 val* var16 /* : POSet[Object] */;
3134 val* var17 /* : POSetElement[nullable Object] */;
3135 val* var18 /* : Collection[nullable Object] */;
3136 long var19 /* : Int */;
3137 long var_color /* var color: Int */;
3138 val* var20 /* : nullable Object */;
3139 val* var_21 /* var : Set[Object] */;
3140 val* var22 /* : Iterator[nullable Object] */;
3141 val* var_23 /* var : Iterator[Object] */;
3142 short int var24 /* : Bool */;
3143 val* var25 /* : nullable Object */;
3144 val* var_bucket /* var bucket: Object */;
3145 val* var26 /* : HashMap[Object, Int] */;
3146 val* var28 /* : HashMap[Object, Int] */;
3147 short int var29 /* : Bool */;
3148 short int var30 /* : Bool */;
3149 short int var31 /* : Bool */;
3150 long var32 /* : Int */;
3151 long var33 /* : Int */;
3152 short int var35 /* : Bool */;
3153 int cltype36;
3154 int idtype37;
3155 const char* var_class_name38;
3156 long var39 /* : Int */;
3157 val* var41 /* : HashMap[Object, Int] */;
3158 val* var43 /* : HashMap[Object, Int] */;
3159 val* var44 /* : nullable Object */;
3160 long var45 /* : Int */;
3161 long var46 /* : Int */;
3162 short int var48 /* : Bool */;
3163 int cltype49;
3164 int idtype50;
3165 const char* var_class_name51;
3166 long var52 /* : Int */;
3167 val* var57 /* : HashMap[Object, Int] */;
3168 val* var59 /* : HashMap[Object, Int] */;
3169 /* Covariant cast for argument 0 (buckets) <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3170 /* <p0:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3171 type_struct = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetBucketsColorer___35dH__standard__Set__nit__POSetBucketsColorer___35dE];
3172 cltype = type_struct->color;
3173 idtype = type_struct->id;
3174 if(cltype >= p0->type->table_size) {
3175 var1 = 0;
3176 } else {
3177 var1 = p0->type->type_table[cltype] == idtype;
3178 }
3179 if (unlikely(!var1)) {
3180 var_class_name = p0 == NULL ? "null" : p0->type->name;
3181 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name);
3182 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 339);
3183 show_backtrace(1);
3184 }
3185 var_buckets = p0;
3186 {
3187 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3188 var4 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3189 if (unlikely(var4 == NULL)) {
3190 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3191 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3192 show_backtrace(1);
3193 }
3194 var2 = var4;
3195 RET_LABEL3:(void)0;
3196 }
3197 }
3198 {
3199 standard___standard__HashMap___standard__abstract_collection__Map__clear(var2); /* Direct call hash_collection#HashMap#clear on <var2:HashMap[Object, Int]>*/
3200 }
3201 {
3202 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
3203 var7 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3204 if (unlikely(var7 == NULL)) {
3205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3206 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 336);
3207 show_backtrace(1);
3208 }
3209 var5 = var7;
3210 RET_LABEL6:(void)0;
3211 }
3212 }
3213 {
3214 var8 = ((val* (*)(val* self))(var_buckets->class->vft[COLOR_standard__abstract_collection__MapRead__keys]))(var_buckets) /* keys on <var_buckets:Map[Object, Set[Object]]>*/;
3215 }
3216 {
3217 var9 = poset___poset__POSet___linearize(var5, var8);
3218 }
3219 var_ = var9;
3220 {
3221 var10 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
3222 }
3223 var_11 = var10;
3224 for(;;) {
3225 {
3226 var12 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_11);
3227 }
3228 if (var12){
3229 {
3230 var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_11);
3231 }
3232 var_h = var13;
3233 {
3234 { /* Inline coloring#POSetBucketsColorer#poset (self) on <self:POSetBucketsColorer[Object, Object]> */
3235 var16 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___poset].val; /* _poset on <self:POSetBucketsColorer[Object, Object]> */
3236 if (unlikely(var16 == NULL)) {
3237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _poset");
3238 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 336);
3239 show_backtrace(1);
3240 }
3241 var14 = var16;
3242 RET_LABEL15:(void)0;
3243 }
3244 }
3245 {
3246 var17 = poset___poset__POSet____91d_93d(var14, var_h);
3247 }
3248 {
3249 var18 = poset___poset__POSetElement___direct_greaters(var17);
3250 }
3251 {
3252 var19 = nit___nit__POSetBucketsColorer___min_color(self, var18, var_buckets);
3253 }
3254 var_color = var19;
3255 {
3256 var20 = ((val* (*)(val* self, val* p0))(var_buckets->class->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var_buckets, var_h) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
3257 }
3258 var_21 = var20;
3259 {
3260 var22 = ((val* (*)(val* self))(var_21->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_21) /* iterator on <var_21:Set[Object]>*/;
3261 }
3262 var_23 = var22;
3263 for(;;) {
3264 {
3265 var24 = ((short int (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_23) /* is_ok on <var_23:Iterator[Object]>*/;
3266 }
3267 if (var24){
3268 {
3269 var25 = ((val* (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_23) /* item on <var_23:Iterator[Object]>*/;
3270 }
3271 var_bucket = var25;
3272 {
3273 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3274 var28 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3275 if (unlikely(var28 == NULL)) {
3276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3277 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3278 show_backtrace(1);
3279 }
3280 var26 = var28;
3281 RET_LABEL27:(void)0;
3282 }
3283 }
3284 {
3285 var29 = standard___standard__MapRead___has_key(var26, var_bucket);
3286 }
3287 if (var29){
3288 goto BREAK_label;
3289 } else {
3290 }
3291 for(;;) {
3292 {
3293 var30 = nit___nit__POSetBucketsColorer___is_color_free(self, var_color, var_h, var_buckets);
3294 }
3295 var31 = !var30;
3296 if (var31){
3297 var32 = 1;
3298 {
3299 { /* Inline kernel#Int#+ (var_color,var32) on <var_color:Int> */
3300 /* Covariant cast for argument 0 (i) <var32:Int> isa OTHER */
3301 /* <var32:Int> isa OTHER */
3302 var35 = 1; /* easy <var32:Int> isa OTHER*/
3303 if (unlikely(!var35)) {
3304 var_class_name38 = type_standard__Int.name;
3305 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name38);
3306 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3307 show_backtrace(1);
3308 }
3309 var39 = var_color + var32;
3310 var33 = var39;
3311 goto RET_LABEL34;
3312 RET_LABEL34:(void)0;
3313 }
3314 }
3315 var_color = var33;
3316 } else {
3317 goto BREAK_label40;
3318 }
3319 }
3320 BREAK_label40: (void)0;
3321 {
3322 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3323 var43 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3324 if (unlikely(var43 == NULL)) {
3325 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3326 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3327 show_backtrace(1);
3328 }
3329 var41 = var43;
3330 RET_LABEL42:(void)0;
3331 }
3332 }
3333 {
3334 var44 = BOX_standard__Int(var_color); /* autobox from Int to nullable Object */
3335 standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var41, var_bucket, var44); /* Direct call hash_collection#HashMap#[]= on <var41:HashMap[Object, Int]>*/
3336 }
3337 var45 = 1;
3338 {
3339 { /* Inline kernel#Int#+ (var_color,var45) on <var_color:Int> */
3340 /* Covariant cast for argument 0 (i) <var45:Int> isa OTHER */
3341 /* <var45:Int> isa OTHER */
3342 var48 = 1; /* easy <var45:Int> isa OTHER*/
3343 if (unlikely(!var48)) {
3344 var_class_name51 = type_standard__Int.name;
3345 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name51);
3346 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3347 show_backtrace(1);
3348 }
3349 var52 = var_color + var45;
3350 var46 = var52;
3351 goto RET_LABEL47;
3352 RET_LABEL47:(void)0;
3353 }
3354 }
3355 var_color = var46;
3356 BREAK_label: (void)0;
3357 {
3358 ((void (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_23) /* next on <var_23:Iterator[Object]>*/;
3359 }
3360 } else {
3361 goto BREAK_label53;
3362 }
3363 }
3364 BREAK_label53: (void)0;
3365 {
3366 { /* Inline abstract_collection#Iterator#finish (var_23) on <var_23:Iterator[Object]> */
3367 RET_LABEL54:(void)0;
3368 }
3369 }
3370 {
3371 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_11); /* Direct call array#ArrayIterator#next on <var_11:ArrayIterator[Object]>*/
3372 }
3373 } else {
3374 goto BREAK_label55;
3375 }
3376 }
3377 BREAK_label55: (void)0;
3378 {
3379 { /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:ArrayIterator[Object]> */
3380 RET_LABEL56:(void)0;
3381 }
3382 }
3383 {
3384 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3385 var59 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3386 if (unlikely(var59 == NULL)) {
3387 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3388 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3389 show_backtrace(1);
3390 }
3391 var57 = var59;
3392 RET_LABEL58:(void)0;
3393 }
3394 }
3395 var = var57;
3396 goto RET_LABEL;
3397 RET_LABEL:;
3398 return var;
3399 }
3400 /* method coloring#POSetBucketsColorer#min_color for (self: POSetBucketsColorer[Object, Object], Collection[Object], Map[Object, Set[Object]]): Int */
3401 long nit___nit__POSetBucketsColorer___min_color(val* self, val* p0, val* p1) {
3402 long var /* : Int */;
3403 short int var1 /* : Bool */;
3404 int cltype;
3405 int idtype;
3406 const struct type* type_struct;
3407 const char* var_class_name;
3408 short int var2 /* : Bool */;
3409 int cltype3;
3410 int idtype4;
3411 const struct type* type_struct5;
3412 const char* var_class_name6;
3413 val* var_others /* var others: Collection[Object] */;
3414 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3415 long var7 /* : Int */;
3416 long var8 /* : Int */;
3417 long var10 /* : Int */;
3418 long var_min /* var min: Int */;
3419 val* var_ /* var : Collection[Object] */;
3420 val* var11 /* : Iterator[nullable Object] */;
3421 val* var_12 /* var : Iterator[Object] */;
3422 short int var13 /* : Bool */;
3423 val* var14 /* : nullable Object */;
3424 val* var_holder /* var holder: Object */;
3425 long var15 /* : Int */;
3426 long var_color /* var color: Int */;
3427 short int var16 /* : Bool */;
3428 short int var18 /* : Bool */;
3429 int cltype19;
3430 int idtype20;
3431 const char* var_class_name21;
3432 short int var22 /* : Bool */;
3433 long var24 /* : Int */;
3434 long var25 /* : Int */;
3435 short int var27 /* : Bool */;
3436 int cltype28;
3437 int idtype29;
3438 const char* var_class_name30;
3439 long var31 /* : Int */;
3440 /* Covariant cast for argument 0 (others) <p0:Collection[Object]> isa Collection[H] */
3441 /* <p0:Collection[Object]> isa Collection[H] */
3442 type_struct = self->type->resolution_table->types[COLOR_standard__Collection__nit__POSetBucketsColorer___35dH];
3443 cltype = type_struct->color;
3444 idtype = type_struct->id;
3445 if(cltype >= p0->type->table_size) {
3446 var1 = 0;
3447 } else {
3448 var1 = p0->type->type_table[cltype] == idtype;
3449 }
3450 if (unlikely(!var1)) {
3451 var_class_name = p0 == NULL ? "null" : p0->type->name;
3452 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[H]", var_class_name);
3453 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 354);
3454 show_backtrace(1);
3455 }
3456 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3457 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3458 type_struct5 = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetBucketsColorer___35dH__standard__Set__nit__POSetBucketsColorer___35dE];
3459 cltype3 = type_struct5->color;
3460 idtype4 = type_struct5->id;
3461 if(cltype3 >= p1->type->table_size) {
3462 var2 = 0;
3463 } else {
3464 var2 = p1->type->type_table[cltype3] == idtype4;
3465 }
3466 if (unlikely(!var2)) {
3467 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
3468 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
3469 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 354);
3470 show_backtrace(1);
3471 }
3472 var_others = p0;
3473 var_buckets = p1;
3474 var7 = 1;
3475 {
3476 { /* Inline kernel#Int#unary - (var7) on <var7:Int> */
3477 var10 = -var7;
3478 var8 = var10;
3479 goto RET_LABEL9;
3480 RET_LABEL9:(void)0;
3481 }
3482 }
3483 var_min = var8;
3484 var_ = var_others;
3485 {
3486 var11 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[Object]>*/;
3487 }
3488 var_12 = var11;
3489 for(;;) {
3490 {
3491 var13 = ((short int (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_12) /* is_ok on <var_12:Iterator[Object]>*/;
3492 }
3493 if (var13){
3494 {
3495 var14 = ((val* (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_12) /* item on <var_12:Iterator[Object]>*/;
3496 }
3497 var_holder = var14;
3498 {
3499 var15 = nit___nit__POSetBucketsColorer___max_color(self, var_holder, var_buckets);
3500 }
3501 var_color = var15;
3502 {
3503 { /* Inline kernel#Int#> (var_color,var_min) on <var_color:Int> */
3504 /* Covariant cast for argument 0 (i) <var_min:Int> isa OTHER */
3505 /* <var_min:Int> isa OTHER */
3506 var18 = 1; /* easy <var_min:Int> isa OTHER*/
3507 if (unlikely(!var18)) {
3508 var_class_name21 = type_standard__Int.name;
3509 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
3510 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
3511 show_backtrace(1);
3512 }
3513 var22 = var_color > var_min;
3514 var16 = var22;
3515 goto RET_LABEL17;
3516 RET_LABEL17:(void)0;
3517 }
3518 }
3519 if (var16){
3520 var_min = var_color;
3521 } else {
3522 }
3523 {
3524 ((void (*)(val* self))(var_12->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_12) /* next on <var_12:Iterator[Object]>*/;
3525 }
3526 } else {
3527 goto BREAK_label;
3528 }
3529 }
3530 BREAK_label: (void)0;
3531 {
3532 { /* Inline abstract_collection#Iterator#finish (var_12) on <var_12:Iterator[Object]> */
3533 RET_LABEL23:(void)0;
3534 }
3535 }
3536 var24 = 1;
3537 {
3538 { /* Inline kernel#Int#+ (var_min,var24) on <var_min:Int> */
3539 /* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
3540 /* <var24:Int> isa OTHER */
3541 var27 = 1; /* easy <var24:Int> isa OTHER*/
3542 if (unlikely(!var27)) {
3543 var_class_name30 = type_standard__Int.name;
3544 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
3545 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
3546 show_backtrace(1);
3547 }
3548 var31 = var_min + var24;
3549 var25 = var31;
3550 goto RET_LABEL26;
3551 RET_LABEL26:(void)0;
3552 }
3553 }
3554 var = var25;
3555 goto RET_LABEL;
3556 RET_LABEL:;
3557 return var;
3558 }
3559 /* method coloring#POSetBucketsColorer#max_color for (self: POSetBucketsColorer[Object, Object], Object, Map[Object, Set[Object]]): Int */
3560 long nit___nit__POSetBucketsColorer___max_color(val* self, val* p0, val* p1) {
3561 long var /* : Int */;
3562 short int var1 /* : Bool */;
3563 int cltype;
3564 int idtype;
3565 const struct type* type_struct;
3566 const char* var_class_name;
3567 short int var2 /* : Bool */;
3568 int cltype3;
3569 int idtype4;
3570 const struct type* type_struct5;
3571 const char* var_class_name6;
3572 val* var_holder /* var holder: Object */;
3573 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3574 long var7 /* : Int */;
3575 long var8 /* : Int */;
3576 long var10 /* : Int */;
3577 long var_max /* var max: Int */;
3578 val* var11 /* : nullable Object */;
3579 val* var_ /* var : Set[Object] */;
3580 val* var12 /* : Iterator[nullable Object] */;
3581 val* var_13 /* var : Iterator[Object] */;
3582 short int var14 /* : Bool */;
3583 val* var15 /* : nullable Object */;
3584 val* var_bucket /* var bucket: Object */;
3585 val* var16 /* : HashMap[Object, Int] */;
3586 val* var18 /* : HashMap[Object, Int] */;
3587 short int var19 /* : Bool */;
3588 short int var20 /* : Bool */;
3589 val* var21 /* : HashMap[Object, Int] */;
3590 val* var23 /* : HashMap[Object, Int] */;
3591 val* var24 /* : nullable Object */;
3592 long var25 /* : Int */;
3593 long var_color /* var color: Int */;
3594 short int var26 /* : Bool */;
3595 short int var28 /* : Bool */;
3596 int cltype29;
3597 int idtype30;
3598 const char* var_class_name31;
3599 short int var32 /* : Bool */;
3600 /* Covariant cast for argument 0 (holder) <p0:Object> isa H */
3601 /* <p0:Object> isa H */
3602 type_struct = self->type->resolution_table->types[COLOR_nit__POSetBucketsColorer___35dH];
3603 cltype = type_struct->color;
3604 idtype = type_struct->id;
3605 if(cltype >= p0->type->table_size) {
3606 var1 = 0;
3607 } else {
3608 var1 = p0->type->type_table[cltype] == idtype;
3609 }
3610 if (unlikely(!var1)) {
3611 var_class_name = p0 == NULL ? "null" : p0->type->name;
3612 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
3613 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 364);
3614 show_backtrace(1);
3615 }
3616 /* Covariant cast for argument 1 (buckets) <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3617 /* <p1:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3618 type_struct5 = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetBucketsColorer___35dH__standard__Set__nit__POSetBucketsColorer___35dE];
3619 cltype3 = type_struct5->color;
3620 idtype4 = type_struct5->id;
3621 if(cltype3 >= p1->type->table_size) {
3622 var2 = 0;
3623 } else {
3624 var2 = p1->type->type_table[cltype3] == idtype4;
3625 }
3626 if (unlikely(!var2)) {
3627 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
3628 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
3629 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 364);
3630 show_backtrace(1);
3631 }
3632 var_holder = p0;
3633 var_buckets = p1;
3634 var7 = 1;
3635 {
3636 { /* Inline kernel#Int#unary - (var7) on <var7:Int> */
3637 var10 = -var7;
3638 var8 = var10;
3639 goto RET_LABEL9;
3640 RET_LABEL9:(void)0;
3641 }
3642 }
3643 var_max = var8;
3644 {
3645 var11 = ((val* (*)(val* self, val* p0))(var_buckets->class->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var_buckets, var_holder) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
3646 }
3647 var_ = var11;
3648 {
3649 var12 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
3650 }
3651 var_13 = var12;
3652 for(;;) {
3653 {
3654 var14 = ((short int (*)(val* self))(var_13->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_13) /* is_ok on <var_13:Iterator[Object]>*/;
3655 }
3656 if (var14){
3657 {
3658 var15 = ((val* (*)(val* self))(var_13->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_13) /* item on <var_13:Iterator[Object]>*/;
3659 }
3660 var_bucket = var15;
3661 {
3662 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3663 var18 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3664 if (unlikely(var18 == NULL)) {
3665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3666 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3667 show_backtrace(1);
3668 }
3669 var16 = var18;
3670 RET_LABEL17:(void)0;
3671 }
3672 }
3673 {
3674 var19 = standard___standard__MapRead___has_key(var16, var_bucket);
3675 }
3676 var20 = !var19;
3677 if (var20){
3678 goto BREAK_label;
3679 } else {
3680 }
3681 {
3682 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3683 var23 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3684 if (unlikely(var23 == NULL)) {
3685 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3686 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3687 show_backtrace(1);
3688 }
3689 var21 = var23;
3690 RET_LABEL22:(void)0;
3691 }
3692 }
3693 {
3694 var24 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var21, var_bucket);
3695 }
3696 var25 = ((struct instance_standard__Int*)var24)->value; /* autounbox from nullable Object to Int */;
3697 var_color = var25;
3698 {
3699 { /* Inline kernel#Int#> (var_color,var_max) on <var_color:Int> */
3700 /* Covariant cast for argument 0 (i) <var_max:Int> isa OTHER */
3701 /* <var_max:Int> isa OTHER */
3702 var28 = 1; /* easy <var_max:Int> isa OTHER*/
3703 if (unlikely(!var28)) {
3704 var_class_name31 = type_standard__Int.name;
3705 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
3706 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
3707 show_backtrace(1);
3708 }
3709 var32 = var_color > var_max;
3710 var26 = var32;
3711 goto RET_LABEL27;
3712 RET_LABEL27:(void)0;
3713 }
3714 }
3715 if (var26){
3716 var_max = var_color;
3717 } else {
3718 }
3719 BREAK_label: (void)0;
3720 {
3721 ((void (*)(val* self))(var_13->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_13) /* next on <var_13:Iterator[Object]>*/;
3722 }
3723 } else {
3724 goto BREAK_label33;
3725 }
3726 }
3727 BREAK_label33: (void)0;
3728 {
3729 { /* Inline abstract_collection#Iterator#finish (var_13) on <var_13:Iterator[Object]> */
3730 RET_LABEL34:(void)0;
3731 }
3732 }
3733 var = var_max;
3734 goto RET_LABEL;
3735 RET_LABEL:;
3736 return var;
3737 }
3738 /* method coloring#POSetBucketsColorer#is_color_free for (self: POSetBucketsColorer[Object, Object], Int, Object, Map[Object, Set[Object]]): Bool */
3739 short int nit___nit__POSetBucketsColorer___is_color_free(val* self, long p0, val* p1, val* p2) {
3740 short int var /* : Bool */;
3741 short int var1 /* : Bool */;
3742 int cltype;
3743 int idtype;
3744 const struct type* type_struct;
3745 const char* var_class_name;
3746 short int var2 /* : Bool */;
3747 int cltype3;
3748 int idtype4;
3749 const struct type* type_struct5;
3750 const char* var_class_name6;
3751 long var_color /* var color: Int */;
3752 val* var_holder /* var holder: Object */;
3753 val* var_buckets /* var buckets: Map[Object, Set[Object]] */;
3754 val* var7 /* : Map[Object, Set[Object]] */;
3755 val* var9 /* : Map[Object, Set[Object]] */;
3756 short int var10 /* : Bool */;
3757 short int var11 /* : Bool */;
3758 short int var12 /* : Bool */;
3759 val* var13 /* : Map[Object, Set[Object]] */;
3760 val* var15 /* : Map[Object, Set[Object]] */;
3761 val* var16 /* : nullable Object */;
3762 val* var_ /* var : Set[Object] */;
3763 val* var17 /* : Iterator[nullable Object] */;
3764 val* var_18 /* var : Iterator[Object] */;
3765 short int var19 /* : Bool */;
3766 val* var20 /* : nullable Object */;
3767 val* var_conflict /* var conflict: Object */;
3768 val* var21 /* : nullable Object */;
3769 val* var_22 /* var : Set[Object] */;
3770 val* var23 /* : Iterator[nullable Object] */;
3771 val* var_24 /* var : Iterator[Object] */;
3772 short int var25 /* : Bool */;
3773 val* var26 /* : nullable Object */;
3774 val* var_bucket /* var bucket: Object */;
3775 val* var27 /* : HashMap[Object, Int] */;
3776 val* var29 /* : HashMap[Object, Int] */;
3777 short int var30 /* : Bool */;
3778 short int var31 /* : Bool */;
3779 val* var32 /* : HashMap[Object, Int] */;
3780 val* var34 /* : HashMap[Object, Int] */;
3781 val* var35 /* : nullable Object */;
3782 short int var36 /* : Bool */;
3783 short int var38 /* : Bool */;
3784 long var39 /* : Int */;
3785 short int var40 /* : Bool */;
3786 short int var45 /* : Bool */;
3787 /* Covariant cast for argument 1 (holder) <p1:Object> isa H */
3788 /* <p1:Object> isa H */
3789 type_struct = self->type->resolution_table->types[COLOR_nit__POSetBucketsColorer___35dH];
3790 cltype = type_struct->color;
3791 idtype = type_struct->id;
3792 if(cltype >= p1->type->table_size) {
3793 var1 = 0;
3794 } else {
3795 var1 = p1->type->type_table[cltype] == idtype;
3796 }
3797 if (unlikely(!var1)) {
3798 var_class_name = p1 == NULL ? "null" : p1->type->name;
3799 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "H", var_class_name);
3800 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 375);
3801 show_backtrace(1);
3802 }
3803 /* Covariant cast for argument 2 (buckets) <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3804 /* <p2:Map[Object, Set[Object]]> isa Map[H, Set[E]] */
3805 type_struct5 = self->type->resolution_table->types[COLOR_standard__Map__nit__POSetBucketsColorer___35dH__standard__Set__nit__POSetBucketsColorer___35dE];
3806 cltype3 = type_struct5->color;
3807 idtype4 = type_struct5->id;
3808 if(cltype3 >= p2->type->table_size) {
3809 var2 = 0;
3810 } else {
3811 var2 = p2->type->type_table[cltype3] == idtype4;
3812 }
3813 if (unlikely(!var2)) {
3814 var_class_name6 = p2 == NULL ? "null" : p2->type->name;
3815 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Map[H, Set[E]]", var_class_name6);
3816 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 375);
3817 show_backtrace(1);
3818 }
3819 var_color = p0;
3820 var_holder = p1;
3821 var_buckets = p2;
3822 {
3823 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
3824 var9 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3825 if (unlikely(var9 == NULL)) {
3826 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3827 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 337);
3828 show_backtrace(1);
3829 }
3830 var7 = var9;
3831 RET_LABEL8:(void)0;
3832 }
3833 }
3834 {
3835 var10 = standard___standard__MapRead___has_key(var7, var_holder);
3836 }
3837 var11 = !var10;
3838 if (var11){
3839 var12 = 1;
3840 var = var12;
3841 goto RET_LABEL;
3842 } else {
3843 }
3844 {
3845 { /* Inline coloring#POSetBucketsColorer#conflicts (self) on <self:POSetBucketsColorer[Object, Object]> */
3846 var15 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___conflicts].val; /* _conflicts on <self:POSetBucketsColorer[Object, Object]> */
3847 if (unlikely(var15 == NULL)) {
3848 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _conflicts");
3849 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 337);
3850 show_backtrace(1);
3851 }
3852 var13 = var15;
3853 RET_LABEL14:(void)0;
3854 }
3855 }
3856 {
3857 var16 = ((val* (*)(val* self, val* p0))(var13->class->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var13, var_holder) /* [] on <var13:Map[Object, Set[Object]]>*/;
3858 }
3859 var_ = var16;
3860 {
3861 var17 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[Object]>*/;
3862 }
3863 var_18 = var17;
3864 for(;;) {
3865 {
3866 var19 = ((short int (*)(val* self))(var_18->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_18) /* is_ok on <var_18:Iterator[Object]>*/;
3867 }
3868 if (var19){
3869 {
3870 var20 = ((val* (*)(val* self))(var_18->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_18) /* item on <var_18:Iterator[Object]>*/;
3871 }
3872 var_conflict = var20;
3873 {
3874 var21 = ((val* (*)(val* self, val* p0))(var_buckets->class->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var_buckets, var_conflict) /* [] on <var_buckets:Map[Object, Set[Object]]>*/;
3875 }
3876 var_22 = var21;
3877 {
3878 var23 = ((val* (*)(val* self))(var_22->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_22) /* iterator on <var_22:Set[Object]>*/;
3879 }
3880 var_24 = var23;
3881 for(;;) {
3882 {
3883 var25 = ((short int (*)(val* self))(var_24->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_24) /* is_ok on <var_24:Iterator[Object]>*/;
3884 }
3885 if (var25){
3886 {
3887 var26 = ((val* (*)(val* self))(var_24->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_24) /* item on <var_24:Iterator[Object]>*/;
3888 }
3889 var_bucket = var26;
3890 {
3891 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3892 var29 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3893 if (unlikely(var29 == NULL)) {
3894 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3895 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3896 show_backtrace(1);
3897 }
3898 var27 = var29;
3899 RET_LABEL28:(void)0;
3900 }
3901 }
3902 {
3903 var30 = standard___standard__MapRead___has_key(var27, var_bucket);
3904 }
3905 var31 = !var30;
3906 if (var31){
3907 goto BREAK_label;
3908 } else {
3909 }
3910 {
3911 { /* Inline coloring#POSetBucketsColorer#colors (self) on <self:POSetBucketsColorer[Object, Object]> */
3912 var34 = self->attrs[COLOR_nit__coloring__POSetBucketsColorer___colors].val; /* _colors on <self:POSetBucketsColorer[Object, Object]> */
3913 if (unlikely(var34 == NULL)) {
3914 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _colors");
3915 PRINT_ERROR(" (%s:%d)\n", FILE_nit__coloring, 335);
3916 show_backtrace(1);
3917 }
3918 var32 = var34;
3919 RET_LABEL33:(void)0;
3920 }
3921 }
3922 {
3923 var35 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var32, var_bucket);
3924 }
3925 {
3926 { /* Inline kernel#Int#== (var35,var_color) on <var35:nullable Object(Int)> */
3927 var38 = (var35 != NULL) && (var35->class == &class_standard__Int);
3928 if (var38) {
3929 var39 = ((struct instance_standard__Int*)var35)->value; /* autounbox from nullable Object to Int */;
3930 var38 = (var39 == var_color);
3931 }
3932 var36 = var38;
3933 goto RET_LABEL37;
3934 RET_LABEL37:(void)0;
3935 }
3936 }
3937 if (var36){
3938 var40 = 0;
3939 var = var40;
3940 goto RET_LABEL;
3941 } else {
3942 }
3943 BREAK_label: (void)0;
3944 {
3945 ((void (*)(val* self))(var_24->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_24) /* next on <var_24:Iterator[Object]>*/;
3946 }
3947 } else {
3948 goto BREAK_label41;
3949 }
3950 }
3951 BREAK_label41: (void)0;
3952 {
3953 { /* Inline abstract_collection#Iterator#finish (var_24) on <var_24:Iterator[Object]> */
3954 RET_LABEL42:(void)0;
3955 }
3956 }
3957 {
3958 ((void (*)(val* self))(var_18->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_18) /* next on <var_18:Iterator[Object]>*/;
3959 }
3960 } else {
3961 goto BREAK_label43;
3962 }
3963 }
3964 BREAK_label43: (void)0;
3965 {
3966 { /* Inline abstract_collection#Iterator#finish (var_18) on <var_18:Iterator[Object]> */
3967 RET_LABEL44:(void)0;
3968 }
3969 }
3970 var45 = 1;
3971 var = var45;
3972 goto RET_LABEL;
3973 RET_LABEL:;
3974 return var;
3975 }
3976 /* method coloring#POSetBucketsColorer#init for (self: POSetBucketsColorer[Object, Object]) */
3977 void nit___nit__POSetBucketsColorer___standard__kernel__Object__init(val* self) {
3978 {
3979 ((void (*)(val* self))(self->class->vft[COLOR_nit___nit__POSetBucketsColorer___standard__kernel__Object__init]))(self) /* init on <self:POSetBucketsColorer[Object, Object]>*/;
3980 }
3981 RET_LABEL:;
3982 }