Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / ordered_tree.sep.1.c
1 #include "ordered_tree.sep.0.h"
2 /* method ordered_tree$OrderedTree$roots for (self: OrderedTree[Object]): Array[Object] */
3 val* ordered_tree___ordered_tree__OrderedTree___roots(val* self) {
4 val* var /* : Array[Object] */;
5 val* var1 /* : Array[Object] */;
6 var1 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
7 if (unlikely(var1 == NULL)) {
8 if(catchStack.cursor >= 0){
9 longjmp(catchStack.envs[catchStack.cursor], 1);
10 }
11 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
12 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
13 fatal_exit(1);
14 }
15 var = var1;
16 RET_LABEL:;
17 return var;
18 }
19 /* method ordered_tree$OrderedTree$sub for (self: OrderedTree[Object]): HashMap[Object, Array[Object]] */
20 val* ordered_tree___ordered_tree__OrderedTree___sub(val* self) {
21 val* var /* : HashMap[Object, Array[Object]] */;
22 val* var1 /* : HashMap[Object, Array[Object]] */;
23 var1 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
24 if (unlikely(var1 == NULL)) {
25 if(catchStack.cursor >= 0){
26 longjmp(catchStack.envs[catchStack.cursor], 1);
27 }
28 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
29 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
30 fatal_exit(1);
31 }
32 var = var1;
33 RET_LABEL:;
34 return var;
35 }
36 /* method ordered_tree$OrderedTree$parents for (self: OrderedTree[Object]): HashMap[Object, nullable Object] */
37 val* ordered_tree___ordered_tree__OrderedTree___parents(val* self) {
38 val* var /* : HashMap[Object, nullable Object] */;
39 val* var1 /* : HashMap[Object, nullable Object] */;
40 var1 = self->attrs[COLOR_ordered_tree__OrderedTree___parents].val; /* _parents on <self:OrderedTree[Object]> */
41 if (unlikely(var1 == NULL)) {
42 if(catchStack.cursor >= 0){
43 longjmp(catchStack.envs[catchStack.cursor], 1);
44 }
45 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parents");
46 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 73);
47 fatal_exit(1);
48 }
49 var = var1;
50 RET_LABEL:;
51 return var;
52 }
53 /* method ordered_tree$OrderedTree$length for (self: OrderedTree[Object]): Int */
54 long ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__length(val* self) {
55 long var /* : Int */;
56 val* var1 /* : HashMap[Object, nullable Object] */;
57 val* var3 /* : HashMap[Object, nullable Object] */;
58 long var4 /* : Int */;
59 {
60 { /* Inline ordered_tree$OrderedTree$parents (self) on <self:OrderedTree[Object]> */
61 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___parents].val; /* _parents on <self:OrderedTree[Object]> */
62 if (unlikely(var3 == NULL)) {
63 if(catchStack.cursor >= 0){
64 longjmp(catchStack.envs[catchStack.cursor], 1);
65 }
66 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parents");
67 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 73);
68 fatal_exit(1);
69 }
70 var1 = var3;
71 RET_LABEL2:(void)0;
72 }
73 }
74 {
75 var4 = core___core__HashMap___core__abstract_collection__MapRead__length(var1);
76 }
77 var = var4;
78 goto RET_LABEL;
79 RET_LABEL:;
80 return var;
81 }
82 /* method ordered_tree$OrderedTree$has for (self: OrderedTree[Object], nullable Object): Bool */
83 short int ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__has(val* self, val* p0) {
84 short int var /* : Bool */;
85 val* var_e /* var e: nullable Object */;
86 val* var1 /* : HashMap[Object, nullable Object] */;
87 val* var3 /* : HashMap[Object, nullable Object] */;
88 short int var4 /* : Bool */;
89 var_e = p0;
90 {
91 { /* Inline ordered_tree$OrderedTree$parents (self) on <self:OrderedTree[Object]> */
92 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___parents].val; /* _parents on <self:OrderedTree[Object]> */
93 if (unlikely(var3 == NULL)) {
94 if(catchStack.cursor >= 0){
95 longjmp(catchStack.envs[catchStack.cursor], 1);
96 }
97 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parents");
98 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 73);
99 fatal_exit(1);
100 }
101 var1 = var3;
102 RET_LABEL2:(void)0;
103 }
104 }
105 {
106 var4 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var1, var_e);
107 }
108 var = var4;
109 goto RET_LABEL;
110 RET_LABEL:;
111 return var;
112 }
113 /* method ordered_tree$OrderedTree$add for (self: OrderedTree[Object], nullable Object, Object) */
114 void ordered_tree___ordered_tree__OrderedTree___add(val* self, val* p0, val* p1) {
115 short int var /* : Bool */;
116 int cltype;
117 int idtype;
118 const struct type* type_struct;
119 const char* var_class_name;
120 short int var1 /* : Bool */;
121 int cltype2;
122 int idtype3;
123 const struct type* type_struct4;
124 const char* var_class_name5;
125 val* var_p /* var p: nullable Object */;
126 val* var_e /* var e: Object */;
127 val* var6 /* : HashMap[Object, nullable Object] */;
128 val* var8 /* : HashMap[Object, nullable Object] */;
129 short int var9 /* : Bool */;
130 short int var10 /* : Bool */;
131 val* var11 /* : Array[Object] */;
132 val* var13 /* : Array[Object] */;
133 short int var14 /* : Bool */;
134 short int var15 /* : Bool */;
135 val* var16 /* : HashMap[Object, Array[Object]] */;
136 val* var18 /* : HashMap[Object, Array[Object]] */;
137 short int var19 /* : Bool */;
138 val* var20 /* : HashMap[Object, Array[Object]] */;
139 val* var22 /* : HashMap[Object, Array[Object]] */;
140 val* var23 /* : nullable Object */;
141 val* var24 /* : HashMap[Object, Array[Object]] */;
142 val* var26 /* : HashMap[Object, Array[Object]] */;
143 val* var27 /* : Array[Object] */;
144 val* var_ /* var : Array[Object] */;
145 /* Covariant cast for argument 0 (p) <p0:nullable Object> isa nullable E */
146 /* <p0:nullable Object> isa nullable E */
147 type_struct = self->type->resolution_table->types[COLOR_nullable__ordered_tree__OrderedTree___35dE];
148 cltype = type_struct->color;
149 idtype = type_struct->id;
150 if(p0 == NULL) {
151 var = 1;
152 } else {
153 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
154 var = 0;
155 } else {
156 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
157 }
158 }
159 if (unlikely(!var)) {
160 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
161 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable E", var_class_name);
162 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 94);
163 fatal_exit(1);
164 }
165 /* Covariant cast for argument 1 (e) <p1:Object> isa E */
166 /* <p1:Object> isa E */
167 type_struct4 = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
168 cltype2 = type_struct4->color;
169 idtype3 = type_struct4->id;
170 if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
171 var1 = 0;
172 } else {
173 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
174 }
175 if (unlikely(!var1)) {
176 var_class_name5 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
177 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name5);
178 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 94);
179 fatal_exit(1);
180 }
181 var_p = p0;
182 var_e = p1;
183 {
184 ordered_tree___ordered_tree__OrderedTree___detach(self, var_e); /* Direct call ordered_tree$OrderedTree$detach on <self:OrderedTree[Object]>*/
185 }
186 {
187 { /* Inline ordered_tree$OrderedTree$parents (self) on <self:OrderedTree[Object]> */
188 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___parents].val; /* _parents on <self:OrderedTree[Object]> */
189 if (unlikely(var8 == NULL)) {
190 if(catchStack.cursor >= 0){
191 longjmp(catchStack.envs[catchStack.cursor], 1);
192 }
193 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parents");
194 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 73);
195 fatal_exit(1);
196 }
197 var6 = var8;
198 RET_LABEL7:(void)0;
199 }
200 }
201 {
202 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var6, var_e, var_p); /* Direct call hash_collection$HashMap$[]= on <var6:HashMap[Object, nullable Object]>*/
203 }
204 if (var_p == NULL) {
205 var9 = 1; /* is null */
206 } else {
207 var9 = 0; /* arg is null but recv is not */
208 }
209 if (0) {
210 var10 = ((short int(*)(val* self, val* p0))((((long)var_p&3)?class_info[((long)var_p&3)]:var_p->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_p, ((val*)NULL)); /* == on <var_p:nullable Object>*/
211 var9 = var10;
212 }
213 if (var9){
214 {
215 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
216 var13 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
217 if (unlikely(var13 == NULL)) {
218 if(catchStack.cursor >= 0){
219 longjmp(catchStack.envs[catchStack.cursor], 1);
220 }
221 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
222 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
223 fatal_exit(1);
224 }
225 var11 = var13;
226 RET_LABEL12:(void)0;
227 }
228 }
229 {
230 core___core__Array___core__abstract_collection__SimpleCollection__add(var11, var_e); /* Direct call array$Array$add on <var11:Array[Object]>*/
231 }
232 } else {
233 {
234 var14 = ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__has(self, var_p);
235 }
236 var15 = !var14;
237 if (var15){
238 {
239 ordered_tree___ordered_tree__OrderedTree___add(self, ((val*)NULL), var_p); /* Direct call ordered_tree$OrderedTree$add on <self:OrderedTree[Object]>*/
240 }
241 } else {
242 }
243 {
244 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
245 var18 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
246 if (unlikely(var18 == NULL)) {
247 if(catchStack.cursor >= 0){
248 longjmp(catchStack.envs[catchStack.cursor], 1);
249 }
250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
251 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
252 fatal_exit(1);
253 }
254 var16 = var18;
255 RET_LABEL17:(void)0;
256 }
257 }
258 {
259 var19 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var16, var_p);
260 }
261 if (var19){
262 {
263 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
264 var22 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
265 if (unlikely(var22 == NULL)) {
266 if(catchStack.cursor >= 0){
267 longjmp(catchStack.envs[catchStack.cursor], 1);
268 }
269 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
270 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
271 fatal_exit(1);
272 }
273 var20 = var22;
274 RET_LABEL21:(void)0;
275 }
276 }
277 {
278 var23 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var20, var_p);
279 }
280 {
281 core___core__Array___core__abstract_collection__SimpleCollection__add(var23, var_e); /* Direct call array$Array$add on <var23:nullable Object(Array[Object])>*/
282 }
283 } else {
284 {
285 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
286 var26 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
287 if (unlikely(var26 == NULL)) {
288 if(catchStack.cursor >= 0){
289 longjmp(catchStack.envs[catchStack.cursor], 1);
290 }
291 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
292 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
293 fatal_exit(1);
294 }
295 var24 = var26;
296 RET_LABEL25:(void)0;
297 }
298 }
299 var27 = NEW_core__Array(self->type->resolution_table->types[COLOR_core__Array__ordered_tree__OrderedTree___35dE]);
300 {
301 core___core__Array___with_capacity(var27, 1l); /* Direct call array$Array$with_capacity on <var27:Array[Object]>*/
302 }
303 var_ = var27;
304 {
305 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var_e); /* Direct call array$AbstractArray$push on <var_:Array[Object]>*/
306 }
307 {
308 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var24, var_p, var_); /* Direct call hash_collection$HashMap$[]= on <var24:HashMap[Object, Array[Object]]>*/
309 }
310 }
311 }
312 RET_LABEL:;
313 }
314 /* method ordered_tree$OrderedTree$add_all for (self: OrderedTree[Object], nullable Object, Collection[Object]) */
315 void ordered_tree___ordered_tree__OrderedTree___add_all(val* self, val* p0, val* p1) {
316 short int var /* : Bool */;
317 int cltype;
318 int idtype;
319 const struct type* type_struct;
320 const char* var_class_name;
321 short int var1 /* : Bool */;
322 int cltype2;
323 int idtype3;
324 const struct type* type_struct4;
325 const char* var_class_name5;
326 val* var_p /* var p: nullable Object */;
327 val* var_es /* var es: Collection[Object] */;
328 val* var_ /* var : Collection[Object] */;
329 val* var6 /* : Iterator[nullable Object] */;
330 val* var_7 /* var : Iterator[Object] */;
331 short int var8 /* : Bool */;
332 val* var9 /* : nullable Object */;
333 val* var_e /* var e: Object */;
334 /* Covariant cast for argument 0 (p) <p0:nullable Object> isa nullable E */
335 /* <p0:nullable Object> isa nullable E */
336 type_struct = self->type->resolution_table->types[COLOR_nullable__ordered_tree__OrderedTree___35dE];
337 cltype = type_struct->color;
338 idtype = type_struct->id;
339 if(p0 == NULL) {
340 var = 1;
341 } else {
342 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
343 var = 0;
344 } else {
345 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
346 }
347 }
348 if (unlikely(!var)) {
349 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
350 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable E", var_class_name);
351 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 117);
352 fatal_exit(1);
353 }
354 /* Covariant cast for argument 1 (es) <p1:Collection[Object]> isa Collection[E] */
355 /* <p1:Collection[Object]> isa Collection[E] */
356 type_struct4 = self->type->resolution_table->types[COLOR_core__Collection__ordered_tree__OrderedTree___35dE];
357 cltype2 = type_struct4->color;
358 idtype3 = type_struct4->id;
359 if(cltype2 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
360 var1 = 0;
361 } else {
362 var1 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype2] == idtype3;
363 }
364 if (unlikely(!var1)) {
365 var_class_name5 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
366 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name5);
367 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 117);
368 fatal_exit(1);
369 }
370 var_p = p0;
371 var_es = p1;
372 var_ = var_es;
373 {
374 var6 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[Object]>*/
375 }
376 var_7 = var6;
377 for(;;) {
378 {
379 var8 = ((short int(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_7); /* is_ok on <var_7:Iterator[Object]>*/
380 }
381 if (var8){
382 } else {
383 goto BREAK_label;
384 }
385 {
386 var9 = ((val*(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_7); /* item on <var_7:Iterator[Object]>*/
387 }
388 var_e = var9;
389 {
390 ordered_tree___ordered_tree__OrderedTree___add(self, var_p, var_e); /* Direct call ordered_tree$OrderedTree$add on <self:OrderedTree[Object]>*/
391 }
392 {
393 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_7); /* next on <var_7:Iterator[Object]>*/
394 }
395 }
396 BREAK_label: (void)0;
397 {
398 ((void(*)(val* self))((((long)var_7&3)?class_info[((long)var_7&3)]:var_7->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_7); /* finish on <var_7:Iterator[Object]>*/
399 }
400 RET_LABEL:;
401 }
402 /* method ordered_tree$OrderedTree$detach for (self: OrderedTree[Object], Object) */
403 void ordered_tree___ordered_tree__OrderedTree___detach(val* self, val* p0) {
404 short int var /* : Bool */;
405 int cltype;
406 int idtype;
407 const struct type* type_struct;
408 const char* var_class_name;
409 val* var_e /* var e: Object */;
410 val* var1 /* : HashMap[Object, nullable Object] */;
411 val* var3 /* : HashMap[Object, nullable Object] */;
412 val* var4 /* : nullable Object */;
413 val* var_old_parent /* var old_parent: nullable Object */;
414 short int var5 /* : Bool */;
415 short int var6 /* : Bool */;
416 val* var7 /* : HashMap[Object, Array[Object]] */;
417 val* var9 /* : HashMap[Object, Array[Object]] */;
418 val* var10 /* : nullable Object */;
419 val* var_subs /* var subs: Array[Object] */;
420 short int var11 /* : Bool */;
421 val* var12 /* : HashMap[Object, Array[Object]] */;
422 val* var14 /* : HashMap[Object, Array[Object]] */;
423 val* var15 /* : RemovableCollection[nullable Object] */;
424 val* var16 /* : Array[Object] */;
425 val* var18 /* : Array[Object] */;
426 short int var19 /* : Bool */;
427 val* var20 /* : Array[Object] */;
428 val* var22 /* : Array[Object] */;
429 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
430 /* <p0:Object> isa E */
431 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
432 cltype = type_struct->color;
433 idtype = type_struct->id;
434 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
435 var = 0;
436 } else {
437 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
438 }
439 if (unlikely(!var)) {
440 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
441 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
442 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 123);
443 fatal_exit(1);
444 }
445 var_e = p0;
446 {
447 { /* Inline ordered_tree$OrderedTree$parents (self) on <self:OrderedTree[Object]> */
448 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___parents].val; /* _parents on <self:OrderedTree[Object]> */
449 if (unlikely(var3 == NULL)) {
450 if(catchStack.cursor >= 0){
451 longjmp(catchStack.envs[catchStack.cursor], 1);
452 }
453 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _parents");
454 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 73);
455 fatal_exit(1);
456 }
457 var1 = var3;
458 RET_LABEL2:(void)0;
459 }
460 }
461 {
462 var4 = core___core__HashMap___core__abstract_collection__MapRead__get_or_null(var1, var_e);
463 }
464 var_old_parent = var4;
465 if (var_old_parent == NULL) {
466 var5 = 0; /* is null */
467 } else {
468 var5 = 1; /* arg is null and recv is not */
469 }
470 if (0) {
471 var6 = ((short int(*)(val* self, val* p0))((((long)var_old_parent&3)?class_info[((long)var_old_parent&3)]:var_old_parent->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_old_parent, ((val*)NULL)); /* != on <var_old_parent:nullable Object>*/
472 var5 = var6;
473 }
474 if (var5){
475 {
476 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
477 var9 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
478 if (unlikely(var9 == NULL)) {
479 if(catchStack.cursor >= 0){
480 longjmp(catchStack.envs[catchStack.cursor], 1);
481 }
482 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
483 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
484 fatal_exit(1);
485 }
486 var7 = var9;
487 RET_LABEL8:(void)0;
488 }
489 }
490 {
491 var10 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var7, var_old_parent);
492 }
493 var_subs = var10;
494 {
495 core___core__AbstractArray___core__abstract_collection__RemovableCollection__remove(var_subs, var_e); /* Direct call array$AbstractArray$remove on <var_subs:Array[Object]>*/
496 }
497 {
498 var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_subs);
499 }
500 if (var11){
501 {
502 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
503 var14 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
504 if (unlikely(var14 == NULL)) {
505 if(catchStack.cursor >= 0){
506 longjmp(catchStack.envs[catchStack.cursor], 1);
507 }
508 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
509 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
510 fatal_exit(1);
511 }
512 var12 = var14;
513 RET_LABEL13:(void)0;
514 }
515 }
516 {
517 var15 = core___core__HashMap___core__abstract_collection__MapRead__keys(var12);
518 }
519 {
520 ((void(*)(val* self, val* p0))((((long)var15&3)?class_info[((long)var15&3)]:var15->class)->vft[COLOR_core__abstract_collection__RemovableCollection__remove]))(var15, var_old_parent); /* remove on <var15:RemovableCollection[nullable Object](RemovableCollection[Object])>*/
521 }
522 } else {
523 }
524 } else {
525 {
526 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
527 var18 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
528 if (unlikely(var18 == NULL)) {
529 if(catchStack.cursor >= 0){
530 longjmp(catchStack.envs[catchStack.cursor], 1);
531 }
532 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
533 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
534 fatal_exit(1);
535 }
536 var16 = var18;
537 RET_LABEL17:(void)0;
538 }
539 }
540 {
541 var19 = core___core__AbstractArrayRead___core__abstract_collection__Collection__has(var16, var_e);
542 }
543 if (var19){
544 {
545 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
546 var22 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
547 if (unlikely(var22 == NULL)) {
548 if(catchStack.cursor >= 0){
549 longjmp(catchStack.envs[catchStack.cursor], 1);
550 }
551 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
552 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
553 fatal_exit(1);
554 }
555 var20 = var22;
556 RET_LABEL21:(void)0;
557 }
558 }
559 {
560 core___core__AbstractArray___core__abstract_collection__RemovableCollection__remove(var20, var_e); /* Direct call array$AbstractArray$remove on <var20:Array[Object]>*/
561 }
562 } else {
563 }
564 }
565 RET_LABEL:;
566 }
567 /* method ordered_tree$OrderedTree$write_to for (self: OrderedTree[Object], Writer) */
568 void ordered_tree___ordered_tree__OrderedTree___core__stream__Writable__write_to(val* self, val* p0) {
569 val* var_stream /* var stream: Writer */;
570 val* var /* : Array[Object] */;
571 val* var2 /* : Array[Object] */;
572 val* var_ /* var : Array[Object] */;
573 val* var3 /* : IndexedIterator[nullable Object] */;
574 val* var_4 /* var : IndexedIterator[Object] */;
575 short int var5 /* : Bool */;
576 val* var6 /* : nullable Object */;
577 val* var_r /* var r: Object */;
578 static val* varonce;
579 val* var7 /* : String */;
580 char* var8 /* : CString */;
581 val* var9 /* : String */;
582 val* var10 /* : nullable Int */;
583 val* var11 /* : nullable Int */;
584 val* var12 /* : nullable Bool */;
585 val* var13 /* : nullable Bool */;
586 static val* varonce14;
587 val* var15 /* : String */;
588 char* var16 /* : CString */;
589 val* var17 /* : String */;
590 val* var18 /* : nullable Int */;
591 val* var19 /* : nullable Int */;
592 val* var20 /* : nullable Bool */;
593 val* var21 /* : nullable Bool */;
594 var_stream = p0;
595 {
596 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
597 var2 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
598 if (unlikely(var2 == NULL)) {
599 if(catchStack.cursor >= 0){
600 longjmp(catchStack.envs[catchStack.cursor], 1);
601 }
602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
603 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
604 fatal_exit(1);
605 }
606 var = var2;
607 RET_LABEL1:(void)0;
608 }
609 }
610 var_ = var;
611 {
612 var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
613 }
614 var_4 = var3;
615 for(;;) {
616 {
617 var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[Object]>*/
618 }
619 if (var5){
620 } else {
621 goto BREAK_label;
622 }
623 {
624 var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[Object]>*/
625 }
626 var_r = var6;
627 if (likely(varonce!=NULL)) {
628 var7 = varonce;
629 } else {
630 var8 = "";
631 var10 = (val*)(0l<<2|1);
632 var11 = (val*)(0l<<2|1);
633 var12 = (val*)((long)(0)<<2|3);
634 var13 = (val*)((long)(0)<<2|3);
635 var9 = core__flat___CString___to_s_unsafe(var8, var10, var11, var12, var13);
636 var7 = var9;
637 varonce = var7;
638 }
639 {
640 ordered_tree___ordered_tree__OrderedTree___write_line(self, var_stream, var_r, var7); /* Direct call ordered_tree$OrderedTree$write_line on <self:OrderedTree[Object]>*/
641 }
642 if (likely(varonce14!=NULL)) {
643 var15 = varonce14;
644 } else {
645 var16 = "";
646 var18 = (val*)(0l<<2|1);
647 var19 = (val*)(0l<<2|1);
648 var20 = (val*)((long)(0)<<2|3);
649 var21 = (val*)((long)(0)<<2|3);
650 var17 = core__flat___CString___to_s_unsafe(var16, var18, var19, var20, var21);
651 var15 = var17;
652 varonce14 = var15;
653 }
654 {
655 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_stream, var_r, var15); /* Direct call ordered_tree$OrderedTree$sub_write_to on <self:OrderedTree[Object]>*/
656 }
657 {
658 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[Object]>*/
659 }
660 }
661 BREAK_label: (void)0;
662 {
663 ((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[Object]>*/
664 }
665 RET_LABEL:;
666 }
667 /* method ordered_tree$OrderedTree$sub_write_to for (self: OrderedTree[Object], Writer, Object, String) */
668 void ordered_tree___ordered_tree__OrderedTree___sub_write_to(val* self, val* p0, val* p1, val* p2) {
669 short int var /* : Bool */;
670 int cltype;
671 int idtype;
672 const struct type* type_struct;
673 const char* var_class_name;
674 val* var_o /* var o: Writer */;
675 val* var_e /* var e: Object */;
676 val* var_prefix /* var prefix: String */;
677 val* var1 /* : HashMap[Object, Array[Object]] */;
678 val* var3 /* : HashMap[Object, Array[Object]] */;
679 short int var4 /* : Bool */;
680 short int var5 /* : Bool */;
681 val* var6 /* : HashMap[Object, Array[Object]] */;
682 val* var8 /* : HashMap[Object, Array[Object]] */;
683 val* var9 /* : nullable Object */;
684 val* var_subs /* var subs: Array[Object] */;
685 short int var10 /* : Bool */;
686 val* var11 /* : nullable Object */;
687 val* var_last /* var last: Object */;
688 val* var_ /* var : Array[Object] */;
689 val* var12 /* : IndexedIterator[nullable Object] */;
690 val* var_13 /* var : IndexedIterator[Object] */;
691 short int var14 /* : Bool */;
692 val* var15 /* : nullable Object */;
693 val* var_e2 /* var e2: Object */;
694 short int var16 /* : Bool */;
695 static val* varonce;
696 val* var17 /* : String */;
697 char* var18 /* : CString */;
698 val* var19 /* : String */;
699 val* var20 /* : nullable Int */;
700 val* var21 /* : nullable Int */;
701 val* var22 /* : nullable Bool */;
702 val* var23 /* : nullable Bool */;
703 val* var24 /* : Text */;
704 static val* varonce25;
705 val* var26 /* : String */;
706 char* var27 /* : CString */;
707 val* var28 /* : String */;
708 val* var29 /* : nullable Int */;
709 val* var30 /* : nullable Int */;
710 val* var31 /* : nullable Bool */;
711 val* var32 /* : nullable Bool */;
712 val* var33 /* : Text */;
713 static val* varonce34;
714 val* var35 /* : String */;
715 char* var36 /* : CString */;
716 val* var37 /* : String */;
717 val* var38 /* : nullable Int */;
718 val* var39 /* : nullable Int */;
719 val* var40 /* : nullable Bool */;
720 val* var41 /* : nullable Bool */;
721 val* var42 /* : Text */;
722 static val* varonce43;
723 val* var44 /* : String */;
724 char* var45 /* : CString */;
725 val* var46 /* : String */;
726 val* var47 /* : nullable Int */;
727 val* var48 /* : nullable Int */;
728 val* var49 /* : nullable Bool */;
729 val* var50 /* : nullable Bool */;
730 val* var51 /* : Text */;
731 /* Covariant cast for argument 1 (e) <p1:Object> isa E */
732 /* <p1:Object> isa E */
733 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
734 cltype = type_struct->color;
735 idtype = type_struct->id;
736 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
737 var = 0;
738 } else {
739 var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
740 }
741 if (unlikely(!var)) {
742 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
743 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
744 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 155);
745 fatal_exit(1);
746 }
747 var_o = p0;
748 var_e = p1;
749 var_prefix = p2;
750 {
751 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
752 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
753 if (unlikely(var3 == NULL)) {
754 if(catchStack.cursor >= 0){
755 longjmp(catchStack.envs[catchStack.cursor], 1);
756 }
757 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
758 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
759 fatal_exit(1);
760 }
761 var1 = var3;
762 RET_LABEL2:(void)0;
763 }
764 }
765 {
766 var4 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var1, var_e);
767 }
768 var5 = !var4;
769 if (var5){
770 goto RET_LABEL;
771 } else {
772 }
773 {
774 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
775 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
776 if (unlikely(var8 == NULL)) {
777 if(catchStack.cursor >= 0){
778 longjmp(catchStack.envs[catchStack.cursor], 1);
779 }
780 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
781 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
782 fatal_exit(1);
783 }
784 var6 = var8;
785 RET_LABEL7:(void)0;
786 }
787 }
788 {
789 var9 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var6, var_e);
790 }
791 var_subs = var9;
792 {
793 var10 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_subs);
794 }
795 if (var10){
796 goto RET_LABEL;
797 } else {
798 }
799 {
800 var11 = core___core__SequenceRead___last(var_subs);
801 }
802 var_last = var11;
803 var_ = var_subs;
804 {
805 var12 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
806 }
807 var_13 = var12;
808 for(;;) {
809 {
810 var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_13); /* is_ok on <var_13:IndexedIterator[Object]>*/
811 }
812 if (var14){
813 } else {
814 goto BREAK_label;
815 }
816 {
817 var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_13); /* item on <var_13:IndexedIterator[Object]>*/
818 }
819 var_e2 = var15;
820 {
821 var16 = ((short int(*)(val* self, val* p0))((((long)var_e2&3)?class_info[((long)var_e2&3)]:var_e2->class)->vft[COLOR_core__kernel__Object___33d_61d]))(var_e2, var_last); /* != on <var_e2:Object>*/
822 }
823 if (var16){
824 if (likely(varonce!=NULL)) {
825 var17 = varonce;
826 } else {
827 var18 = "|--";
828 var20 = (val*)(3l<<2|1);
829 var21 = (val*)(3l<<2|1);
830 var22 = (val*)((long)(0)<<2|3);
831 var23 = (val*)((long)(0)<<2|3);
832 var19 = core__flat___CString___to_s_unsafe(var18, var20, var21, var22, var23);
833 var17 = var19;
834 varonce = var17;
835 }
836 {
837 var24 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_core__abstract_text__Text___43d]))(var_prefix, var17); /* + on <var_prefix:String>*/
838 }
839 {
840 ordered_tree___ordered_tree__OrderedTree___write_line(self, var_o, var_e2, var24); /* Direct call ordered_tree$OrderedTree$write_line on <self:OrderedTree[Object]>*/
841 }
842 if (likely(varonce25!=NULL)) {
843 var26 = varonce25;
844 } else {
845 var27 = "| ";
846 var29 = (val*)(3l<<2|1);
847 var30 = (val*)(3l<<2|1);
848 var31 = (val*)((long)(0)<<2|3);
849 var32 = (val*)((long)(0)<<2|3);
850 var28 = core__flat___CString___to_s_unsafe(var27, var29, var30, var31, var32);
851 var26 = var28;
852 varonce25 = var26;
853 }
854 {
855 var33 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_core__abstract_text__Text___43d]))(var_prefix, var26); /* + on <var_prefix:String>*/
856 }
857 {
858 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_o, var_e2, var33); /* Direct call ordered_tree$OrderedTree$sub_write_to on <self:OrderedTree[Object]>*/
859 }
860 } else {
861 if (likely(varonce34!=NULL)) {
862 var35 = varonce34;
863 } else {
864 var36 = "`--";
865 var38 = (val*)(3l<<2|1);
866 var39 = (val*)(3l<<2|1);
867 var40 = (val*)((long)(0)<<2|3);
868 var41 = (val*)((long)(0)<<2|3);
869 var37 = core__flat___CString___to_s_unsafe(var36, var38, var39, var40, var41);
870 var35 = var37;
871 varonce34 = var35;
872 }
873 {
874 var42 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_core__abstract_text__Text___43d]))(var_prefix, var35); /* + on <var_prefix:String>*/
875 }
876 {
877 ordered_tree___ordered_tree__OrderedTree___write_line(self, var_o, var_e2, var42); /* Direct call ordered_tree$OrderedTree$write_line on <self:OrderedTree[Object]>*/
878 }
879 if (likely(varonce43!=NULL)) {
880 var44 = varonce43;
881 } else {
882 var45 = " ";
883 var47 = (val*)(3l<<2|1);
884 var48 = (val*)(3l<<2|1);
885 var49 = (val*)((long)(0)<<2|3);
886 var50 = (val*)((long)(0)<<2|3);
887 var46 = core__flat___CString___to_s_unsafe(var45, var47, var48, var49, var50);
888 var44 = var46;
889 varonce43 = var44;
890 }
891 {
892 var51 = ((val*(*)(val* self, val* p0))(var_prefix->class->vft[COLOR_core__abstract_text__Text___43d]))(var_prefix, var44); /* + on <var_prefix:String>*/
893 }
894 {
895 ordered_tree___ordered_tree__OrderedTree___sub_write_to(self, var_o, var_e2, var51); /* Direct call ordered_tree$OrderedTree$sub_write_to on <self:OrderedTree[Object]>*/
896 }
897 }
898 {
899 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_13); /* next on <var_13:IndexedIterator[Object]>*/
900 }
901 }
902 BREAK_label: (void)0;
903 {
904 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_13); /* finish on <var_13:IndexedIterator[Object]>*/
905 }
906 RET_LABEL:;
907 }
908 /* method ordered_tree$OrderedTree$write_line for (self: OrderedTree[Object], Writer, Object, String) */
909 void ordered_tree___ordered_tree__OrderedTree___write_line(val* self, val* p0, val* p1, val* p2) {
910 short int var /* : Bool */;
911 int cltype;
912 int idtype;
913 const struct type* type_struct;
914 const char* var_class_name;
915 val* var_o /* var o: Writer */;
916 val* var_e /* var e: Object */;
917 val* var_prefix /* var prefix: String */;
918 val* var1 /* : NativeArray[String] */;
919 static val* varonce;
920 static val* varonce2;
921 val* var3 /* : String */;
922 char* var4 /* : CString */;
923 val* var5 /* : String */;
924 val* var6 /* : nullable Int */;
925 val* var7 /* : nullable Int */;
926 val* var8 /* : nullable Bool */;
927 val* var9 /* : nullable Bool */;
928 val* var10 /* : String */;
929 val* var11 /* : String */;
930 /* Covariant cast for argument 1 (e) <p1:Object> isa E */
931 /* <p1:Object> isa E */
932 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
933 cltype = type_struct->color;
934 idtype = type_struct->id;
935 if(cltype >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
936 var = 0;
937 } else {
938 var = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype] == idtype;
939 }
940 if (unlikely(!var)) {
941 var_class_name = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
942 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
943 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 172);
944 fatal_exit(1);
945 }
946 var_o = p0;
947 var_e = p1;
948 var_prefix = p2;
949 if (unlikely(varonce==NULL)) {
950 var1 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
951 if (likely(varonce2!=NULL)) {
952 var3 = varonce2;
953 } else {
954 var4 = "\n";
955 var6 = (val*)(1l<<2|1);
956 var7 = (val*)(1l<<2|1);
957 var8 = (val*)((long)(0)<<2|3);
958 var9 = (val*)((long)(0)<<2|3);
959 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
960 var3 = var5;
961 varonce2 = var3;
962 }
963 ((struct instance_core__NativeArray*)var1)->values[2]=var3;
964 } else {
965 var1 = varonce;
966 varonce = NULL;
967 }
968 ((struct instance_core__NativeArray*)var1)->values[0]=var_prefix;
969 {
970 var10 = ordered_tree___ordered_tree__OrderedTree___display(self, var_e);
971 }
972 ((struct instance_core__NativeArray*)var1)->values[1]=var10;
973 {
974 var11 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
975 }
976 varonce = var1;
977 {
978 core___core__FileWriter___core__stream__Writer__write(var_o, var11); /* Direct call file$FileWriter$write on <var_o:Writer>*/
979 }
980 RET_LABEL:;
981 }
982 /* method ordered_tree$OrderedTree$sort_with for (self: OrderedTree[Object], Comparator) */
983 void ordered_tree___ordered_tree__OrderedTree___sort_with(val* self, val* p0) {
984 val* var_comparator /* var comparator: Comparator */;
985 val* var /* : Array[Object] */;
986 val* var2 /* : Array[Object] */;
987 val* var3 /* : HashMap[Object, Array[Object]] */;
988 val* var5 /* : HashMap[Object, Array[Object]] */;
989 val* var6 /* : RemovableCollection[nullable Object] */;
990 val* var_ /* var : RemovableCollection[Array[Object]] */;
991 val* var7 /* : Iterator[nullable Object] */;
992 val* var_8 /* var : Iterator[Array[Object]] */;
993 short int var9 /* : Bool */;
994 val* var10 /* : nullable Object */;
995 val* var_a /* var a: Array[Object] */;
996 var_comparator = p0;
997 {
998 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
999 var2 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1000 if (unlikely(var2 == NULL)) {
1001 if(catchStack.cursor >= 0){
1002 longjmp(catchStack.envs[catchStack.cursor], 1);
1003 }
1004 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1005 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1006 fatal_exit(1);
1007 }
1008 var = var2;
1009 RET_LABEL1:(void)0;
1010 }
1011 }
1012 {
1013 core___core__Comparator___sort(var_comparator, var); /* Direct call sorter$Comparator$sort on <var_comparator:Comparator>*/
1014 }
1015 {
1016 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1017 var5 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1018 if (unlikely(var5 == NULL)) {
1019 if(catchStack.cursor >= 0){
1020 longjmp(catchStack.envs[catchStack.cursor], 1);
1021 }
1022 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1023 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1024 fatal_exit(1);
1025 }
1026 var3 = var5;
1027 RET_LABEL4:(void)0;
1028 }
1029 }
1030 {
1031 var6 = core___core__HashMap___core__abstract_collection__MapRead__values(var3);
1032 }
1033 var_ = var6;
1034 {
1035 var7 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:RemovableCollection[Array[Object]]>*/
1036 }
1037 var_8 = var7;
1038 for(;;) {
1039 {
1040 var9 = ((short int(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_8); /* is_ok on <var_8:Iterator[Array[Object]]>*/
1041 }
1042 if (var9){
1043 } else {
1044 goto BREAK_label;
1045 }
1046 {
1047 var10 = ((val*(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_8); /* item on <var_8:Iterator[Array[Object]]>*/
1048 }
1049 var_a = var10;
1050 {
1051 core___core__Comparator___sort(var_comparator, var_a); /* Direct call sorter$Comparator$sort on <var_comparator:Comparator>*/
1052 }
1053 {
1054 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_8); /* next on <var_8:Iterator[Array[Object]]>*/
1055 }
1056 }
1057 BREAK_label: (void)0;
1058 {
1059 ((void(*)(val* self))((((long)var_8&3)?class_info[((long)var_8&3)]:var_8->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_8); /* finish on <var_8:Iterator[Array[Object]]>*/
1060 }
1061 RET_LABEL:;
1062 }
1063 /* method ordered_tree$OrderedTree$display for (self: OrderedTree[Object], Object): String */
1064 val* ordered_tree___ordered_tree__OrderedTree___display(val* self, val* p0) {
1065 val* var /* : String */;
1066 short int var1 /* : Bool */;
1067 int cltype;
1068 int idtype;
1069 const struct type* type_struct;
1070 const char* var_class_name;
1071 val* var_e /* var e: Object */;
1072 val* var2 /* : String */;
1073 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
1074 /* <p0:Object> isa E */
1075 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
1076 cltype = type_struct->color;
1077 idtype = type_struct->id;
1078 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1079 var1 = 0;
1080 } else {
1081 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1082 }
1083 if (unlikely(!var1)) {
1084 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1085 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1086 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 196);
1087 fatal_exit(1);
1088 }
1089 var_e = p0;
1090 {
1091 var2 = ((val*(*)(val* self))((((long)var_e&3)?class_info[((long)var_e&3)]:var_e->class)->vft[COLOR_core__abstract_text__Object__to_s]))(var_e); /* to_s on <var_e:Object>*/
1092 }
1093 var = var2;
1094 goto RET_LABEL;
1095 RET_LABEL:;
1096 return var;
1097 }
1098 /* method ordered_tree$OrderedTree$to_a for (self: OrderedTree[Object]): Array[Object] */
1099 val* ordered_tree___ordered_tree__OrderedTree___core__array__Collection__to_a(val* self) {
1100 val* var /* : Array[Object] */;
1101 val* var1 /* : Array[Object] */;
1102 val* var_res /* var res: Array[Object] */;
1103 val* var2 /* : Array[Object] */;
1104 val* var4 /* : Array[Object] */;
1105 val* var_ /* var : Array[Object] */;
1106 val* var5 /* : IndexedIterator[nullable Object] */;
1107 val* var_6 /* var : IndexedIterator[Object] */;
1108 short int var7 /* : Bool */;
1109 val* var8 /* : nullable Object */;
1110 val* var_r /* var r: Object */;
1111 var1 = NEW_core__Array(self->type->resolution_table->types[COLOR_core__Array__ordered_tree__OrderedTree___35dE]);
1112 {
1113 core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[Object]>*/
1114 }
1115 var_res = var1;
1116 {
1117 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1118 var4 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1119 if (unlikely(var4 == NULL)) {
1120 if(catchStack.cursor >= 0){
1121 longjmp(catchStack.envs[catchStack.cursor], 1);
1122 }
1123 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1124 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1125 fatal_exit(1);
1126 }
1127 var2 = var4;
1128 RET_LABEL3:(void)0;
1129 }
1130 }
1131 var_ = var2;
1132 {
1133 var5 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1134 }
1135 var_6 = var5;
1136 for(;;) {
1137 {
1138 var7 = ((short int(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_6); /* is_ok on <var_6:IndexedIterator[Object]>*/
1139 }
1140 if (var7){
1141 } else {
1142 goto BREAK_label;
1143 }
1144 {
1145 var8 = ((val*(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_6); /* item on <var_6:IndexedIterator[Object]>*/
1146 }
1147 var_r = var8;
1148 {
1149 ordered_tree___ordered_tree__OrderedTree___sub_to_a(self, var_r, var_res); /* Direct call ordered_tree$OrderedTree$sub_to_a on <self:OrderedTree[Object]>*/
1150 }
1151 {
1152 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_6); /* next on <var_6:IndexedIterator[Object]>*/
1153 }
1154 }
1155 BREAK_label: (void)0;
1156 {
1157 ((void(*)(val* self))((((long)var_6&3)?class_info[((long)var_6&3)]:var_6->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_6); /* finish on <var_6:IndexedIterator[Object]>*/
1158 }
1159 var = var_res;
1160 goto RET_LABEL;
1161 RET_LABEL:;
1162 return var;
1163 }
1164 /* method ordered_tree$OrderedTree$sub_to_a for (self: OrderedTree[Object], Object, Array[Object]) */
1165 void ordered_tree___ordered_tree__OrderedTree___sub_to_a(val* self, val* p0, val* p1) {
1166 short int var /* : Bool */;
1167 int cltype;
1168 int idtype;
1169 const struct type* type_struct;
1170 const char* var_class_name;
1171 short int var1 /* : Bool */;
1172 int cltype2;
1173 int idtype3;
1174 const struct type* type_struct4;
1175 const char* var_class_name5;
1176 val* var_e /* var e: Object */;
1177 val* var_res /* var res: Array[Object] */;
1178 val* var6 /* : HashMap[Object, Array[Object]] */;
1179 val* var8 /* : HashMap[Object, Array[Object]] */;
1180 short int var9 /* : Bool */;
1181 val* var10 /* : HashMap[Object, Array[Object]] */;
1182 val* var12 /* : HashMap[Object, Array[Object]] */;
1183 val* var13 /* : nullable Object */;
1184 val* var_ /* var : Array[Object] */;
1185 val* var14 /* : IndexedIterator[nullable Object] */;
1186 val* var_15 /* var : IndexedIterator[Object] */;
1187 short int var16 /* : Bool */;
1188 val* var17 /* : nullable Object */;
1189 val* var_e2 /* var e2: Object */;
1190 /* Covariant cast for argument 0 (e) <p0:Object> isa E */
1191 /* <p0:Object> isa E */
1192 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree___35dE];
1193 cltype = type_struct->color;
1194 idtype = type_struct->id;
1195 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
1196 var = 0;
1197 } else {
1198 var = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
1199 }
1200 if (unlikely(!var)) {
1201 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
1202 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "E", var_class_name);
1203 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 218);
1204 fatal_exit(1);
1205 }
1206 /* Covariant cast for argument 1 (res) <p1:Array[Object]> isa Array[E] */
1207 /* <p1:Array[Object]> isa Array[E] */
1208 type_struct4 = self->type->resolution_table->types[COLOR_core__Array__ordered_tree__OrderedTree___35dE];
1209 cltype2 = type_struct4->color;
1210 idtype3 = type_struct4->id;
1211 if(cltype2 >= p1->type->table_size) {
1212 var1 = 0;
1213 } else {
1214 var1 = p1->type->type_table[cltype2] == idtype3;
1215 }
1216 if (unlikely(!var1)) {
1217 var_class_name5 = p1 == NULL ? "null" : p1->type->name;
1218 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[E]", var_class_name5);
1219 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 218);
1220 fatal_exit(1);
1221 }
1222 var_e = p0;
1223 var_res = p1;
1224 {
1225 core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_e); /* Direct call array$Array$add on <var_res:Array[Object]>*/
1226 }
1227 {
1228 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1229 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1230 if (unlikely(var8 == NULL)) {
1231 if(catchStack.cursor >= 0){
1232 longjmp(catchStack.envs[catchStack.cursor], 1);
1233 }
1234 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1235 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1236 fatal_exit(1);
1237 }
1238 var6 = var8;
1239 RET_LABEL7:(void)0;
1240 }
1241 }
1242 {
1243 var9 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var6, var_e);
1244 }
1245 if (var9){
1246 {
1247 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1248 var12 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1249 if (unlikely(var12 == NULL)) {
1250 if(catchStack.cursor >= 0){
1251 longjmp(catchStack.envs[catchStack.cursor], 1);
1252 }
1253 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1254 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1255 fatal_exit(1);
1256 }
1257 var10 = var12;
1258 RET_LABEL11:(void)0;
1259 }
1260 }
1261 {
1262 var13 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var10, var_e);
1263 }
1264 var_ = var13;
1265 {
1266 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
1267 }
1268 var_15 = var14;
1269 for(;;) {
1270 {
1271 var16 = ((short int(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_15); /* is_ok on <var_15:IndexedIterator[Object]>*/
1272 }
1273 if (var16){
1274 } else {
1275 goto BREAK_label;
1276 }
1277 {
1278 var17 = ((val*(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_15); /* item on <var_15:IndexedIterator[Object]>*/
1279 }
1280 var_e2 = var17;
1281 {
1282 ordered_tree___ordered_tree__OrderedTree___sub_to_a(self, var_e2, var_res); /* Direct call ordered_tree$OrderedTree$sub_to_a on <self:OrderedTree[Object]>*/
1283 }
1284 {
1285 ((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_15); /* next on <var_15:IndexedIterator[Object]>*/
1286 }
1287 }
1288 BREAK_label: (void)0;
1289 {
1290 ((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_15); /* finish on <var_15:IndexedIterator[Object]>*/
1291 }
1292 } else {
1293 }
1294 RET_LABEL:;
1295 }
1296 /* method ordered_tree$OrderedTree$is_empty for (self: OrderedTree[Object]): Bool */
1297 short int ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__is_empty(val* self) {
1298 short int var /* : Bool */;
1299 val* var1 /* : Array[Object] */;
1300 val* var3 /* : Array[Object] */;
1301 short int var4 /* : Bool */;
1302 {
1303 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1304 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1305 if (unlikely(var3 == NULL)) {
1306 if(catchStack.cursor >= 0){
1307 longjmp(catchStack.envs[catchStack.cursor], 1);
1308 }
1309 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1310 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1311 fatal_exit(1);
1312 }
1313 var1 = var3;
1314 RET_LABEL2:(void)0;
1315 }
1316 }
1317 {
1318 var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var1);
1319 }
1320 var = var4;
1321 goto RET_LABEL;
1322 RET_LABEL:;
1323 return var;
1324 }
1325 /* method ordered_tree$OrderedTree$first for (self: OrderedTree[Object]): Object */
1326 val* ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__first(val* self) {
1327 val* var /* : Object */;
1328 val* var1 /* : Array[Object] */;
1329 val* var3 /* : Array[Object] */;
1330 val* var4 /* : nullable Object */;
1331 {
1332 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1333 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1334 if (unlikely(var3 == NULL)) {
1335 if(catchStack.cursor >= 0){
1336 longjmp(catchStack.envs[catchStack.cursor], 1);
1337 }
1338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1339 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1340 fatal_exit(1);
1341 }
1342 var1 = var3;
1343 RET_LABEL2:(void)0;
1344 }
1345 }
1346 {
1347 var4 = core___core__SequenceRead___Collection__first(var1);
1348 }
1349 var = var4;
1350 goto RET_LABEL;
1351 RET_LABEL:;
1352 return var;
1353 }
1354 /* method ordered_tree$OrderedTree$iterator for (self: OrderedTree[Object]): Iterator[Object] */
1355 val* ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__iterator(val* self) {
1356 val* var /* : Iterator[Object] */;
1357 val* var1 /* : OrderedTreeIterator[Object] */;
1358 var1 = NEW_ordered_tree__OrderedTreeIterator(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTreeIterator__ordered_tree__OrderedTree___35dE]);
1359 {
1360 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_ordered_tree__OrderedTreeIterator__tree_61d]))(var1, self); /* tree= on <var1:OrderedTreeIterator[Object]>*/
1361 }
1362 {
1363 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:OrderedTreeIterator[Object]>*/
1364 }
1365 var = var1;
1366 goto RET_LABEL;
1367 RET_LABEL:;
1368 return var;
1369 }
1370 /* method ordered_tree$OrderedTree$== for (self: OrderedTree[Object], nullable Object): Bool */
1371 short int ordered_tree___ordered_tree__OrderedTree___core__kernel__Object___61d_61d(val* self, val* p0) {
1372 short int var /* : Bool */;
1373 val* var_other /* var other: nullable Object */;
1374 short int var1 /* : Bool */;
1375 int cltype;
1376 int idtype;
1377 short int var2 /* : Bool */;
1378 short int var3 /* : Bool */;
1379 val* var4 /* : Array[Object] */;
1380 val* var6 /* : Array[Object] */;
1381 val* var7 /* : Array[Object] */;
1382 val* var9 /* : Array[Object] */;
1383 short int var10 /* : Bool */;
1384 short int var_ /* var : Bool */;
1385 val* var11 /* : HashMap[Object, Array[Object]] */;
1386 val* var13 /* : HashMap[Object, Array[Object]] */;
1387 val* var14 /* : HashMap[Object, Array[Object]] */;
1388 val* var16 /* : HashMap[Object, Array[Object]] */;
1389 short int var17 /* : Bool */;
1390 var_other = p0;
1391 /* <var_other:nullable Object> isa OrderedTree[Object] */
1392 cltype = type_ordered_tree__OrderedTree__core__Object.color;
1393 idtype = type_ordered_tree__OrderedTree__core__Object.id;
1394 if(var_other == NULL) {
1395 var1 = 0;
1396 } else {
1397 if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
1398 var1 = 0;
1399 } else {
1400 var1 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
1401 }
1402 }
1403 var2 = !var1;
1404 if (var2){
1405 var = 0;
1406 goto RET_LABEL;
1407 } else {
1408 }
1409 {
1410 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1411 var6 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1412 if (unlikely(var6 == NULL)) {
1413 if(catchStack.cursor >= 0){
1414 longjmp(catchStack.envs[catchStack.cursor], 1);
1415 }
1416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1417 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1418 fatal_exit(1);
1419 }
1420 var4 = var6;
1421 RET_LABEL5:(void)0;
1422 }
1423 }
1424 {
1425 { /* Inline ordered_tree$OrderedTree$roots (var_other) on <var_other:nullable Object(OrderedTree[Object])> */
1426 var9 = var_other->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <var_other:nullable Object(OrderedTree[Object])> */
1427 if (unlikely(var9 == NULL)) {
1428 if(catchStack.cursor >= 0){
1429 longjmp(catchStack.envs[catchStack.cursor], 1);
1430 }
1431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1432 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1433 fatal_exit(1);
1434 }
1435 var7 = var9;
1436 RET_LABEL8:(void)0;
1437 }
1438 }
1439 {
1440 var10 = core___core__Array___core__kernel__Object___61d_61d(var4, var7);
1441 }
1442 var_ = var10;
1443 if (var10){
1444 {
1445 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1446 var13 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1447 if (unlikely(var13 == NULL)) {
1448 if(catchStack.cursor >= 0){
1449 longjmp(catchStack.envs[catchStack.cursor], 1);
1450 }
1451 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1452 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1453 fatal_exit(1);
1454 }
1455 var11 = var13;
1456 RET_LABEL12:(void)0;
1457 }
1458 }
1459 {
1460 { /* Inline ordered_tree$OrderedTree$sub (var_other) on <var_other:nullable Object(OrderedTree[Object])> */
1461 var16 = var_other->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var_other:nullable Object(OrderedTree[Object])> */
1462 if (unlikely(var16 == NULL)) {
1463 if(catchStack.cursor >= 0){
1464 longjmp(catchStack.envs[catchStack.cursor], 1);
1465 }
1466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1467 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1468 fatal_exit(1);
1469 }
1470 var14 = var16;
1471 RET_LABEL15:(void)0;
1472 }
1473 }
1474 {
1475 var17 = core___core__MapRead___core__kernel__Object___61d_61d(var11, var14);
1476 }
1477 var3 = var17;
1478 } else {
1479 var3 = var_;
1480 }
1481 var = var3;
1482 goto RET_LABEL;
1483 RET_LABEL:;
1484 return var;
1485 }
1486 /* method ordered_tree$OrderedTree$hash for (self: OrderedTree[Object]): Int */
1487 long ordered_tree___ordered_tree__OrderedTree___core__kernel__Object__hash(val* self) {
1488 long var /* : Int */;
1489 val* var1 /* : Array[Object] */;
1490 val* var3 /* : Array[Object] */;
1491 long var4 /* : Int */;
1492 val* var5 /* : HashMap[Object, Array[Object]] */;
1493 val* var7 /* : HashMap[Object, Array[Object]] */;
1494 long var8 /* : Int */;
1495 long var9 /* : Int */;
1496 short int var11 /* : Bool */;
1497 int cltype;
1498 int idtype;
1499 const char* var_class_name;
1500 long var12 /* : Int */;
1501 {
1502 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1503 var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1504 if (unlikely(var3 == NULL)) {
1505 if(catchStack.cursor >= 0){
1506 longjmp(catchStack.envs[catchStack.cursor], 1);
1507 }
1508 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1509 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1510 fatal_exit(1);
1511 }
1512 var1 = var3;
1513 RET_LABEL2:(void)0;
1514 }
1515 }
1516 {
1517 var4 = core___core__SequenceRead___core__kernel__Object__hash(var1);
1518 }
1519 {
1520 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1521 var7 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1522 if (unlikely(var7 == NULL)) {
1523 if(catchStack.cursor >= 0){
1524 longjmp(catchStack.envs[catchStack.cursor], 1);
1525 }
1526 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1527 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1528 fatal_exit(1);
1529 }
1530 var5 = var7;
1531 RET_LABEL6:(void)0;
1532 }
1533 }
1534 {
1535 var8 = core___core__MapRead___core__kernel__Object__hash(var5);
1536 }
1537 {
1538 { /* Inline kernel$Int$+ (var4,var8) on <var4:Int> */
1539 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
1540 /* <var8:Int> isa OTHER */
1541 var11 = 1; /* easy <var8:Int> isa OTHER*/
1542 if (unlikely(!var11)) {
1543 var_class_name = type_core__Int.name;
1544 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1545 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1546 fatal_exit(1);
1547 }
1548 var12 = var4 + var8;
1549 var9 = var12;
1550 goto RET_LABEL10;
1551 RET_LABEL10:(void)0;
1552 }
1553 }
1554 var = var9;
1555 goto RET_LABEL;
1556 RET_LABEL:;
1557 return var;
1558 }
1559 /* method ordered_tree$OrderedTree$clone for (self: OrderedTree[Object]): OrderedTree[Object] */
1560 val* ordered_tree___ordered_tree__OrderedTree___core__kernel__Cloneable__clone(val* self) {
1561 val* var /* : OrderedTree[Object] */;
1562 val* var1 /* : OrderedTree[Object] */;
1563 val* var_res /* var res: OrderedTree[Object] */;
1564 val* var3 /* : Array[Object] */;
1565 val* var5 /* : Array[Object] */;
1566 val* var6 /* : HashMap[Object, Array[Object]] */;
1567 val* var8 /* : HashMap[Object, Array[Object]] */;
1568 val* var_ /* var : HashMap[Object, Array[Object]] */;
1569 val* var9 /* : MapIterator[nullable Object, nullable Object] */;
1570 val* var_10 /* var : MapIterator[Object, Array[Object]] */;
1571 short int var11 /* : Bool */;
1572 val* var12 /* : nullable Object */;
1573 val* var_p /* var p: Object */;
1574 val* var13 /* : nullable Object */;
1575 val* var_es /* var es: Array[Object] */;
1576 short int var15 /* : Bool */;
1577 int cltype;
1578 int idtype;
1579 const struct type* type_struct;
1580 const char* var_class_name;
1581 var1 = NEW_ordered_tree__OrderedTree(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree__ordered_tree__OrderedTree___35dE]);
1582 {
1583 { /* Inline kernel$Object$init (var1) on <var1:OrderedTree[Object]> */
1584 RET_LABEL2:(void)0;
1585 }
1586 }
1587 var_res = var1;
1588 {
1589 { /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
1590 var5 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
1591 if (unlikely(var5 == NULL)) {
1592 if(catchStack.cursor >= 0){
1593 longjmp(catchStack.envs[catchStack.cursor], 1);
1594 }
1595 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1596 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1597 fatal_exit(1);
1598 }
1599 var3 = var5;
1600 RET_LABEL4:(void)0;
1601 }
1602 }
1603 {
1604 ordered_tree___ordered_tree__OrderedTree___add_all(var_res, ((val*)NULL), var3); /* Direct call ordered_tree$OrderedTree$add_all on <var_res:OrderedTree[Object]>*/
1605 }
1606 {
1607 { /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
1608 var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
1609 if (unlikely(var8 == NULL)) {
1610 if(catchStack.cursor >= 0){
1611 longjmp(catchStack.envs[catchStack.cursor], 1);
1612 }
1613 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1614 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1615 fatal_exit(1);
1616 }
1617 var6 = var8;
1618 RET_LABEL7:(void)0;
1619 }
1620 }
1621 var_ = var6;
1622 {
1623 var9 = core___core__HashMap___core__abstract_collection__MapRead__iterator(var_);
1624 }
1625 var_10 = var9;
1626 for(;;) {
1627 {
1628 var11 = ((short int(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_10); /* is_ok on <var_10:MapIterator[Object, Array[Object]]>*/
1629 }
1630 if (var11){
1631 } else {
1632 goto BREAK_label;
1633 }
1634 {
1635 var12 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_10); /* key on <var_10:MapIterator[Object, Array[Object]]>*/
1636 }
1637 var_p = var12;
1638 {
1639 var13 = ((val*(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_10); /* item on <var_10:MapIterator[Object, Array[Object]]>*/
1640 }
1641 var_es = var13;
1642 {
1643 ordered_tree___ordered_tree__OrderedTree___add_all(var_res, var_p, var_es); /* Direct call ordered_tree$OrderedTree$add_all on <var_res:OrderedTree[Object]>*/
1644 }
1645 {
1646 ((void(*)(val* self))((((long)var_10&3)?class_info[((long)var_10&3)]:var_10->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_10); /* next on <var_10:MapIterator[Object, Array[Object]]>*/
1647 }
1648 }
1649 BREAK_label: (void)0;
1650 {
1651 { /* Inline abstract_collection$MapIterator$finish (var_10) on <var_10:MapIterator[Object, Array[Object]]> */
1652 RET_LABEL14:(void)0;
1653 }
1654 }
1655 /* <var_res:OrderedTree[Object]> isa SELF */
1656 type_struct = self->type->resolution_table->types[COLOR_core__kernel__Object__SELF];
1657 cltype = type_struct->color;
1658 idtype = type_struct->id;
1659 if(cltype >= var_res->type->table_size) {
1660 var15 = 0;
1661 } else {
1662 var15 = var_res->type->type_table[cltype] == idtype;
1663 }
1664 if (unlikely(!var15)) {
1665 var_class_name = var_res == NULL ? "null" : var_res->type->name;
1666 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELF", var_class_name);
1667 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 288);
1668 fatal_exit(1);
1669 }
1670 var = var_res;
1671 goto RET_LABEL;
1672 RET_LABEL:;
1673 return var;
1674 }
1675 /* method ordered_tree$OrderedTreeIterator$tree for (self: OrderedTreeIterator[Object]): OrderedTree[Object] */
1676 val* ordered_tree___ordered_tree__OrderedTreeIterator___tree(val* self) {
1677 val* var /* : OrderedTree[Object] */;
1678 val* var1 /* : OrderedTree[Object] */;
1679 var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1680 if (unlikely(var1 == NULL)) {
1681 if(catchStack.cursor >= 0){
1682 longjmp(catchStack.envs[catchStack.cursor], 1);
1683 }
1684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1685 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
1686 fatal_exit(1);
1687 }
1688 var = var1;
1689 RET_LABEL:;
1690 return var;
1691 }
1692 /* method ordered_tree$OrderedTreeIterator$tree= for (self: OrderedTreeIterator[Object], OrderedTree[Object]) */
1693 void ordered_tree___ordered_tree__OrderedTreeIterator___tree_61d(val* self, val* p0) {
1694 short int var /* : Bool */;
1695 int cltype;
1696 int idtype;
1697 const struct type* type_struct;
1698 const char* var_class_name;
1699 /* Covariant cast for argument 0 (tree) <p0:OrderedTree[Object]> isa OrderedTree[E] */
1700 /* <p0:OrderedTree[Object]> isa OrderedTree[E] */
1701 type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree__ordered_tree__OrderedTreeIterator___35dE];
1702 cltype = type_struct->color;
1703 idtype = type_struct->id;
1704 if(cltype >= p0->type->table_size) {
1705 var = 0;
1706 } else {
1707 var = p0->type->type_table[cltype] == idtype;
1708 }
1709 if (unlikely(!var)) {
1710 var_class_name = p0 == NULL ? "null" : p0->type->name;
1711 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OrderedTree[E]", var_class_name);
1712 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
1713 fatal_exit(1);
1714 }
1715 self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val = p0; /* _tree on <self:OrderedTreeIterator[Object]> */
1716 RET_LABEL:;
1717 }
1718 /* method ordered_tree$OrderedTreeIterator$iterators for (self: OrderedTreeIterator[Object]): Array[Iterator[Object]] */
1719 val* ordered_tree___ordered_tree__OrderedTreeIterator___iterators(val* self) {
1720 val* var /* : Array[Iterator[Object]] */;
1721 val* var1 /* : Array[Iterator[Object]] */;
1722 var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1723 if (unlikely(var1 == NULL)) {
1724 if(catchStack.cursor >= 0){
1725 longjmp(catchStack.envs[catchStack.cursor], 1);
1726 }
1727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1728 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
1729 fatal_exit(1);
1730 }
1731 var = var1;
1732 RET_LABEL:;
1733 return var;
1734 }
1735 /* method ordered_tree$OrderedTreeIterator$init for (self: OrderedTreeIterator[Object]) */
1736 void ordered_tree___ordered_tree__OrderedTreeIterator___core__kernel__Object__init(val* self) {
1737 val* var /* : OrderedTree[Object] */;
1738 val* var2 /* : OrderedTree[Object] */;
1739 short int var3 /* : Bool */;
1740 short int var4 /* : Bool */;
1741 val* var5 /* : Array[Iterator[Object]] */;
1742 val* var7 /* : Array[Iterator[Object]] */;
1743 val* var8 /* : OrderedTree[Object] */;
1744 val* var10 /* : OrderedTree[Object] */;
1745 val* var11 /* : Array[Object] */;
1746 val* var13 /* : Array[Object] */;
1747 val* var14 /* : IndexedIterator[nullable Object] */;
1748 {
1749 ((void(*)(val* self))(self->class->vft[COLOR_ordered_tree___ordered_tree__OrderedTreeIterator___core__kernel__Object__init]))(self); /* init on <self:OrderedTreeIterator[Object]>*/
1750 }
1751 {
1752 { /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
1753 var2 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1754 if (unlikely(var2 == NULL)) {
1755 if(catchStack.cursor >= 0){
1756 longjmp(catchStack.envs[catchStack.cursor], 1);
1757 }
1758 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1759 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
1760 fatal_exit(1);
1761 }
1762 var = var2;
1763 RET_LABEL1:(void)0;
1764 }
1765 }
1766 {
1767 var3 = ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__is_empty(var);
1768 }
1769 var4 = !var3;
1770 if (var4){
1771 {
1772 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
1773 var7 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1774 if (unlikely(var7 == NULL)) {
1775 if(catchStack.cursor >= 0){
1776 longjmp(catchStack.envs[catchStack.cursor], 1);
1777 }
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1779 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
1780 fatal_exit(1);
1781 }
1782 var5 = var7;
1783 RET_LABEL6:(void)0;
1784 }
1785 }
1786 {
1787 { /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
1788 var10 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1789 if (unlikely(var10 == NULL)) {
1790 if(catchStack.cursor >= 0){
1791 longjmp(catchStack.envs[catchStack.cursor], 1);
1792 }
1793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1794 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
1795 fatal_exit(1);
1796 }
1797 var8 = var10;
1798 RET_LABEL9:(void)0;
1799 }
1800 }
1801 {
1802 { /* Inline ordered_tree$OrderedTree$roots (var8) on <var8:OrderedTree[Object]> */
1803 var13 = var8->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <var8:OrderedTree[Object]> */
1804 if (unlikely(var13 == NULL)) {
1805 if(catchStack.cursor >= 0){
1806 longjmp(catchStack.envs[catchStack.cursor], 1);
1807 }
1808 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
1809 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
1810 fatal_exit(1);
1811 }
1812 var11 = var13;
1813 RET_LABEL12:(void)0;
1814 }
1815 }
1816 {
1817 var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var11);
1818 }
1819 {
1820 core___core__Array___core__abstract_collection__SimpleCollection__add(var5, var14); /* Direct call array$Array$add on <var5:Array[Iterator[Object]]>*/
1821 }
1822 } else {
1823 }
1824 RET_LABEL:;
1825 }
1826 /* method ordered_tree$OrderedTreeIterator$is_ok for (self: OrderedTreeIterator[Object]): Bool */
1827 short int ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(val* self) {
1828 short int var /* : Bool */;
1829 val* var1 /* : Array[Iterator[Object]] */;
1830 val* var3 /* : Array[Iterator[Object]] */;
1831 short int var4 /* : Bool */;
1832 short int var5 /* : Bool */;
1833 {
1834 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
1835 var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1836 if (unlikely(var3 == NULL)) {
1837 if(catchStack.cursor >= 0){
1838 longjmp(catchStack.envs[catchStack.cursor], 1);
1839 }
1840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1841 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
1842 fatal_exit(1);
1843 }
1844 var1 = var3;
1845 RET_LABEL2:(void)0;
1846 }
1847 }
1848 {
1849 var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var1);
1850 }
1851 var5 = !var4;
1852 var = var5;
1853 goto RET_LABEL;
1854 RET_LABEL:;
1855 return var;
1856 }
1857 /* method ordered_tree$OrderedTreeIterator$item for (self: OrderedTreeIterator[Object]): Object */
1858 val* ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(val* self) {
1859 val* var /* : Object */;
1860 short int var1 /* : Bool */;
1861 val* var2 /* : Array[Iterator[Object]] */;
1862 val* var4 /* : Array[Iterator[Object]] */;
1863 val* var5 /* : nullable Object */;
1864 val* var6 /* : nullable Object */;
1865 {
1866 var1 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
1867 }
1868 if (unlikely(!var1)) {
1869 if(catchStack.cursor >= 0){
1870 longjmp(catchStack.envs[catchStack.cursor], 1);
1871 }
1872 PRINT_ERROR("Runtime error: %s", "Assert failed");
1873 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 309);
1874 fatal_exit(1);
1875 }
1876 {
1877 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
1878 var4 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1879 if (unlikely(var4 == NULL)) {
1880 if(catchStack.cursor >= 0){
1881 longjmp(catchStack.envs[catchStack.cursor], 1);
1882 }
1883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
1884 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
1885 fatal_exit(1);
1886 }
1887 var2 = var4;
1888 RET_LABEL3:(void)0;
1889 }
1890 }
1891 {
1892 var5 = core___core__SequenceRead___last(var2);
1893 }
1894 {
1895 var6 = ((val*(*)(val* self))((((long)var5&3)?class_info[((long)var5&3)]:var5->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var5); /* item on <var5:nullable Object(Iterator[Object])>*/
1896 }
1897 var = var6;
1898 goto RET_LABEL;
1899 RET_LABEL:;
1900 return var;
1901 }
1902 /* method ordered_tree$OrderedTreeIterator$next for (self: OrderedTreeIterator[Object]) */
1903 void ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__next(val* self) {
1904 short int var /* : Bool */;
1905 val* var1 /* : OrderedTree[Object] */;
1906 val* var3 /* : OrderedTree[Object] */;
1907 val* var4 /* : HashMap[Object, Array[Object]] */;
1908 val* var6 /* : HashMap[Object, Array[Object]] */;
1909 val* var7 /* : Object */;
1910 short int var8 /* : Bool */;
1911 val* var9 /* : Array[Iterator[Object]] */;
1912 val* var11 /* : Array[Iterator[Object]] */;
1913 val* var12 /* : OrderedTree[Object] */;
1914 val* var14 /* : OrderedTree[Object] */;
1915 val* var15 /* : HashMap[Object, Array[Object]] */;
1916 val* var17 /* : HashMap[Object, Array[Object]] */;
1917 val* var18 /* : Object */;
1918 val* var19 /* : nullable Object */;
1919 val* var20 /* : IndexedIterator[nullable Object] */;
1920 val* var21 /* : Array[Iterator[Object]] */;
1921 val* var23 /* : Array[Iterator[Object]] */;
1922 val* var24 /* : nullable Object */;
1923 short int var25 /* : Bool */;
1924 short int var26 /* : Bool */;
1925 short int var_ /* var : Bool */;
1926 val* var27 /* : Array[Iterator[Object]] */;
1927 val* var29 /* : Array[Iterator[Object]] */;
1928 val* var30 /* : nullable Object */;
1929 short int var31 /* : Bool */;
1930 short int var32 /* : Bool */;
1931 val* var33 /* : Array[Iterator[Object]] */;
1932 val* var35 /* : Array[Iterator[Object]] */;
1933 val* var36 /* : nullable Object */;
1934 short int var37 /* : Bool */;
1935 short int var38 /* : Bool */;
1936 short int var_39 /* var : Bool */;
1937 val* var40 /* : Array[Iterator[Object]] */;
1938 val* var42 /* : Array[Iterator[Object]] */;
1939 val* var43 /* : nullable Object */;
1940 short int var44 /* : Bool */;
1941 val* var45 /* : Array[Iterator[Object]] */;
1942 val* var47 /* : Array[Iterator[Object]] */;
1943 val* var48 /* : nullable Object */;
1944 {
1945 var = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
1946 }
1947 if (unlikely(!var)) {
1948 if(catchStack.cursor >= 0){
1949 longjmp(catchStack.envs[catchStack.cursor], 1);
1950 }
1951 PRINT_ERROR("Runtime error: %s", "Assert failed");
1952 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 314);
1953 fatal_exit(1);
1954 }
1955 {
1956 { /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
1957 var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
1958 if (unlikely(var3 == NULL)) {
1959 if(catchStack.cursor >= 0){
1960 longjmp(catchStack.envs[catchStack.cursor], 1);
1961 }
1962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
1963 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
1964 fatal_exit(1);
1965 }
1966 var1 = var3;
1967 RET_LABEL2:(void)0;
1968 }
1969 }
1970 {
1971 { /* Inline ordered_tree$OrderedTree$sub (var1) on <var1:OrderedTree[Object]> */
1972 var6 = var1->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var1:OrderedTree[Object]> */
1973 if (unlikely(var6 == NULL)) {
1974 if(catchStack.cursor >= 0){
1975 longjmp(catchStack.envs[catchStack.cursor], 1);
1976 }
1977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
1978 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
1979 fatal_exit(1);
1980 }
1981 var4 = var6;
1982 RET_LABEL5:(void)0;
1983 }
1984 }
1985 {
1986 var7 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(self);
1987 }
1988 {
1989 var8 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var4, var7);
1990 }
1991 if (var8){
1992 {
1993 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
1994 var11 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
1995 if (unlikely(var11 == NULL)) {
1996 if(catchStack.cursor >= 0){
1997 longjmp(catchStack.envs[catchStack.cursor], 1);
1998 }
1999 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2000 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2001 fatal_exit(1);
2002 }
2003 var9 = var11;
2004 RET_LABEL10:(void)0;
2005 }
2006 }
2007 {
2008 { /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
2009 var14 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
2010 if (unlikely(var14 == NULL)) {
2011 if(catchStack.cursor >= 0){
2012 longjmp(catchStack.envs[catchStack.cursor], 1);
2013 }
2014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
2015 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
2016 fatal_exit(1);
2017 }
2018 var12 = var14;
2019 RET_LABEL13:(void)0;
2020 }
2021 }
2022 {
2023 { /* Inline ordered_tree$OrderedTree$sub (var12) on <var12:OrderedTree[Object]> */
2024 var17 = var12->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var12:OrderedTree[Object]> */
2025 if (unlikely(var17 == NULL)) {
2026 if(catchStack.cursor >= 0){
2027 longjmp(catchStack.envs[catchStack.cursor], 1);
2028 }
2029 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
2030 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
2031 fatal_exit(1);
2032 }
2033 var15 = var17;
2034 RET_LABEL16:(void)0;
2035 }
2036 }
2037 {
2038 var18 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(self);
2039 }
2040 {
2041 var19 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var15, var18);
2042 }
2043 {
2044 var20 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var19);
2045 }
2046 {
2047 core___core__Array___core__abstract_collection__SimpleCollection__add(var9, var20); /* Direct call array$Array$add on <var9:Array[Iterator[Object]]>*/
2048 }
2049 } else {
2050 {
2051 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
2052 var23 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
2053 if (unlikely(var23 == NULL)) {
2054 if(catchStack.cursor >= 0){
2055 longjmp(catchStack.envs[catchStack.cursor], 1);
2056 }
2057 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2058 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2059 fatal_exit(1);
2060 }
2061 var21 = var23;
2062 RET_LABEL22:(void)0;
2063 }
2064 }
2065 {
2066 var24 = core___core__SequenceRead___last(var21);
2067 }
2068 {
2069 ((void(*)(val* self))((((long)var24&3)?class_info[((long)var24&3)]:var24->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var24); /* next on <var24:nullable Object(Iterator[Object])>*/
2070 }
2071 for(;;) {
2072 {
2073 var26 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
2074 }
2075 var_ = var26;
2076 if (var26){
2077 {
2078 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
2079 var29 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
2080 if (unlikely(var29 == NULL)) {
2081 if(catchStack.cursor >= 0){
2082 longjmp(catchStack.envs[catchStack.cursor], 1);
2083 }
2084 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2085 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2086 fatal_exit(1);
2087 }
2088 var27 = var29;
2089 RET_LABEL28:(void)0;
2090 }
2091 }
2092 {
2093 var30 = core___core__SequenceRead___last(var27);
2094 }
2095 {
2096 var31 = ((short int(*)(val* self))((((long)var30&3)?class_info[((long)var30&3)]:var30->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var30); /* is_ok on <var30:nullable Object(Iterator[Object])>*/
2097 }
2098 var32 = !var31;
2099 var25 = var32;
2100 } else {
2101 var25 = var_;
2102 }
2103 if (var25){
2104 {
2105 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
2106 var35 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
2107 if (unlikely(var35 == NULL)) {
2108 if(catchStack.cursor >= 0){
2109 longjmp(catchStack.envs[catchStack.cursor], 1);
2110 }
2111 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2112 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2113 fatal_exit(1);
2114 }
2115 var33 = var35;
2116 RET_LABEL34:(void)0;
2117 }
2118 }
2119 {
2120 var36 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var33);
2121 }
2122 {
2123 var38 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
2124 }
2125 var_39 = var38;
2126 if (var38){
2127 {
2128 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
2129 var42 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
2130 if (unlikely(var42 == NULL)) {
2131 if(catchStack.cursor >= 0){
2132 longjmp(catchStack.envs[catchStack.cursor], 1);
2133 }
2134 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2135 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2136 fatal_exit(1);
2137 }
2138 var40 = var42;
2139 RET_LABEL41:(void)0;
2140 }
2141 }
2142 {
2143 var43 = core___core__SequenceRead___last(var40);
2144 }
2145 {
2146 var44 = ((short int(*)(val* self))((((long)var43&3)?class_info[((long)var43&3)]:var43->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var43); /* is_ok on <var43:nullable Object(Iterator[Object])>*/
2147 }
2148 var37 = var44;
2149 } else {
2150 var37 = var_39;
2151 }
2152 if (var37){
2153 {
2154 { /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
2155 var47 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
2156 if (unlikely(var47 == NULL)) {
2157 if(catchStack.cursor >= 0){
2158 longjmp(catchStack.envs[catchStack.cursor], 1);
2159 }
2160 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
2161 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
2162 fatal_exit(1);
2163 }
2164 var45 = var47;
2165 RET_LABEL46:(void)0;
2166 }
2167 }
2168 {
2169 var48 = core___core__SequenceRead___last(var45);
2170 }
2171 {
2172 ((void(*)(val* self))((((long)var48&3)?class_info[((long)var48&3)]:var48->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var48); /* next on <var48:nullable Object(Iterator[Object])>*/
2173 }
2174 } else {
2175 }
2176 } else {
2177 goto BREAK_label;
2178 }
2179 }
2180 BREAK_label: (void)0;
2181 }
2182 RET_LABEL:;
2183 }
2184 /* method ordered_tree$OrderedTreeIterator$iterator for (self: OrderedTreeIterator[Object]): Iterator[Object] */
2185 val* ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__iterator(val* self) {
2186 val* var /* : Iterator[Object] */;
2187 val* var1 /* : OrderedTreeIterator[Object] */;
2188 val* var2 /* : OrderedTree[Object] */;
2189 val* var4 /* : OrderedTree[Object] */;
2190 var1 = NEW_ordered_tree__OrderedTreeIterator(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTreeIterator__ordered_tree__OrderedTreeIterator___35dE]);
2191 {
2192 { /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
2193 var4 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
2194 if (unlikely(var4 == NULL)) {
2195 if(catchStack.cursor >= 0){
2196 longjmp(catchStack.envs[catchStack.cursor], 1);
2197 }
2198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
2199 PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
2200 fatal_exit(1);
2201 }
2202 var2 = var4;
2203 RET_LABEL3:(void)0;
2204 }
2205 }
2206 {
2207 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_ordered_tree__OrderedTreeIterator__tree_61d]))(var1, var2); /* tree= on <var1:OrderedTreeIterator[Object]>*/
2208 }
2209 {
2210 ((void(*)(val* self))(var1->class->vft[COLOR_core__kernel__Object__init]))(var1); /* init on <var1:OrderedTreeIterator[Object]>*/
2211 }
2212 var = var1;
2213 goto RET_LABEL;
2214 RET_LABEL:;
2215 return var;
2216 }