+/* method ordered_tree$OrderedTree$== for (self: OrderedTree[Object], nullable Object): Bool */
+short int ordered_tree___ordered_tree__OrderedTree___core__kernel__Object___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var4 /* : Array[Object] */;
+val* var6 /* : Array[Object] */;
+val* var7 /* : Array[Object] */;
+val* var9 /* : Array[Object] */;
+short int var10 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var11 /* : HashMap[Object, Array[Object]] */;
+val* var13 /* : HashMap[Object, Array[Object]] */;
+val* var14 /* : HashMap[Object, Array[Object]] */;
+val* var16 /* : HashMap[Object, Array[Object]] */;
+short int var17 /* : Bool */;
+var_other = p0;
+/* <var_other:nullable Object> isa OrderedTree[Object] */
+cltype = type_ordered_tree__OrderedTree__core__Object.color;
+idtype = type_ordered_tree__OrderedTree__core__Object.id;
+if(var_other == NULL) {
+var1 = 0;
+} else {
+if(cltype >= (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->table_size) {
+var1 = 0;
+} else {
+var1 = (((long)var_other&3)?type_info[((long)var_other&3)]:var_other->type)->type_table[cltype] == idtype;
+}
+}
+var2 = !var1;
+if (var2){
+var = 0;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
+var6 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
+if (unlikely(var6 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTree$roots (var_other) on <var_other:nullable Object(OrderedTree[Object])> */
+var9 = var_other->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <var_other:nullable Object(OrderedTree[Object])> */
+if (unlikely(var9 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+var10 = core___core__Array___core__kernel__Object___61d_61d(var4, var7);
+}
+var_ = var10;
+if (var10){
+{
+{ /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
+var13 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
+if (unlikely(var13 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTree$sub (var_other) on <var_other:nullable Object(OrderedTree[Object])> */
+var16 = var_other->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var_other:nullable Object(OrderedTree[Object])> */
+if (unlikely(var16 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+var17 = core___core__MapRead___core__kernel__Object___61d_61d(var11, var14);
+}
+var3 = var17;
+} else {
+var3 = var_;
+}
+var = var3;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTree$hash for (self: OrderedTree[Object]): Int */
+long ordered_tree___ordered_tree__OrderedTree___core__kernel__Object__hash(val* self) {
+long var /* : Int */;
+val* var1 /* : Array[Object] */;
+val* var3 /* : Array[Object] */;
+long var4 /* : Int */;
+val* var5 /* : HashMap[Object, Array[Object]] */;
+val* var7 /* : HashMap[Object, Array[Object]] */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+short int var11 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var12 /* : Int */;
+{
+{ /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
+var3 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
+if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = core___core__SequenceRead___core__kernel__Object__hash(var1);
+}
+{
+{ /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
+var7 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
+if (unlikely(var7 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+var8 = core___core__MapRead___core__kernel__Object__hash(var5);
+}
+{
+{ /* Inline kernel$Int$+ (var4,var8) on <var4:Int> */
+/* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
+/* <var8:Int> isa OTHER */
+var11 = 1; /* easy <var8:Int> isa OTHER*/
+if (unlikely(!var11)) {
+var_class_name = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
+fatal_exit(1);
+}
+var12 = var4 + var8;
+var9 = var12;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+var = var9;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTree$clone for (self: OrderedTree[Object]): OrderedTree[Object] */
+val* ordered_tree___ordered_tree__OrderedTree___core__kernel__Cloneable__clone(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var1 /* : OrderedTree[Object] */;
+val* var_res /* var res: OrderedTree[Object] */;
+val* var3 /* : Array[Object] */;
+val* var5 /* : Array[Object] */;
+val* var6 /* : HashMap[Object, Array[Object]] */;
+val* var8 /* : HashMap[Object, Array[Object]] */;
+val* var_ /* var : HashMap[Object, Array[Object]] */;
+val* var9 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_10 /* var : MapIterator[Object, Array[Object]] */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
+val* var_p /* var p: Object */;
+val* var13 /* : nullable Object */;
+val* var_es /* var es: Array[Object] */;
+short int var15 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+var1 = NEW_ordered_tree__OrderedTree(self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree__ordered_tree__OrderedTree___35dE]);
+{
+{ /* Inline kernel$Object$init (var1) on <var1:OrderedTree[Object]> */
+RET_LABEL2:(void)0;
+}
+}
+var_res = var1;
+{
+{ /* Inline ordered_tree$OrderedTree$roots (self) on <self:OrderedTree[Object]> */
+var5 = self->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <self:OrderedTree[Object]> */
+if (unlikely(var5 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+ordered_tree___ordered_tree__OrderedTree___add_all(var_res, ((val*)NULL), var3); /* Direct call ordered_tree$OrderedTree$add_all on <var_res:OrderedTree[Object]>*/
+}
+{
+{ /* Inline ordered_tree$OrderedTree$sub (self) on <self:OrderedTree[Object]> */
+var8 = self->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <self:OrderedTree[Object]> */
+if (unlikely(var8 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+var_ = var6;
+{
+var9 = core___core__HashMap___core__abstract_collection__MapRead__iterator(var_);
+}
+var_10 = var9;
+for(;;) {
+{
+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]]>*/
+}
+if (var11){
+} else {
+goto BREAK_label;
+}
+{
+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]]>*/
+}
+var_p = var12;
+{
+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]]>*/
+}
+var_es = var13;
+{
+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]>*/
+}
+{
+((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]]>*/
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection$MapIterator$finish (var_10) on <var_10:MapIterator[Object, Array[Object]]> */
+RET_LABEL14:(void)0;
+}
+}
+/* <var_res:OrderedTree[Object]> isa SELF */
+type_struct = self->type->resolution_table->types[COLOR_core__kernel__Object__SELF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= var_res->type->table_size) {
+var15 = 0;
+} else {
+var15 = var_res->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var15)) {
+var_class_name = var_res == NULL ? "null" : var_res->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 288);
+fatal_exit(1);
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTreeIterator$tree for (self: OrderedTreeIterator[Object]): OrderedTree[Object] */
+val* ordered_tree___ordered_tree__OrderedTreeIterator___tree(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var1 /* : OrderedTree[Object] */;
+var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTreeIterator$tree= for (self: OrderedTreeIterator[Object], OrderedTree[Object]) */
+void ordered_tree___ordered_tree__OrderedTreeIterator___tree_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+/* Covariant cast for argument 0 (tree) <p0:OrderedTree[Object]> isa OrderedTree[E] */
+/* <p0:OrderedTree[Object]> isa OrderedTree[E] */
+type_struct = self->type->resolution_table->types[COLOR_ordered_tree__OrderedTree__ordered_tree__OrderedTreeIterator___35dE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OrderedTree[E]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val = p0; /* _tree on <self:OrderedTreeIterator[Object]> */
+RET_LABEL:;
+}
+/* method ordered_tree$OrderedTreeIterator$iterators for (self: OrderedTreeIterator[Object]): Array[Iterator[Object]] */
+val* ordered_tree___ordered_tree__OrderedTreeIterator___iterators(val* self) {
+val* var /* : Array[Iterator[Object]] */;
+val* var1 /* : Array[Iterator[Object]] */;
+var1 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTreeIterator$init for (self: OrderedTreeIterator[Object]) */
+void ordered_tree___ordered_tree__OrderedTreeIterator___core__kernel__Object__init(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var2 /* : OrderedTree[Object] */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var5 /* : Array[Iterator[Object]] */;
+val* var7 /* : Array[Iterator[Object]] */;
+val* var8 /* : OrderedTree[Object] */;
+val* var10 /* : OrderedTree[Object] */;
+val* var11 /* : Array[Object] */;
+val* var13 /* : Array[Object] */;
+val* var14 /* : IndexedIterator[nullable Object] */;
+{
+((void(*)(val* self))(self->class->vft[COLOR_ordered_tree___ordered_tree__OrderedTreeIterator___core__kernel__Object__init]))(self); /* init on <self:OrderedTreeIterator[Object]>*/
+}
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
+var2 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = ordered_tree___ordered_tree__OrderedTree___core__abstract_collection__Collection__is_empty(var);
+}
+var4 = !var3;
+if (var4){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var7 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var7 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
+var10 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var10 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTree$roots (var8) on <var8:OrderedTree[Object]> */
+var13 = var8->attrs[COLOR_ordered_tree__OrderedTree___roots].val; /* _roots on <var8:OrderedTree[Object]> */
+if (unlikely(var13 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 66);
+fatal_exit(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var11);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var5, var14); /* Direct call array$Array$add on <var5:Array[Iterator[Object]]>*/
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method ordered_tree$OrderedTreeIterator$is_ok for (self: OrderedTreeIterator[Object]): Bool */
+short int ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(val* self) {
+short int var /* : Bool */;
+val* var1 /* : Array[Iterator[Object]] */;
+val* var3 /* : Array[Iterator[Object]] */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var1);
+}
+var5 = !var4;
+var = var5;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTreeIterator$item for (self: OrderedTreeIterator[Object]): Object */
+val* ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(val* self) {
+val* var /* : Object */;
+short int var1 /* : Bool */;
+val* var2 /* : Array[Iterator[Object]] */;
+val* var4 /* : Array[Iterator[Object]] */;
+val* var5 /* : nullable Object */;
+val* var6 /* : nullable Object */;
+{
+var1 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
+}
+if (unlikely(!var1)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 309);
+fatal_exit(1);
+}
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var4 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var4 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+{
+var5 = core___core__SequenceRead___last(var2);
+}
+{
+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])>*/
+}
+var = var6;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method ordered_tree$OrderedTreeIterator$next for (self: OrderedTreeIterator[Object]) */
+void ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__next(val* self) {
+short int var /* : Bool */;
+val* var1 /* : OrderedTree[Object] */;
+val* var3 /* : OrderedTree[Object] */;
+val* var4 /* : HashMap[Object, Array[Object]] */;
+val* var6 /* : HashMap[Object, Array[Object]] */;
+val* var7 /* : Object */;
+short int var8 /* : Bool */;
+val* var9 /* : Array[Iterator[Object]] */;
+val* var11 /* : Array[Iterator[Object]] */;
+val* var12 /* : OrderedTree[Object] */;
+val* var14 /* : OrderedTree[Object] */;
+val* var15 /* : HashMap[Object, Array[Object]] */;
+val* var17 /* : HashMap[Object, Array[Object]] */;
+val* var18 /* : Object */;
+val* var19 /* : nullable Object */;
+val* var20 /* : IndexedIterator[nullable Object] */;
+val* var21 /* : Array[Iterator[Object]] */;
+val* var23 /* : Array[Iterator[Object]] */;
+val* var24 /* : nullable Object */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var27 /* : Array[Iterator[Object]] */;
+val* var29 /* : Array[Iterator[Object]] */;
+val* var30 /* : nullable Object */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : Array[Iterator[Object]] */;
+val* var35 /* : Array[Iterator[Object]] */;
+val* var36 /* : nullable Object */;
+short int var37 /* : Bool */;
+short int var38 /* : Bool */;
+short int var_39 /* var : Bool */;
+val* var40 /* : Array[Iterator[Object]] */;
+val* var42 /* : Array[Iterator[Object]] */;
+val* var43 /* : nullable Object */;
+short int var44 /* : Bool */;
+val* var45 /* : Array[Iterator[Object]] */;
+val* var47 /* : Array[Iterator[Object]] */;
+val* var48 /* : nullable Object */;
+{
+var = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
+}
+if (unlikely(!var)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 314);
+fatal_exit(1);
+}
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
+var3 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTree$sub (var1) on <var1:OrderedTree[Object]> */
+var6 = var1->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var1:OrderedTree[Object]> */
+if (unlikely(var6 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(self);
+}
+{
+var8 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var4, var7);
+}
+if (var8){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var11 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var11 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$tree (self) on <self:OrderedTreeIterator[Object]> */
+var14 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___tree].val; /* _tree on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var14 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tree");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 296);
+fatal_exit(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+{ /* Inline ordered_tree$OrderedTree$sub (var12) on <var12:OrderedTree[Object]> */
+var17 = var12->attrs[COLOR_ordered_tree__OrderedTree___sub].val; /* _sub on <var12:OrderedTree[Object]> */
+if (unlikely(var17 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _sub");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 69);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+var18 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__item(self);
+}
+{
+var19 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var15, var18);
+}
+{
+var20 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var19);
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add(var9, var20); /* Direct call array$Array$add on <var9:Array[Iterator[Object]]>*/
+}
+} else {
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var23 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var23 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+var24 = core___core__SequenceRead___last(var21);
+}
+{
+((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])>*/
+}
+for(;;) {
+{
+var26 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
+}
+var_ = var26;
+if (var26){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var29 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var29 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+{
+var30 = core___core__SequenceRead___last(var27);
+}
+{
+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])>*/
+}
+var32 = !var31;
+var25 = var32;
+} else {
+var25 = var_;
+}
+if (var25){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var35 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var35 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+{
+var36 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var33);
+}
+{
+var38 = ordered_tree___ordered_tree__OrderedTreeIterator___core__abstract_collection__Iterator__is_ok(self);
+}
+var_39 = var38;
+if (var38){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var42 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var42 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+var43 = core___core__SequenceRead___last(var40);
+}
+{
+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])>*/
+}
+var37 = var44;
+} else {
+var37 = var_39;
+}
+if (var37){
+{
+{ /* Inline ordered_tree$OrderedTreeIterator$iterators (self) on <self:OrderedTreeIterator[Object]> */
+var47 = self->attrs[COLOR_ordered_tree__OrderedTreeIterator___iterators].val; /* _iterators on <self:OrderedTreeIterator[Object]> */
+if (unlikely(var47 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _iterators");
+PRINT_ERROR(" (%s:%d)\n", FILE_ordered_tree, 298);
+fatal_exit(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+var48 = core___core__SequenceRead___last(var45);
+}
+{
+((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])>*/
+}
+} else {
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+}