+{ /* Inline poset$POSet$elements (self) on <self:POSet[nullable Object]> */
+var10 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
+if (unlikely(var10 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 86);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var8, var_a);
+}
+var_ae = var11;
+{
+{ /* Inline poset$POSet$elements (self) on <self:POSet[nullable Object]> */
+var14 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
+if (unlikely(var14 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 86);
+fatal_exit(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+var15 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var12, var_b);
+}
+var_be = var15;
+{
+{ /* Inline poset$POSetElement$tos (var_ae) on <var_ae:POSetElement[nullable Object]> */
+var18 = var_ae->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_ae:POSetElement[nullable Object]> */
+if (unlikely(var18 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 532);
+fatal_exit(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+var19 = core___core__HashSet___core__abstract_collection__Collection__length(var16);
+}
+{
+{ /* Inline poset$POSetElement$tos (var_be) on <var_be:POSetElement[nullable Object]> */
+var22 = var_be->attrs[COLOR_poset__POSetElement___tos].val; /* _tos on <var_be:POSetElement[nullable Object]> */
+if (unlikely(var22 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tos");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 532);
+fatal_exit(1);
+}
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+{
+var23 = core___core__HashSet___core__abstract_collection__Collection__length(var20);
+}
+{
+var24 = core___core__Int___Comparable___60d_61d_62d(var19, var23);
+}
+var_res = var24;
+{
+{ /* Inline kernel$Int$!= (var_res,0l) on <var_res:Int> */
+var27 = var_res == 0l;
+var28 = !var27;
+var25 = var28;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
+}
+}
+if (var25){
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline poset$POSet$elements (self) on <self:POSet[nullable Object]> */
+var31 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
+if (unlikely(var31 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 86);
+fatal_exit(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+{
+var32 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var29, var_a);
+}
+{
+{ /* Inline poset$POSetElement$count (var32) on <var32:nullable Object(POSetElement[nullable Object])> */
+var35 = var32->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var32:nullable Object(POSetElement[nullable Object])> */
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+{
+{ /* Inline poset$POSet$elements (self) on <self:POSet[nullable Object]> */
+var38 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
+if (unlikely(var38 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 86);
+fatal_exit(1);
+}
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+{
+var39 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var36, var_b);
+}
+{
+{ /* Inline poset$POSetElement$count (var39) on <var39:nullable Object(POSetElement[nullable Object])> */
+var42 = var39->attrs[COLOR_poset__POSetElement___count].l; /* _count on <var39:nullable Object(POSetElement[nullable Object])> */
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+var43 = core___core__Int___Comparable___60d_61d_62d(var33, var40);
+}
+var = var43;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method poset$POSet$linearize for (self: POSet[nullable Object], Collection[nullable Object]): Array[nullable Object] */
+val* poset___poset__POSet___linearize(val* self, val* p0) {
+val* var /* : Array[nullable Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_elements /* var elements: Collection[nullable Object] */;
+val* var2 /* : Array[nullable Object] */;
+val* var_lin /* var lin: Array[nullable Object] */;
+/* Covariant cast for argument 0 (elements) <p0:Collection[nullable Object]> isa Collection[E] */
+/* <p0:Collection[nullable Object]> isa Collection[E] */
+type_struct = self->type->resolution_table->types[COLOR_core__Collection__poset__POSet___35dE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var1 = 0;
+} else {
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var1)) {
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 374);
+fatal_exit(1);
+}
+var_elements = p0;
+{
+var2 = ((val*(*)(val* self))((((long)var_elements&3)?class_info[((long)var_elements&3)]:var_elements->class)->vft[COLOR_core__array__Collection__to_a]))(var_elements); /* to_a on <var_elements:Collection[nullable Object]>*/
+}
+var_lin = var2;
+{
+core___core__Comparator___sort(self, var_lin); /* Direct call sorter$Comparator$sort on <self:POSet[nullable Object]>*/
+}
+var = var_lin;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method poset$POSet$clone for (self: POSet[nullable Object]): POSet[nullable Object] */
+val* poset___poset__POSet___core__kernel__Cloneable__clone(val* self) {
+val* var /* : POSet[nullable Object] */;
+val* var1 /* : POSet[nullable Object] */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+{
+var1 = poset___poset__POSet___sub(self, self);
+}
+/* <var1:POSet[nullable 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 >= var1->type->table_size) {
+var2 = 0;
+} else {
+var2 = var1->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var2)) {
+var_class_name = var1 == NULL ? "null" : var1->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SELF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 388);
+fatal_exit(1);
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method poset$POSet$sub for (self: POSet[nullable Object], Collection[nullable Object]): POSet[nullable Object] */
+val* poset___poset__POSet___sub(val* self, val* p0) {
+val* var /* : POSet[nullable Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_elements /* var elements: Collection[nullable Object] */;
+val* var2 /* : POSet[nullable Object] */;
+val* var_res /* var res: POSet[nullable Object] */;
+val* var_ /* var : POSet[nullable Object] */;
+val* var4 /* : Iterator[nullable Object] */;
+val* var_5 /* var : Iterator[nullable Object] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_e /* var e: nullable Object */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+val* var11 /* : POSetElement[nullable Object] */;
+val* var_12 /* var : POSet[nullable Object] */;
+val* var13 /* : Iterator[nullable Object] */;
+val* var_14 /* var : Iterator[nullable Object] */;
+short int var15 /* : Bool */;
+val* var17 /* : nullable Object */;
+val* var_e18 /* var e: nullable Object */;
+val* var19 /* : POSetElement[nullable Object] */;
+val* var20 /* : Collection[nullable Object] */;
+val* var_21 /* var : Collection[nullable Object] */;
+val* var22 /* : Iterator[nullable Object] */;
+val* var_23 /* var : Iterator[nullable Object] */;
+short int var24 /* : Bool */;
+val* var26 /* : nullable Object */;
+val* var_f /* var f: nullable Object */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+/* Covariant cast for argument 0 (elements) <p0:Collection[nullable Object]> isa Collection[E] */
+/* <p0:Collection[nullable Object]> isa Collection[E] */
+type_struct = self->type->resolution_table->types[COLOR_core__Collection__poset__POSet___35dE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var1 = 0;
+} else {
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var1)) {
+var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Collection[E]", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 390);
+fatal_exit(1);
+}
+var_elements = p0;
+var2 = NEW_poset__POSet(self->type->resolution_table->types[COLOR_poset__POSet__poset__POSet___35dE]);
+{
+{ /* Inline kernel$Object$init (var2) on <var2:POSet[nullable Object]> */
+RET_LABEL3:(void)0;
+}
+}
+var_res = var2;
+var_ = self;
+{
+var4 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_);
+}
+var_5 = var4;
+for(;;) {
+{
+var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_5); /* is_ok on <var_5:Iterator[nullable Object]>*/
+}
+if (var6){
+} else {
+goto BREAK_label;
+}
+{
+var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_5); /* item on <var_5:Iterator[nullable Object]>*/
+}
+var_e = var7;
+{
+var8 = ((short int(*)(val* self, val* p0))((((long)var_elements&3)?class_info[((long)var_elements&3)]:var_elements->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var_elements, var_e); /* has on <var_elements:Collection[nullable Object]>*/
+}
+var9 = !var8;
+if (var9){
+goto BREAK_label10;
+} else {
+}
+{
+var11 = poset___poset__POSet___add_node(var_res, var_e);
+}
+BREAK_label10: (void)0;
+{
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_5); /* next on <var_5:Iterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_5); /* finish on <var_5:Iterator[nullable Object]>*/
+}
+var_12 = var_res;
+{
+var13 = poset___poset__POSet___core__abstract_collection__Collection__iterator(var_12);
+}
+var_14 = var13;
+for(;;) {
+{
+var15 = ((short int(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_14); /* is_ok on <var_14:Iterator[nullable Object]>*/
+}
+if (var15){
+} else {
+goto BREAK_label16;
+}
+{
+var17 = ((val*(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_14); /* item on <var_14:Iterator[nullable Object]>*/
+}
+var_e18 = var17;
+{
+var19 = poset___poset__POSet____91d_93d(self, var_e18);
+}
+{
+var20 = poset___poset__POSetElement___greaters(var19);
+}
+var_21 = var20;
+{
+var22 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_21); /* iterator on <var_21:Collection[nullable Object]>*/
+}
+var_23 = var22;
+for(;;) {
+{
+var24 = ((short int(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_23); /* is_ok on <var_23:Iterator[nullable Object]>*/
+}
+if (var24){
+} else {
+goto BREAK_label25;
+}
+{
+var26 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_23); /* item on <var_23:Iterator[nullable Object]>*/
+}
+var_f = var26;
+{
+var27 = ((short int(*)(val* self, val* p0))((((long)var_elements&3)?class_info[((long)var_elements&3)]:var_elements->class)->vft[COLOR_core__abstract_collection__Collection__has]))(var_elements, var_f); /* has on <var_elements:Collection[nullable Object]>*/
+}
+var28 = !var27;
+if (var28){
+goto BREAK_label29;
+} else {
+}
+{
+poset___poset__POSet___add_edge(var_res, var_e18, var_f); /* Direct call poset$POSet$add_edge on <var_res:POSet[nullable Object]>*/
+}
+BREAK_label29: (void)0;
+{
+((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_23); /* next on <var_23:Iterator[nullable Object]>*/
+}
+}
+BREAK_label25: (void)0;
+{
+((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_23); /* finish on <var_23:Iterator[nullable Object]>*/
+}
+{
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_14); /* next on <var_14:Iterator[nullable Object]>*/
+}
+}
+BREAK_label16: (void)0;
+{
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_14); /* finish on <var_14:Iterator[nullable Object]>*/
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method poset$POSet$== for (self: POSet[nullable Object], nullable Object): Bool */
+short int poset___poset__POSet___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 */;
+val* var3 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var5 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var6 /* : RemovableCollection[nullable Object] */;
+val* var7 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var9 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var10 /* : RemovableCollection[nullable Object] */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+val* var13 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var15 /* : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var_ /* var : HashMap[nullable Object, POSetElement[nullable Object]] */;
+val* var16 /* : MapIterator[nullable Object, nullable Object] */;
+val* var_17 /* var : MapIterator[nullable Object, POSetElement[nullable Object]] */;
+short int var18 /* : Bool */;
+val* var19 /* : nullable Object */;
+val* var_e /* var e: nullable Object */;
+val* var20 /* : nullable Object */;
+val* var_ee /* var ee: POSetElement[nullable Object] */;
+val* var21 /* : Collection[nullable Object] */;
+val* var22 /* : POSetElement[nullable Object] */;
+val* var23 /* : Collection[nullable Object] */;
+short int var24 /* : Bool */;
+val* var_other26 /* var other: nullable Object */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+long var30 /* : Int */;
+long var31 /* : Int */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+var_other = p0;
+/* <var_other:nullable Object> isa POSet[nullable Object] */
+cltype = type_poset__POSet__nullable__core__Object.color;
+idtype = type_poset__POSet__nullable__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 poset$POSet$elements (self) on <self:POSet[nullable Object]> */
+var5 = self->attrs[COLOR_poset__POSet___elements].val; /* _elements on <self:POSet[nullable Object]> */
+if (unlikely(var5 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _elements");
+PRINT_ERROR(" (%s:%d)\n", FILE_poset, 86);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+var6 = core___core__HashMap___core__abstract_collection__MapRead__keys(var3);
+}
+{
+{ /* Inline poset$POSet$elements (var_other) on <var_other:nullable Object(POSet[nullable Object])> */
+var9 = var_other->attrs[COLOR_poset__POSet___elements].val; /* _elements on <var_other:nullable Object(POSet[nullable Object])> */