regern c_src
[nit.git] / c_src / standard__kernel.sep.1.c
index 92ee991..14ead5e 100644 (file)
@@ -13,7 +13,7 @@ return var;
 short int standard___standard__Object___is_same_instance(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-var1 = self == p0 || (p0 != NULL && self->class == p0->class && ((self->class->box_kind == 1 && ((struct instance_standard__Int*)self)->value == ((struct instance_standard__Int*)p0)->value) || (self->class->box_kind == 2 && ((struct instance_standard__Bool*)self)->value == ((struct instance_standard__Bool*)p0)->value) || (self->class->box_kind == 3 && ((struct instance_standard__Char*)self)->value == ((struct instance_standard__Char*)p0)->value) || (self->class->box_kind == 4 && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value) || (self->class->box_kind == 5 && ((struct instance_standard__NativeString*)self)->value == ((struct instance_standard__NativeString*)p0)->value) || (self->class->box_kind == 6 && ((struct instance_standard__Pointer*)self)->value == ((struct instance_standard__Pointer*)p0)->value)));
+var1 = self == p0 || (p0 != NULL && (!((long)self&3)) && (!((long)p0&3)) && self->class == p0->class && ((self->class->box_kind == 3 && ((struct instance_standard__Byte*)self)->value == ((struct instance_standard__Byte*)p0)->value) || (self->class->box_kind == 5 && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value) || (self->class->box_kind == 6 && ((struct instance_standard__NativeString*)self)->value == ((struct instance_standard__NativeString*)p0)->value) || (self->class->box_kind == 7 && ((struct instance_standard__Pointer*)self)->value == ((struct instance_standard__Pointer*)p0)->value)));
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -28,7 +28,7 @@ short int var3 /* : Bool */;
 var_other = p0;
 {
 { /* Inline kernel#Object#is_same_instance (self,var_other) on <self:Object> */
-var3 = self == var_other || (var_other != NULL && self->class == var_other->class && ((self->class->box_kind == 1 && ((struct instance_standard__Int*)self)->value == ((struct instance_standard__Int*)var_other)->value) || (self->class->box_kind == 2 && ((struct instance_standard__Bool*)self)->value == ((struct instance_standard__Bool*)var_other)->value) || (self->class->box_kind == 3 && ((struct instance_standard__Char*)self)->value == ((struct instance_standard__Char*)var_other)->value) || (self->class->box_kind == 4 && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)var_other)->value) || (self->class->box_kind == 5 && ((struct instance_standard__NativeString*)self)->value == ((struct instance_standard__NativeString*)var_other)->value) || (self->class->box_kind == 6 && ((struct instance_standard__Pointer*)self)->value == ((struct instance_standard__Pointer*)var_other)->value)));
+var3 = self == var_other || (var_other != NULL && (!((long)self&3)) && (!((long)var_other&3)) && self->class == var_other->class && ((self->class->box_kind == 3 && ((struct instance_standard__Byte*)self)->value == ((struct instance_standard__Byte*)var_other)->value) || (self->class->box_kind == 5 && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)var_other)->value) || (self->class->box_kind == 6 && ((struct instance_standard__NativeString*)self)->value == ((struct instance_standard__NativeString*)var_other)->value) || (self->class->box_kind == 7 && ((struct instance_standard__Pointer*)self)->value == ((struct instance_standard__Pointer*)var_other)->value)));
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -47,7 +47,7 @@ short int var1 /* : Bool */;
 short int var2 /* : Bool */;
 var_other = p0;
 {
-var1 = ((short int (*)(val* self, val* p0))(self->class->vft[COLOR_standard__kernel__Object___61d_61d]))(self, var_other) /* == on <self:Object>*/;
+var1 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_standard__kernel__Object___61d_61d]))(self, var_other); /* == on <self:Object>*/
 }
 var2 = !var1;
 var = var2;
@@ -60,43 +60,36 @@ long standard___standard__Object___hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 long var2 /* : Int */;
-long var3 /* : Int */;
-short int var5 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var6 /* : Int */;
+long var5 /* : Int */;
 {
-var1 = ((long (*)(val* self))(self->class->vft[COLOR_standard__kernel__Object__object_id]))(self) /* object_id on <self:Object>*/;
+var1 = ((long(*)(val* self))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_standard__kernel__Object__object_id]))(self); /* object_id on <self:Object>*/
 }
-var2 = 8;
 {
-{ /* Inline kernel#Int#/ (var1,var2) on <var1:Int> */
-/* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
-/* <var2:Int> isa OTHER */
-var5 = 1; /* easy <var2:Int> isa OTHER*/
-if (unlikely(!var5)) {
+{ /* Inline kernel#Int#/ (var1,8l) on <var1:Int> */
+/* Covariant cast for argument 0 (i) <8l:Int> isa OTHER */
+/* <8l:Int> isa OTHER */
+var4 = 1; /* easy <8l:Int> isa OTHER*/
+if (unlikely(!var4)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
+fatal_exit(1);
 }
-var6 = var1 / var2;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = var1 / 8l;
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
 }
-var = var3;
+var = var2;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Object#exit for (self: Object, Int) */
-void standard___standard__Object___exit(val* self, long p0) {
-exit(p0);
-RET_LABEL:;
-}
 /* method kernel#Object#sys for (self: Object): Sys */
 val* standard___standard__Object___sys(val* self) {
 val* var /* : Sys */;
@@ -121,16 +114,18 @@ RET_LABEL:;
 /* method kernel#Sys#errno for (self: Sys): Int */
 long standard___standard__Sys___errno(val* self) {
 long var /* : Int */;
-long var1 /* : Int */;
-struct nitni_instance* var_for_c_0;
-var_for_c_0 = nit_alloc(sizeof(struct nitni_instance));
-var_for_c_0->value = self;
-var1 = kernel___Sys_errno___impl(var_for_c_0);
+long var1 /* : Int for extern */;
+var1 = sys_errno(self);
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
+/* method kernel#Sys#exit for (self: Sys, Int) */
+void standard___standard__Sys___exit(val* self, long p0) {
+exit(p0);
+RET_LABEL:;
+}
 /* method kernel#Comparable#<= for (self: Comparable, Comparable): Bool */
 short int standard___standard__Comparable____60d_61d(val* self, val* p0) {
 short int var /* : Bool */;
@@ -144,23 +139,23 @@ short int var2 /* : Bool */;
 short int var3 /* : Bool */;
 /* Covariant cast for argument 0 (other) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 139);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 133);
+fatal_exit(1);
 }
 var_other = p0;
 {
-var2 = ((short int (*)(val* self, val* p0))(var_other->class->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self) /* < on <var_other:Comparable>*/;
+var2 = ((short int(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self); /* < on <var_other:Comparable>*/
 }
 var3 = !var2;
 var = var3;
@@ -181,23 +176,23 @@ short int var2 /* : Bool */;
 short int var3 /* : Bool */;
 /* Covariant cast for argument 0 (other) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 143);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 137);
+fatal_exit(1);
 }
 var_other = p0;
 {
-var2 = ((short int (*)(val* self, val* p0))(self->class->vft[COLOR_standard__kernel__Comparable___60d]))(self, var_other) /* < on <self:Comparable>*/;
+var2 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_standard__kernel__Comparable___60d]))(self, var_other); /* < on <self:Comparable>*/
 }
 var3 = !var2;
 var = var3;
@@ -217,23 +212,23 @@ val* var_other /* var other: Comparable */;
 short int var2 /* : Bool */;
 /* Covariant cast for argument 0 (other) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 147);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 141);
+fatal_exit(1);
 }
 var_other = p0;
 {
-var2 = ((short int (*)(val* self, val* p0))(var_other->class->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self) /* < on <var_other:Comparable>*/;
+var2 = ((short int(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self); /* < on <var_other:Comparable>*/
 }
 var = var2;
 goto RET_LABEL;
@@ -251,54 +246,48 @@ const char* var_class_name;
 val* var_other /* var other: Comparable */;
 short int var2 /* : Bool */;
 long var3 /* : Int */;
-long var4 /* : Int */;
-long var6 /* : Int */;
-short int var7 /* : Bool */;
-long var8 /* : Int */;
-long var9 /* : Int */;
+long var5 /* : Int */;
+short int var6 /* : Bool */;
 /* Covariant cast for argument 0 (other) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var1 = 0;
 } else {
-var1 = p0->type->type_table[cltype] == idtype;
+var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var1)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 150);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 144);
+fatal_exit(1);
 }
 var_other = p0;
 {
-var2 = ((short int (*)(val* self, val* p0))(self->class->vft[COLOR_standard__kernel__Comparable___60d]))(self, var_other) /* < on <self:Comparable>*/;
+var2 = ((short int(*)(val* self, val* p0))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_standard__kernel__Comparable___60d]))(self, var_other); /* < on <self:Comparable>*/
 }
 if (var2){
-var3 = 1;
 {
-{ /* Inline kernel#Int#unary - (var3) on <var3:Int> */
-var6 = -var3;
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var5 = -1l;
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
 }
-var = var4;
+var = var3;
 goto RET_LABEL;
 } else {
 {
-var7 = ((short int (*)(val* self, val* p0))(var_other->class->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self) /* < on <var_other:Comparable>*/;
+var6 = ((short int(*)(val* self, val* p0))((((long)var_other&3)?class_info[((long)var_other&3)]:var_other->class)->vft[COLOR_standard__kernel__Comparable___60d]))(var_other, self); /* < on <var_other:Comparable>*/
 }
-if (var7){
-var8 = 1;
-var = var8;
+if (var6){
+var = 1l;
 goto RET_LABEL;
 } else {
-var9 = 0;
-var = var9;
+var = 0l;
 goto RET_LABEL;
 }
 }
@@ -322,7 +311,7 @@ long var1 /* : Int */;
 short int var3 /* : Bool */;
 long var4 /* : Int */;
 { /* Inline kernel#Bool#object_id (self) on <self:Object(Bool)> */
-var3 = ((struct instance_standard__Bool*)self)->value; /* autounbox from Object to Bool */;
+var3 = (short int)((long)(self)>>2);
 var4 = (long)var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -337,11 +326,8 @@ short int standard___standard__Bool___Object___61d_61d(short int self, val* p0)
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var2 /* : Bool */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Bool);
-if (var1) {
-var2 = ((struct instance_standard__Bool*)p0)->value; /* autounbox from nullable Object to Bool */;
-var1 = (var2 == self);
-}
+var2 = (short int)((long)(p0)>>2);
+var1 = (p0 != NULL) && (var2 == self);
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -353,7 +339,7 @@ short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 { /* Inline kernel#Bool#== (self,p0) on <self:Object(Bool)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Bool*)self)->value == ((struct instance_standard__Bool*)p0)->value);
+var3 = self == p0;
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -368,11 +354,8 @@ short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var2 /* : Bool */;
 short int var3 /* : Bool */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Bool);
-if (var1) {
-var2 = ((struct instance_standard__Bool*)p0)->value; /* autounbox from nullable Object to Bool */;
-var1 = (var2 == self);
-}
+var2 = (short int)((long)(p0)>>2);
+var1 = (p0 != NULL) && (var2 == self);
 var3 = !var1;
 var = var3;
 goto RET_LABEL;
@@ -386,7 +369,7 @@ short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 { /* Inline kernel#Bool#!= (self,p0) on <self:Object(Bool)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Bool*)self)->value == ((struct instance_standard__Bool*)p0)->value);
+var3 = self == p0;
 var4 = !var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -413,7 +396,7 @@ long VIRTUAL_standard___standard__Bool___Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 short int var2 /* : Bool */;
-var2 = ((struct instance_standard__Bool*)self)->value; /* autounbox from Object to Bool */;
+var2 = (short int)((long)(self)>>2);
 var1 = standard___standard__Bool___Object__hash(var2);
 var = var1;
 RET_LABEL:;
@@ -422,15 +405,11 @@ return var;
 /* method kernel#Bool#to_i for (self: Bool): Int */
 long standard___standard__Bool___to_i(short int self) {
 long var /* : Int */;
-long var1 /* : Int */;
-long var2 /* : Int */;
 if (self){
-var1 = 1;
-var = var1;
+var = 1l;
 goto RET_LABEL;
 } else {
-var2 = 0;
-var = var2;
+var = 0l;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -484,7 +463,7 @@ short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 { /* Inline kernel#Float#== (self,p0) on <self:Object(Float)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value);
+var3 = self == p0 || (p0 != NULL && (!((long)p0&3)) && self->class == p0->class && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value);
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -517,7 +496,7 @@ short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 { /* Inline kernel#Float#!= (self,p0) on <self:Object(Float)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value);
+var3 = self == p0 || (p0 != NULL && (!((long)p0&3)) && self->class == p0->class && ((struct instance_standard__Float*)self)->value == ((struct instance_standard__Float*)p0)->value);
 var4 = !var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -541,8 +520,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 321);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 340);
+fatal_exit(1);
 }
 var2 = self <= p0;
 var = var2;
@@ -565,19 +544,19 @@ short int var6 /* : Bool */;
 { /* Inline kernel#Float#<= (self,p0) on <self:Comparable(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 321);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 340);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Comparable to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Comparable to Float */;
@@ -604,8 +583,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 322);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 341);
+fatal_exit(1);
 }
 var2 = self < p0;
 var = var2;
@@ -628,19 +607,19 @@ short int var6 /* : Bool */;
 { /* Inline kernel#Float#< (self,p0) on <self:Comparable(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 322);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 341);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Comparable to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Comparable to Float */;
@@ -667,8 +646,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 323);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 342);
+fatal_exit(1);
 }
 var2 = self >= p0;
 var = var2;
@@ -691,19 +670,19 @@ short int var6 /* : Bool */;
 { /* Inline kernel#Float#>= (self,p0) on <self:Comparable(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 323);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 342);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Comparable to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Comparable to Float */;
@@ -730,8 +709,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 324);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 343);
+fatal_exit(1);
 }
 var2 = self > p0;
 var = var2;
@@ -754,19 +733,19 @@ short int var6 /* : Bool */;
 { /* Inline kernel#Float#> (self,p0) on <self:Comparable(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 324);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 343);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Comparable to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Comparable to Float */;
@@ -793,8 +772,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 326);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 345);
+fatal_exit(1);
 }
 var2 = self + p0;
 var = var2;
@@ -818,19 +797,19 @@ val* var7 /* : Numeric */;
 { /* Inline kernel#Float#+ (self,p0) on <self:Numeric(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 326);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 345);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Numeric to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Numeric to Float */;
@@ -887,8 +866,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 328);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 347);
+fatal_exit(1);
 }
 var2 = self - p0;
 var = var2;
@@ -912,19 +891,19 @@ val* var7 /* : Numeric */;
 { /* Inline kernel#Float#- (self,p0) on <self:Numeric(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 328);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 347);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Numeric to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Numeric to Float */;
@@ -952,8 +931,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 329);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 348);
+fatal_exit(1);
 }
 var2 = self * p0;
 var = var2;
@@ -977,19 +956,19 @@ val* var7 /* : Numeric */;
 { /* Inline kernel#Float#* (self,p0) on <self:Numeric(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 329);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 348);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Numeric to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Numeric to Float */;
@@ -1017,8 +996,8 @@ var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 349);
+fatal_exit(1);
 }
 var2 = self / p0;
 var = var2;
@@ -1042,19 +1021,19 @@ val* var7 /* : Numeric */;
 { /* Inline kernel#Float#/ (self,p0) on <self:Numeric(Float)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 330);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 349);
+fatal_exit(1);
 }
 var4 = ((struct instance_standard__Float*)self)->value; /* autounbox from Numeric to Float */;
 var5 = ((struct instance_standard__Float*)p0)->value; /* autounbox from Numeric to Float */;
@@ -1114,6 +1093,33 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* method kernel#Float#to_b for (self: Float): Byte */
+unsigned char standard___standard__Float___Numeric__to_b(double self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
+var1 = (unsigned char)self;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Float#to_b for (self: Numeric): Byte */
+unsigned char VIRTUAL_standard___standard__Float___Numeric__to_b(val* self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
+double var3 /* : Float */;
+unsigned char var4 /* : Byte */;
+{ /* Inline kernel#Float#to_b (self) on <self:Numeric(Float)> */
+var3 = ((struct instance_standard__Float*)self)->value; /* autounbox from Numeric to Float */;
+var4 = (unsigned char)var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
 /* method kernel#Float#<=> for (self: Float, Float): Int */
 long standard___standard__Float___Comparable___60d_61d_62d(double self, double p0) {
 long var /* : Int */;
@@ -1129,24 +1135,21 @@ int idtype6;
 const char* var_class_name7;
 short int var8 /* : Bool */;
 long var9 /* : Int */;
-long var10 /* : Int */;
-long var12 /* : Int */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
-const char* var_class_name18;
-short int var19 /* : Bool */;
-long var20 /* : Int */;
-long var21 /* : Int */;
+long var11 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+const char* var_class_name17;
+short int var18 /* : Bool */;
 /* Covariant cast for argument 0 (other) <p0:Float> isa OTHER */
 /* <p0:Float> isa OTHER */
 var1 = 1; /* easy <p0:Float> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 338);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 358);
+fatal_exit(1);
 }
 var_other = p0;
 {
@@ -1157,8 +1160,8 @@ var4 = 1; /* easy <var_other:Float> isa OTHER*/
 if (unlikely(!var4)) {
 var_class_name7 = type_standard__Float.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 322);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 341);
+fatal_exit(1);
 }
 var8 = self < var_other;
 var2 = var8;
@@ -1167,42 +1170,39 @@ RET_LABEL3:(void)0;
 }
 }
 if (var2){
-var9 = 1;
 {
-{ /* Inline kernel#Int#unary - (var9) on <var9:Int> */
-var12 = -var9;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var11 = -1l;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
 }
-var = var10;
+var = var9;
 goto RET_LABEL;
 } else {
 {
 { /* Inline kernel#Float#< (var_other,self) on <var_other:Float> */
 /* Covariant cast for argument 0 (i) <self:Float> isa OTHER */
 /* <self:Float> isa OTHER */
-var15 = 1; /* easy <self:Float> isa OTHER*/
-if (unlikely(!var15)) {
-var_class_name18 = type_standard__Float.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 322);
-show_backtrace(1);
+var14 = 1; /* easy <self:Float> isa OTHER*/
+if (unlikely(!var14)) {
+var_class_name17 = type_standard__Float.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 341);
+fatal_exit(1);
 }
-var19 = var_other < self;
-var13 = var19;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var18 = var_other < self;
+var12 = var18;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-if (var13){
-var20 = 1;
-var = var20;
+if (var12){
+var = 1l;
 goto RET_LABEL;
 } else {
-var21 = 0;
-var = var21;
+var = 0l;
 goto RET_LABEL;
 }
 }
@@ -1222,68 +1222,82 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#successor for (self: Int, Int): Int */
-long standard___standard__Int___Discrete__successor(long self, long p0) {
-long var /* : Int */;
+/* method kernel#Byte#successor for (self: Byte, Int): Byte */
+unsigned char standard___standard__Byte___Discrete__successor(unsigned char self, long p0) {
+unsigned char var /* : Byte */;
 long var_i /* var i: Int */;
-long var1 /* : Int */;
-short int var3 /* : Bool */;
+unsigned char var1 /* : Byte */;
+unsigned char var3 /* : Byte */;
+unsigned char var4 /* : Byte */;
+short int var6 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var4 /* : Int */;
+unsigned char var7 /* : Byte */;
 var_i = p0;
 {
-{ /* Inline kernel#Int#+ (self,var_i) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
-/* <var_i:Int> isa OTHER */
-var3 = 1; /* easy <var_i:Int> isa OTHER*/
-if (unlikely(!var3)) {
-var_class_name = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var4 = self + var_i;
-var1 = var4;
+{ /* Inline kernel#Int#to_b (var_i) on <var_i:Int> */
+var3 = (unsigned char)var_i;
+var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
 }
-var = var1;
+{
+{ /* Inline kernel#Byte#+ (self,var1) on <self:Byte> */
+/* Covariant cast for argument 0 (i) <var1:Byte> isa OTHER */
+/* <var1:Byte> isa OTHER */
+var6 = 1; /* easy <var1:Byte> isa OTHER*/
+if (unlikely(!var6)) {
+var_class_name = type_standard__Byte.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 433);
+fatal_exit(1);
+}
+var7 = self + var1;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+var = var4;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#successor for (self: Discrete, Int): Discrete */
-val* VIRTUAL_standard___standard__Int___Discrete__successor(val* self, long p0) {
+/* method kernel#Byte#successor for (self: Discrete, Int): Discrete */
+val* VIRTUAL_standard___standard__Byte___Discrete__successor(val* self, long p0) {
 val* var /* : Discrete */;
-long var1 /* : Int */;
-long var2 /* : Int */;
+unsigned char var1 /* : Byte */;
+unsigned char var2 /* : Byte */;
 val* var3 /* : Discrete */;
-var2 = ((struct instance_standard__Int*)self)->value; /* autounbox from Discrete to Int */;
-var1 = standard___standard__Int___Discrete__successor(var2, p0);
-var3 = BOX_standard__Int(var1); /* autobox from Int to Discrete */
+var2 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Discrete to Byte */;
+var1 = standard___standard__Byte___Discrete__successor(var2, p0);
+var3 = BOX_standard__Byte(var1); /* autobox from Byte to Discrete */
 var = var3;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#object_id for (self: Int): Int */
-long standard___standard__Int___Object__object_id(long self) {
+/* method kernel#Byte#object_id for (self: Byte): Int */
+long standard___standard__Byte___Object__object_id(unsigned char self) {
 long var /* : Int */;
-var = self;
+long var1 /* : Int */;
+var1 = (long)self;
+var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#object_id for (self: Object): Int */
-long VIRTUAL_standard___standard__Int___Object__object_id(val* self) {
+/* method kernel#Byte#object_id for (self: Object): Int */
+long VIRTUAL_standard___standard__Byte___Object__object_id(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-long var3 /* : Int */;
-{ /* Inline kernel#Int#object_id (self) on <self:Object(Int)> */
-var3 = ((struct instance_standard__Int*)self)->value; /* autounbox from Object to Int */;
-var1 = var3;
+unsigned char var3 /* : Byte */;
+long var4 /* : Int */;
+{ /* Inline kernel#Byte#object_id (self) on <self:Object(Byte)> */
+var3 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Object to Byte */;
+var4 = (long)var3;
+var1 = var4;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
@@ -1291,33 +1305,43 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#hash for (self: Int): Int */
-long standard___standard__Int___Object__hash(long self) {
+/* method kernel#Byte#hash for (self: Byte): Int */
+long standard___standard__Byte___Object__hash(unsigned char self) {
 long var /* : Int */;
-var = self;
+long var1 /* : Int */;
+long var3 /* : Int */;
+{
+{ /* Inline kernel#Byte#to_i (self) on <self:Byte> */
+var3 = (long)self;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#hash for (self: Object): Int */
-long VIRTUAL_standard___standard__Int___Object__hash(val* self) {
+/* method kernel#Byte#hash for (self: Object): Int */
+long VIRTUAL_standard___standard__Byte___Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-long var2 /* : Int */;
-var2 = ((struct instance_standard__Int*)self)->value; /* autounbox from Object to Int */;
-var1 = standard___standard__Int___Object__hash(var2);
+unsigned char var2 /* : Byte */;
+var2 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Object to Byte */;
+var1 = standard___standard__Byte___Object__hash(var2);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#== for (self: Int, nullable Object): Bool */
-short int standard___standard__Int___Object___61d_61d(long self, val* p0) {
+/* method kernel#Byte#== for (self: Byte, nullable Object): Bool */
+short int standard___standard__Byte___Object___61d_61d(unsigned char self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-long var2 /* : Int */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Int);
+unsigned char var2 /* : Byte */;
+var1 = (p0 != NULL) && (p0->class == &class_standard__Byte);
 if (var1) {
-var2 = ((struct instance_standard__Int*)p0)->value; /* autounbox from nullable Object to Int */;
+var2 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from nullable Object to Byte */;
 var1 = (var2 == self);
 }
 var = var1;
@@ -1325,13 +1349,13 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#== for (self: Object, nullable Object): Bool */
-short int VIRTUAL_standard___standard__Int___Object___61d_61d(val* self, val* p0) {
+/* method kernel#Byte#== for (self: Object, nullable Object): Bool */
+short int VIRTUAL_standard___standard__Byte___Object___61d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
-{ /* Inline kernel#Int#== (self,p0) on <self:Object(Int)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Int*)self)->value == ((struct instance_standard__Int*)p0)->value);
+{ /* Inline kernel#Byte#== (self,p0) on <self:Object(Byte)> */
+var3 = self == p0 || (p0 != NULL && (!((long)p0&3)) && self->class == p0->class && ((struct instance_standard__Byte*)self)->value == ((struct instance_standard__Byte*)p0)->value);
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -1340,15 +1364,15 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#!= for (self: Int, nullable Object): Bool */
-short int standard___standard__Int___Object___33d_61d(long self, val* p0) {
+/* method kernel#Byte#!= for (self: Byte, nullable Object): Bool */
+short int standard___standard__Byte___Object___33d_61d(unsigned char self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-long var2 /* : Int */;
+unsigned char var2 /* : Byte */;
 short int var3 /* : Bool */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Int);
+var1 = (p0 != NULL) && (p0->class == &class_standard__Byte);
 if (var1) {
-var2 = ((struct instance_standard__Int*)p0)->value; /* autounbox from nullable Object to Int */;
+var2 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from nullable Object to Byte */;
 var1 = (var2 == self);
 }
 var3 = !var1;
@@ -1357,14 +1381,14 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#!= for (self: Object, nullable Object): Bool */
-short int VIRTUAL_standard___standard__Int___Object___33d_61d(val* self, val* p0) {
+/* method kernel#Byte#!= for (self: Object, nullable Object): Bool */
+short int VIRTUAL_standard___standard__Byte___Object___33d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
-{ /* Inline kernel#Int#!= (self,p0) on <self:Object(Int)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Int*)self)->value == ((struct instance_standard__Int*)p0)->value);
+{ /* Inline kernel#Byte#!= (self,p0) on <self:Object(Byte)> */
+var3 = self == p0 || (p0 != NULL && (!((long)p0&3)) && self->class == p0->class && ((struct instance_standard__Byte*)self)->value == ((struct instance_standard__Byte*)p0)->value);
 var4 = !var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -1374,22 +1398,22 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#<= for (self: Int, Int): Bool */
-short int standard___standard__Int___Comparable___60d_61d(long self, long p0) {
+/* method kernel#Byte#<= for (self: Byte, Byte): Bool */
+short int standard___standard__Byte___Comparable___60d_61d(unsigned char self, unsigned char p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
 short int var2 /* : Bool */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 429);
+fatal_exit(1);
 }
 var2 = self <= p0;
 var = var2;
@@ -1397,8 +1421,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#<= for (self: Comparable, Comparable): Bool */
-short int VIRTUAL_standard___standard__Int___Comparable___60d_61d(val* self, val* p0) {
+/* method kernel#Byte#<= for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Byte___Comparable___60d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
@@ -1406,28 +1430,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
 short int var6 /* : Bool */;
-{ /* Inline kernel#Int#<= (self,p0) on <self:Comparable(Int)> */
+{ /* Inline kernel#Byte#<= (self,p0) on <self:Comparable(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 429);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Comparable to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Comparable to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Comparable to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Comparable to Byte */;
 var6 = var4 <= var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -1437,22 +1461,22 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#< for (self: Int, Int): Bool */
-short int standard___standard__Int___Comparable___60d(long self, long p0) {
+/* method kernel#Byte#< for (self: Byte, Byte): Bool */
+short int standard___standard__Byte___Comparable___60d(unsigned char self, unsigned char p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
 short int var2 /* : Bool */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 430);
+fatal_exit(1);
 }
 var2 = self < p0;
 var = var2;
@@ -1460,8 +1484,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#< for (self: Comparable, Comparable): Bool */
-short int VIRTUAL_standard___standard__Int___Comparable___60d(val* self, val* p0) {
+/* method kernel#Byte#< for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Byte___Comparable___60d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
@@ -1469,28 +1493,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
 short int var6 /* : Bool */;
-{ /* Inline kernel#Int#< (self,p0) on <self:Comparable(Int)> */
+{ /* Inline kernel#Byte#< (self,p0) on <self:Comparable(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 430);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Comparable to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Comparable to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Comparable to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Comparable to Byte */;
 var6 = var4 < var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -1500,22 +1524,22 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#>= for (self: Int, Int): Bool */
-short int standard___standard__Int___Comparable___62d_61d(long self, long p0) {
+/* method kernel#Byte#>= for (self: Byte, Byte): Bool */
+short int standard___standard__Byte___Comparable___62d_61d(unsigned char self, unsigned char p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
 short int var2 /* : Bool */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 431);
+fatal_exit(1);
 }
 var2 = self >= p0;
 var = var2;
@@ -1523,8 +1547,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#>= for (self: Comparable, Comparable): Bool */
-short int VIRTUAL_standard___standard__Int___Comparable___62d_61d(val* self, val* p0) {
+/* method kernel#Byte#>= for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Byte___Comparable___62d_61d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
@@ -1532,28 +1556,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
 short int var6 /* : Bool */;
-{ /* Inline kernel#Int#>= (self,p0) on <self:Comparable(Int)> */
+{ /* Inline kernel#Byte#>= (self,p0) on <self:Comparable(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 431);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Comparable to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Comparable to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Comparable to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Comparable to Byte */;
 var6 = var4 >= var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -1563,22 +1587,22 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#> for (self: Int, Int): Bool */
-short int standard___standard__Int___Comparable___62d(long self, long p0) {
+/* method kernel#Byte#> for (self: Byte, Byte): Bool */
+short int standard___standard__Byte___Comparable___62d(unsigned char self, unsigned char p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
 short int var2 /* : Bool */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 432);
+fatal_exit(1);
 }
 var2 = self > p0;
 var = var2;
@@ -1586,8 +1610,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#> for (self: Comparable, Comparable): Bool */
-short int VIRTUAL_standard___standard__Int___Comparable___62d(val* self, val* p0) {
+/* method kernel#Byte#> for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Byte___Comparable___62d(val* self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
@@ -1595,28 +1619,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
 short int var6 /* : Bool */;
-{ /* Inline kernel#Int#> (self,p0) on <self:Comparable(Int)> */
+{ /* Inline kernel#Byte#> (self,p0) on <self:Comparable(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 432);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Comparable to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Comparable to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Comparable to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Comparable to Byte */;
 var6 = var4 > var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -1626,22 +1650,22 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#+ for (self: Int, Int): Int */
-long standard___standard__Int___Numeric___43d(long self, long p0) {
-long var /* : Int */;
+/* method kernel#Byte#+ for (self: Byte, Byte): Byte */
+unsigned char standard___standard__Byte___Numeric___43d(unsigned char self, unsigned char p0) {
+unsigned char var /* : Byte */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var2 /* : Int */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+unsigned char var2 /* : Byte */;
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 433);
+fatal_exit(1);
 }
 var2 = self + p0;
 var = var2;
@@ -1649,93 +1673,93 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#+ for (self: Numeric, Numeric): Numeric */
-val* VIRTUAL_standard___standard__Int___Numeric___43d(val* self, val* p0) {
+/* method kernel#Byte#+ for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Byte___Numeric___43d(val* self, val* p0) {
 val* var /* : Numeric */;
-long var1 /* : Int */;
+unsigned char var1 /* : Byte */;
 short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
-long var6 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
+unsigned char var6 /* : Byte */;
 val* var7 /* : Numeric */;
-{ /* Inline kernel#Int#+ (self,p0) on <self:Numeric(Int)> */
+{ /* Inline kernel#Byte#+ (self,p0) on <self:Numeric(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 433);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Numeric to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Numeric to Byte */;
 var6 = var4 + var5;
 var1 = var6;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var7 = BOX_standard__Int(var1); /* autobox from Int to Numeric */
+var7 = BOX_standard__Byte(var1); /* autobox from Byte to Numeric */
 var = var7;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#unary - for (self: Int): Int */
-long standard___standard__Int___Numeric__unary_32d_45d(long self) {
-long var /* : Int */;
-long var1 /* : Int */;
+/* method kernel#Byte#unary - for (self: Byte): Byte */
+unsigned char standard___standard__Byte___Numeric__unary_32d_45d(unsigned char self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
 var1 = -self;
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#unary - for (self: Numeric): Numeric */
-val* VIRTUAL_standard___standard__Int___Numeric__unary_32d_45d(val* self) {
+/* method kernel#Byte#unary - for (self: Numeric): Numeric */
+val* VIRTUAL_standard___standard__Byte___Numeric__unary_32d_45d(val* self) {
 val* var /* : Numeric */;
-long var1 /* : Int */;
-long var3 /* : Int */;
-long var4 /* : Int */;
+unsigned char var1 /* : Byte */;
+unsigned char var3 /* : Byte */;
+unsigned char var4 /* : Byte */;
 val* var5 /* : Numeric */;
-{ /* Inline kernel#Int#unary - (self) on <self:Numeric(Int)> */
-var3 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
+{ /* Inline kernel#Byte#unary - (self) on <self:Numeric(Byte)> */
+var3 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
 var4 = -var3;
 var1 = var4;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var5 = BOX_standard__Int(var1); /* autobox from Int to Numeric */
+var5 = BOX_standard__Byte(var1); /* autobox from Byte to Numeric */
 var = var5;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#- for (self: Int, Int): Int */
-long standard___standard__Int___Numeric___45d(long self, long p0) {
-long var /* : Int */;
+/* method kernel#Byte#- for (self: Byte, Byte): Byte */
+unsigned char standard___standard__Byte___Numeric___45d(unsigned char self, unsigned char p0) {
+unsigned char var /* : Byte */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var2 /* : Int */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+unsigned char var2 /* : Byte */;
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 440);
+fatal_exit(1);
 }
 var2 = self - p0;
 var = var2;
@@ -1743,64 +1767,64 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#- for (self: Numeric, Numeric): Numeric */
-val* VIRTUAL_standard___standard__Int___Numeric___45d(val* self, val* p0) {
+/* method kernel#Byte#- for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Byte___Numeric___45d(val* self, val* p0) {
 val* var /* : Numeric */;
-long var1 /* : Int */;
+unsigned char var1 /* : Byte */;
 short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
-long var6 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
+unsigned char var6 /* : Byte */;
 val* var7 /* : Numeric */;
-{ /* Inline kernel#Int#- (self,p0) on <self:Numeric(Int)> */
+{ /* Inline kernel#Byte#- (self,p0) on <self:Numeric(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 440);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Numeric to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Numeric to Byte */;
 var6 = var4 - var5;
 var1 = var6;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var7 = BOX_standard__Int(var1); /* autobox from Int to Numeric */
+var7 = BOX_standard__Byte(var1); /* autobox from Byte to Numeric */
 var = var7;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#* for (self: Int, Int): Int */
-long standard___standard__Int___Numeric___42d(long self, long p0) {
-long var /* : Int */;
+/* method kernel#Byte#* for (self: Byte, Byte): Byte */
+unsigned char standard___standard__Byte___Numeric___42d(unsigned char self, unsigned char p0) {
+unsigned char var /* : Byte */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var2 /* : Int */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+unsigned char var2 /* : Byte */;
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 417);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 441);
+fatal_exit(1);
 }
 var2 = self * p0;
 var = var2;
@@ -1808,64 +1832,64 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#* for (self: Numeric, Numeric): Numeric */
-val* VIRTUAL_standard___standard__Int___Numeric___42d(val* self, val* p0) {
+/* method kernel#Byte#* for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Byte___Numeric___42d(val* self, val* p0) {
 val* var /* : Numeric */;
-long var1 /* : Int */;
+unsigned char var1 /* : Byte */;
 short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
-long var6 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
+unsigned char var6 /* : Byte */;
 val* var7 /* : Numeric */;
-{ /* Inline kernel#Int#* (self,p0) on <self:Numeric(Int)> */
+{ /* Inline kernel#Byte#* (self,p0) on <self:Numeric(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 417);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 441);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Numeric to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Numeric to Byte */;
 var6 = var4 * var5;
 var1 = var6;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var7 = BOX_standard__Int(var1); /* autobox from Int to Numeric */
+var7 = BOX_standard__Byte(var1); /* autobox from Byte to Numeric */
 var = var7;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#/ for (self: Int, Int): Int */
-long standard___standard__Int___Numeric___47d(long self, long p0) {
-long var /* : Int */;
+/* method kernel#Byte#/ for (self: Byte, Byte): Byte */
+unsigned char standard___standard__Byte___Numeric___47d(unsigned char self, unsigned char p0) {
+unsigned char var /* : Byte */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var2 /* : Int */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+unsigned char var2 /* : Byte */;
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 442);
+fatal_exit(1);
 }
 var2 = self / p0;
 var = var2;
@@ -1873,89 +1897,77 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#/ for (self: Numeric, Numeric): Numeric */
-val* VIRTUAL_standard___standard__Int___Numeric___47d(val* self, val* p0) {
+/* method kernel#Byte#/ for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Byte___Numeric___47d(val* self, val* p0) {
 val* var /* : Numeric */;
-long var1 /* : Int */;
+unsigned char var1 /* : Byte */;
 short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-long var4 /* : Int */;
-long var5 /* : Int */;
-long var6 /* : Int */;
+unsigned char var4 /* : Byte */;
+unsigned char var5 /* : Byte */;
+unsigned char var6 /* : Byte */;
 val* var7 /* : Numeric */;
-{ /* Inline kernel#Int#/ (self,p0) on <self:Numeric(Int)> */
+{ /* Inline kernel#Byte#/ (self,p0) on <self:Numeric(Byte)> */
 /* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
 /* <p0:Numeric> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 442);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
-var5 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Numeric to Int */;
+var4 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var5 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Numeric to Byte */;
 var6 = var4 / var5;
 var1 = var6;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var7 = BOX_standard__Int(var1); /* autobox from Int to Numeric */
+var7 = BOX_standard__Byte(var1); /* autobox from Byte to Numeric */
 var = var7;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#% for (self: Int, Int): Int */
-long standard___standard__Int____37d(long self, long p0) {
+/* method kernel#Byte#to_i for (self: Byte): Int */
+long standard___standard__Byte___Numeric__to_i(unsigned char self) {
 long var /* : Int */;
 long var1 /* : Int */;
-var1 = self % p0;
+var1 = (long)self;
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#lshift for (self: Int, Int): Int */
-long standard___standard__Int___lshift(long self, long p0) {
+/* method kernel#Byte#to_i for (self: Numeric): Int */
+long VIRTUAL_standard___standard__Byte___Numeric__to_i(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-var1 = self << p0;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method kernel#Int#to_i for (self: Int): Int */
-long standard___standard__Int___Numeric__to_i(long self) {
-long var /* : Int */;
-var = self;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
+unsigned char var3 /* : Byte */;
+long var4 /* : Int */;
+{ /* Inline kernel#Byte#to_i (self) on <self:Numeric(Byte)> */
+var3 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var4 = (long)var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
-/* method kernel#Int#to_i for (self: Numeric): Int */
-long VIRTUAL_standard___standard__Int___Numeric__to_i(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-long var2 /* : Int */;
-var2 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
-var1 = standard___standard__Int___Numeric__to_i(var2);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#to_f for (self: Int): Float */
-double standard___standard__Int___Numeric__to_f(long self) {
+/* method kernel#Byte#to_f for (self: Byte): Float */
+double standard___standard__Byte___Numeric__to_f(unsigned char self) {
 double var /* : Float */;
 double var1 /* : Float */;
 var1 = (double)self;
@@ -1964,14 +1976,14 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#to_f for (self: Numeric): Float */
-double VIRTUAL_standard___standard__Int___Numeric__to_f(val* self) {
+/* method kernel#Byte#to_f for (self: Numeric): Float */
+double VIRTUAL_standard___standard__Byte___Numeric__to_f(val* self) {
 double var /* : Float */;
 double var1 /* : Float */;
-long var3 /* : Int */;
+unsigned char var3 /* : Byte */;
 double var4 /* : Float */;
-{ /* Inline kernel#Int#to_f (self) on <self:Numeric(Int)> */
-var3 = ((struct instance_standard__Int*)self)->value; /* autounbox from Numeric to Int */;
+{ /* Inline kernel#Byte#to_f (self) on <self:Numeric(Byte)> */
+var3 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
 var4 = (double)var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -1981,50 +1993,61 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#distance for (self: Int, Int): Int */
-long standard___standard__Int___Discrete__distance(long self, long p0) {
+/* method kernel#Byte#to_b for (self: Byte): Byte */
+unsigned char standard___standard__Byte___Numeric__to_b(unsigned char self) {
+unsigned char var /* : Byte */;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Byte#to_b for (self: Numeric): Byte */
+unsigned char VIRTUAL_standard___standard__Byte___Numeric__to_b(val* self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
+unsigned char var2 /* : Byte */;
+var2 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Numeric to Byte */;
+var1 = standard___standard__Byte___Numeric__to_b(var2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Byte#distance for (self: Byte, Byte): Int */
+long standard___standard__Byte___Discrete__distance(unsigned char self, unsigned char p0) {
 long var /* : Int */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var_i /* var i: Int */;
-long var2 /* : Int */;
+unsigned char var_i /* var i: Byte */;
+unsigned char var2 /* : Byte */;
 short int var4 /* : Bool */;
 int cltype5;
 int idtype6;
 const char* var_class_name7;
-long var8 /* : Int */;
-long var_d /* var d: Int */;
+unsigned char var8 /* : Byte */;
 long var9 /* : Int */;
-short int var10 /* : Bool */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
-const char* var_class_name15;
-short int var16 /* : Bool */;
-long var17 /* : Int */;
-long var19 /* : Int */;
-/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+long var11 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 444);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 475);
+fatal_exit(1);
 }
 var_i = p0;
 {
-{ /* Inline kernel#Int#- (self,var_i) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
-/* <var_i:Int> isa OTHER */
-var4 = 1; /* easy <var_i:Int> isa OTHER*/
+{ /* Inline kernel#Byte#- (self,var_i) on <self:Byte> */
+/* Covariant cast for argument 0 (i) <var_i:Byte> isa OTHER */
+/* <var_i:Byte> isa OTHER */
+var4 = 1; /* easy <var_i:Byte> isa OTHER*/
 if (unlikely(!var4)) {
-var_class_name7 = type_standard__Int.name;
+var_class_name7 = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 440);
+fatal_exit(1);
 }
 var8 = self - var_i;
 var2 = var8;
@@ -2032,64 +2055,40 @@ goto RET_LABEL3;
 RET_LABEL3:(void)0;
 }
 }
-var_d = var2;
-var9 = 0;
-{
-{ /* Inline kernel#Int#>= (var_d,var9) on <var_d:Int> */
-/* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
-/* <var9:Int> isa OTHER */
-var12 = 1; /* easy <var9:Int> isa OTHER*/
-if (unlikely(!var12)) {
-var_class_name15 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
-}
-var16 = var_d >= var9;
-var10 = var16;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
-}
-}
-if (var10){
-var = var_d;
-goto RET_LABEL;
-} else {
 {
-{ /* Inline kernel#Int#unary - (var_d) on <var_d:Int> */
-var19 = -var_d;
-var17 = var19;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+{ /* Inline kernel#Byte#to_i (var2) on <var2:Byte> */
+var11 = (long)var2;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
 }
-var = var17;
+var = var9;
 goto RET_LABEL;
-}
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#distance for (self: Discrete, Discrete): Int */
-long VIRTUAL_standard___standard__Int___Discrete__distance(val* self, val* p0) {
+/* method kernel#Byte#distance for (self: Discrete, Discrete): Int */
+long VIRTUAL_standard___standard__Byte___Discrete__distance(val* self, val* p0) {
 long var /* : Int */;
 long var1 /* : Int */;
-long var2 /* : Int */;
-long var3 /* : Int */;
-var2 = ((struct instance_standard__Int*)self)->value; /* autounbox from Discrete to Int */;
-var3 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Discrete to Int */;
-var1 = standard___standard__Int___Discrete__distance(var2, var3);
+unsigned char var2 /* : Byte */;
+unsigned char var3 /* : Byte */;
+var2 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Discrete to Byte */;
+var3 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Discrete to Byte */;
+var1 = standard___standard__Byte___Discrete__distance(var2, var3);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#<=> for (self: Int, Int): Int */
-long standard___standard__Int___Comparable___60d_61d_62d(long self, long p0) {
+/* method kernel#Byte#<=> for (self: Byte, Byte): Int */
+long standard___standard__Byte___Comparable___60d_61d_62d(unsigned char self, unsigned char p0) {
 long var /* : Int */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var_other /* var other: Int */;
+unsigned char var_other /* var other: Byte */;
 short int var2 /* : Bool */;
 short int var4 /* : Bool */;
 int cltype5;
@@ -2097,36 +2096,33 @@ int idtype6;
 const char* var_class_name7;
 short int var8 /* : Bool */;
 long var9 /* : Int */;
-long var10 /* : Int */;
-long var12 /* : Int */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
-const char* var_class_name18;
-short int var19 /* : Bool */;
-long var20 /* : Int */;
-long var21 /* : Int */;
-/* Covariant cast for argument 0 (other) <p0:Int> isa OTHER */
-/* <p0:Int> isa OTHER */
-var1 = 1; /* easy <p0:Int> isa OTHER*/
+long var11 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+const char* var_class_name17;
+short int var18 /* : Bool */;
+/* Covariant cast for argument 0 (other) <p0:Byte> isa OTHER */
+/* <p0:Byte> isa OTHER */
+var1 = 1; /* easy <p0:Byte> isa OTHER*/
 if (unlikely(!var1)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 454);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 477);
+fatal_exit(1);
 }
 var_other = p0;
 {
-{ /* Inline kernel#Int#< (self,var_other) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var_other:Int> isa OTHER */
-/* <var_other:Int> isa OTHER */
-var4 = 1; /* easy <var_other:Int> isa OTHER*/
+{ /* Inline kernel#Byte#< (self,var_other) on <self:Byte> */
+/* Covariant cast for argument 0 (i) <var_other:Byte> isa OTHER */
+/* <var_other:Byte> isa OTHER */
+var4 = 1; /* easy <var_other:Byte> isa OTHER*/
 if (unlikely(!var4)) {
-var_class_name7 = type_standard__Int.name;
+var_class_name7 = type_standard__Byte.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 430);
+fatal_exit(1);
 }
 var8 = self < var_other;
 var2 = var8;
@@ -2135,241 +2131,1203 @@ RET_LABEL3:(void)0;
 }
 }
 if (var2){
-var9 = 1;
 {
-{ /* Inline kernel#Int#unary - (var9) on <var9:Int> */
-var12 = -var9;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var11 = -1l;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
 }
-var = var10;
+var = var9;
 goto RET_LABEL;
 } else {
 {
-{ /* Inline kernel#Int#< (var_other,self) on <var_other:Int> */
-/* Covariant cast for argument 0 (i) <self:Int> isa OTHER */
-/* <self:Int> isa OTHER */
-var15 = 1; /* easy <self:Int> isa OTHER*/
-if (unlikely(!var15)) {
-var_class_name18 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+{ /* Inline kernel#Byte#< (var_other,self) on <var_other:Byte> */
+/* Covariant cast for argument 0 (i) <self:Byte> isa OTHER */
+/* <self:Byte> isa OTHER */
+var14 = 1; /* easy <self:Byte> isa OTHER*/
+if (unlikely(!var14)) {
+var_class_name17 = type_standard__Byte.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 430);
+fatal_exit(1);
 }
-var19 = var_other < self;
-var13 = var19;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var18 = var_other < self;
+var12 = var18;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-if (var13){
-var20 = 1;
-var = var20;
+if (var12){
+var = 1l;
 goto RET_LABEL;
 } else {
-var21 = 0;
-var = var21;
+var = 0l;
 goto RET_LABEL;
 }
 }
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#<=> for (self: Comparable, Comparable): Int */
-long VIRTUAL_standard___standard__Int___Comparable___60d_61d_62d(val* self, val* p0) {
+/* method kernel#Byte#<=> for (self: Comparable, Comparable): Int */
+long VIRTUAL_standard___standard__Byte___Comparable___60d_61d_62d(val* self, val* p0) {
 long var /* : Int */;
 long var1 /* : Int */;
-long var2 /* : Int */;
-long var3 /* : Int */;
-var2 = ((struct instance_standard__Int*)self)->value; /* autounbox from Comparable to Int */;
-var3 = ((struct instance_standard__Int*)p0)->value; /* autounbox from Comparable to Int */;
-var1 = standard___standard__Int___Comparable___60d_61d_62d(var2, var3);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method kernel#Int#ascii for (self: Int): Char */
-char standard___standard__Int___ascii(long self) {
-char var /* : Char */;
-char var1 /* : Char */;
-var1 = self;
+unsigned char var2 /* : Byte */;
+unsigned char var3 /* : Byte */;
+var2 = ((struct instance_standard__Byte*)self)->value; /* autounbox from Comparable to Byte */;
+var3 = ((struct instance_standard__Byte*)p0)->value; /* autounbox from Comparable to Byte */;
+var1 = standard___standard__Byte___Comparable___60d_61d_62d(var2, var3);
 var = var1;
-goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method kernel#Int#digit_count for (self: Int, Int): Int */
-long standard___standard__Int___digit_count(long self, long p0) {
+/* method kernel#Int#successor for (self: Int, Int): Int */
+long standard___standard__Int___Discrete__successor(long self, long p0) {
 long var /* : Int */;
-long var_b /* var b: Int */;
+long var_i /* var i: Int */;
 long var1 /* : Int */;
-short int var2 /* : Bool */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
-long var6 /* : Int */;
-short int var7 /* : Bool */;
-short int var9 /* : Bool */;
+short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var10 /* : Bool */;
-long var11 /* : Int */;
-long var_d /* var d: Int */;
-long var12 /* : Int */;
-long var14 /* : Int */;
-long var_n /* var n: Int */;
-long var15 /* : Int */;
-short int var16 /* : Bool */;
-short int var18 /* : Bool */;
-long var19 /* : Int */;
-long var20 /* : Int */;
-long var21 /* : Int */;
-short int var22 /* : Bool */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-const char* var_class_name27;
-short int var28 /* : Bool */;
-long var29 /* : Int */;
-long var30 /* : Int */;
-short int var32 /* : Bool */;
-int cltype33;
-int idtype34;
-const char* var_class_name35;
-long var36 /* : Int */;
-long var37 /* : Int */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-const char* var_class_name42;
-long var43 /* : Int */;
-var_b = p0;
-var1 = 10;
-{
-{ /* Inline kernel#Int#== (var_b,var1) on <var_b:Int> */
-var4 = var_b == var1;
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
-}
-}
-if (var2){
-{
-var5 = standard___standard__Int___digit_count_base_95d10(self);
-}
-var = var5;
-goto RET_LABEL;
-} else {
-}
-var6 = 0;
+long var4 /* : Int */;
+var_i = p0;
 {
-{ /* Inline kernel#Int#< (self,var6) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
-/* <var6:Int> isa OTHER */
-var9 = 1; /* easy <var6:Int> isa OTHER*/
-if (unlikely(!var9)) {
+{ /* Inline kernel#Int#+ (self,var_i) on <self:Int> */
+/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
+/* <var_i:Int> isa OTHER */
+var3 = 1; /* easy <var_i:Int> isa OTHER*/
+if (unlikely(!var3)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
-}
-var10 = self < var6;
-var7 = var10;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
-}
-}
-if (var7){
-var11 = 1;
-var_d = var11;
-{
-{ /* Inline kernel#Int#unary - (self) on <self:Int> */
-var14 = -self;
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-}
-var_n = var12;
-} else {
-var15 = 0;
-{
-{ /* Inline kernel#Int#== (self,var15) on <self:Int> */
-var18 = self == var15;
-var16 = var18;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
+var4 = self + var_i;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
 }
-if (var16){
-var19 = 1;
-var = var19;
+var = var1;
 goto RET_LABEL;
-} else {
-var20 = 0;
-var_d = var20;
-var_n = self;
+RET_LABEL:;
+return var;
 }
+/* method kernel#Int#successor for (self: Discrete, Int): Discrete */
+val* VIRTUAL_standard___standard__Int___Discrete__successor(val* self, long p0) {
+val* var /* : Discrete */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+val* var3 /* : Discrete */;
+var2 = (long)(self)>>2;
+var1 = standard___standard__Int___Discrete__successor(var2, p0);
+var3 = (val*)(var1<<2|1);
+var = var3;
+RET_LABEL:;
+return var;
 }
-for(;;) {
-var21 = 0;
+/* method kernel#Int#object_id for (self: Int): Int */
+long standard___standard__Int___Object__object_id(long self) {
+long var /* : Int */;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#object_id for (self: Object): Int */
+long VIRTUAL_standard___standard__Int___Object__object_id(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+{ /* Inline kernel#Int#object_id (self) on <self:Object(Int)> */
+var3 = (long)(self)>>2;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#hash for (self: Int): Int */
+long standard___standard__Int___Object__hash(long self) {
+long var /* : Int */;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#hash for (self: Object): Int */
+long VIRTUAL_standard___standard__Int___Object__hash(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+var2 = (long)(self)>>2;
+var1 = standard___standard__Int___Object__hash(var2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#== for (self: Int, nullable Object): Bool */
+short int standard___standard__Int___Object___61d_61d(long self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+long var2 /* : Int */;
+var2 = (long)(p0)>>2;
+var1 = (p0 != NULL) && (var2 == self);
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#== for (self: Object, nullable Object): Bool */
+short int VIRTUAL_standard___standard__Int___Object___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+{ /* Inline kernel#Int#== (self,p0) on <self:Object(Int)> */
+var3 = self == p0;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#!= for (self: Int, nullable Object): Bool */
+short int standard___standard__Int___Object___33d_61d(long self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+long var2 /* : Int */;
+short int var3 /* : Bool */;
+var2 = (long)(p0)>>2;
+var1 = (p0 != NULL) && (var2 == self);
+var3 = !var1;
+var = var3;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#!= for (self: Object, nullable Object): Bool */
+short int VIRTUAL_standard___standard__Int___Object___33d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+{ /* Inline kernel#Int#!= (self,p0) on <self:Object(Int)> */
+var3 = self == p0;
+var4 = !var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#<= for (self: Int, Int): Bool */
+short int standard___standard__Int___Comparable___60d_61d(long self, long p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var2 /* : Bool */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
+}
+var2 = self <= p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#<= for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Int___Comparable___60d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+short int var6 /* : Bool */;
+{ /* Inline kernel#Int#<= (self,p0) on <self:Comparable(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
+/* <p0:Comparable> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 <= var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#< for (self: Int, Int): Bool */
+short int standard___standard__Int___Comparable___60d(long self, long p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var2 /* : Bool */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var2 = self < p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#< for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Int___Comparable___60d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+short int var6 /* : Bool */;
+{ /* Inline kernel#Int#< (self,p0) on <self:Comparable(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
+/* <p0:Comparable> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 < var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#>= for (self: Int, Int): Bool */
+short int standard___standard__Int___Comparable___62d_61d(long self, long p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var2 /* : Bool */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
+}
+var2 = self >= p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#>= for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Int___Comparable___62d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+short int var6 /* : Bool */;
+{ /* Inline kernel#Int#>= (self,p0) on <self:Comparable(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
+/* <p0:Comparable> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 >= var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#> for (self: Int, Int): Bool */
+short int standard___standard__Int___Comparable___62d(long self, long p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var2 /* : Bool */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
+}
+var2 = self > p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#> for (self: Comparable, Comparable): Bool */
+short int VIRTUAL_standard___standard__Int___Comparable___62d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+short int var6 /* : Bool */;
+{ /* Inline kernel#Int#> (self,p0) on <self:Comparable(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
+/* <p0:Comparable> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 > var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#+ for (self: Int, Int): Int */
+long standard___standard__Int___Numeric___43d(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var2 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var2 = self + p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#+ for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Int___Numeric___43d(val* self, val* p0) {
+val* var /* : Numeric */;
+long var1 /* : Int */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+val* var7 /* : Numeric */;
+{ /* Inline kernel#Int#+ (self,p0) on <self:Numeric(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
+/* <p0:Numeric> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 + var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var7 = (val*)(var1<<2|1);
+var = var7;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#unary - for (self: Int): Int */
+long standard___standard__Int___Numeric__unary_32d_45d(long self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = -self;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#unary - for (self: Numeric): Numeric */
+val* VIRTUAL_standard___standard__Int___Numeric__unary_32d_45d(val* self) {
+val* var /* : Numeric */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+val* var5 /* : Numeric */;
+{ /* Inline kernel#Int#unary - (self) on <self:Numeric(Int)> */
+var3 = (long)(self)>>2;
+var4 = -var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var5 = (val*)(var1<<2|1);
+var = var5;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#- for (self: Int, Int): Int */
+long standard___standard__Int___Numeric___45d(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var2 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
+}
+var2 = self - p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#- for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Int___Numeric___45d(val* self, val* p0) {
+val* var /* : Numeric */;
+long var1 /* : Int */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+val* var7 /* : Numeric */;
+{ /* Inline kernel#Int#- (self,p0) on <self:Numeric(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
+/* <p0:Numeric> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 - var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var7 = (val*)(var1<<2|1);
+var = var7;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#* for (self: Int, Int): Int */
+long standard___standard__Int___Numeric___42d(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var2 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 541);
+fatal_exit(1);
+}
+var2 = self * p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#* for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Int___Numeric___42d(val* self, val* p0) {
+val* var /* : Numeric */;
+long var1 /* : Int */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+val* var7 /* : Numeric */;
+{ /* Inline kernel#Int#* (self,p0) on <self:Numeric(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
+/* <p0:Numeric> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 541);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 * var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var7 = (val*)(var1<<2|1);
+var = var7;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#/ for (self: Int, Int): Int */
+long standard___standard__Int___Numeric___47d(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var2 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
+fatal_exit(1);
+}
+var2 = self / p0;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#/ for (self: Numeric, Numeric): Numeric */
+val* VIRTUAL_standard___standard__Int___Numeric___47d(val* self, val* p0) {
+val* var /* : Numeric */;
+long var1 /* : Int */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+long var4 /* : Int */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+val* var7 /* : Numeric */;
+{ /* Inline kernel#Int#/ (self,p0) on <self:Numeric(Int)> */
+/* Covariant cast for argument 0 (i) <p0:Numeric> isa OTHER */
+/* <p0:Numeric> isa OTHER */
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
+var3 = 0;
+} else {
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
+}
+if (unlikely(!var3)) {
+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`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
+fatal_exit(1);
+}
+var4 = (long)(self)>>2;
+var5 = (long)(p0)>>2;
+var6 = var4 / var5;
+var1 = var6;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var7 = (val*)(var1<<2|1);
+var = var7;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#% for (self: Int, Int): Int */
+long standard___standard__Int____37d(long self, long p0) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self % p0;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#lshift for (self: Int, Int): Int */
+long standard___standard__Int___lshift(long self, long p0) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self << p0;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_i for (self: Int): Int */
+long standard___standard__Int___Numeric__to_i(long self) {
+long var /* : Int */;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_i for (self: Numeric): Int */
+long VIRTUAL_standard___standard__Int___Numeric__to_i(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+var2 = (long)(self)>>2;
+var1 = standard___standard__Int___Numeric__to_i(var2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_f for (self: Int): Float */
+double standard___standard__Int___Numeric__to_f(long self) {
+double var /* : Float */;
+double var1 /* : Float */;
+var1 = (double)self;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_f for (self: Numeric): Float */
+double VIRTUAL_standard___standard__Int___Numeric__to_f(val* self) {
+double var /* : Float */;
+double var1 /* : Float */;
+long var3 /* : Int */;
+double var4 /* : Float */;
+{ /* Inline kernel#Int#to_f (self) on <self:Numeric(Int)> */
+var3 = (long)(self)>>2;
+var4 = (double)var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_b for (self: Int): Byte */
+unsigned char standard___standard__Int___Numeric__to_b(long self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
+var1 = (unsigned char)self;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#to_b for (self: Numeric): Byte */
+unsigned char VIRTUAL_standard___standard__Int___Numeric__to_b(val* self) {
+unsigned char var /* : Byte */;
+unsigned char var1 /* : Byte */;
+long var3 /* : Int */;
+unsigned char var4 /* : Byte */;
+{ /* Inline kernel#Int#to_b (self) on <self:Numeric(Int)> */
+var3 = (long)(self)>>2;
+var4 = (unsigned char)var3;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#distance for (self: Int, Int): Int */
+long standard___standard__Int___Discrete__distance(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var_i /* var i: Int */;
+long var2 /* : Int */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+const char* var_class_name7;
+long var8 /* : Int */;
+long var_d /* var d: Int */;
+short int var9 /* : Bool */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+const char* var_class_name14;
+short int var15 /* : Bool */;
+long var16 /* : Int */;
+long var18 /* : Int */;
+/* Covariant cast for argument 0 (i) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 575);
+fatal_exit(1);
+}
+var_i = p0;
+{
+{ /* Inline kernel#Int#- (self,var_i) on <self:Int> */
+/* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
+/* <var_i:Int> isa OTHER */
+var4 = 1; /* easy <var_i:Int> isa OTHER*/
+if (unlikely(!var4)) {
+var_class_name7 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
+}
+var8 = self - var_i;
+var2 = var8;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+}
+var_d = var2;
+{
+{ /* Inline kernel#Int#>= (var_d,0l) on <var_d:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var11 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var11)) {
+var_class_name14 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
+}
+var15 = var_d >= 0l;
+var9 = var15;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+if (var9){
+var = var_d;
+goto RET_LABEL;
+} else {
+{
+{ /* Inline kernel#Int#unary - (var_d) on <var_d:Int> */
+var18 = -var_d;
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
+}
+}
+var = var16;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#distance for (self: Discrete, Discrete): Int */
+long VIRTUAL_standard___standard__Int___Discrete__distance(val* self, val* p0) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+long var3 /* : Int */;
+var2 = (long)(self)>>2;
+var3 = (long)(p0)>>2;
+var1 = standard___standard__Int___Discrete__distance(var2, var3);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#<=> for (self: Int, Int): Int */
+long standard___standard__Int___Comparable___60d_61d_62d(long self, long p0) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var_other /* var other: Int */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+const char* var_class_name7;
+short int var8 /* : Bool */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+const char* var_class_name17;
+short int var18 /* : Bool */;
+/* Covariant cast for argument 0 (other) <p0:Int> isa OTHER */
+/* <p0:Int> isa OTHER */
+var1 = 1; /* easy <p0:Int> isa OTHER*/
+if (unlikely(!var1)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 585);
+fatal_exit(1);
+}
+var_other = p0;
+{
+{ /* Inline kernel#Int#< (self,var_other) on <self:Int> */
+/* Covariant cast for argument 0 (i) <var_other:Int> isa OTHER */
+/* <var_other:Int> isa OTHER */
+var4 = 1; /* easy <var_other:Int> isa OTHER*/
+if (unlikely(!var4)) {
+var_class_name7 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var8 = self < var_other;
+var2 = var8;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
+}
+}
+if (var2){
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var11 = -1l;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+var = var9;
+goto RET_LABEL;
+} else {
+{
+{ /* Inline kernel#Int#< (var_other,self) on <var_other:Int> */
+/* Covariant cast for argument 0 (i) <self:Int> isa OTHER */
+/* <self:Int> isa OTHER */
+var14 = 1; /* easy <self:Int> isa OTHER*/
+if (unlikely(!var14)) {
+var_class_name17 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var18 = var_other < self;
+var12 = var18;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+if (var12){
+var = 1l;
+goto RET_LABEL;
+} else {
+var = 0l;
+goto RET_LABEL;
+}
+}
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#<=> for (self: Comparable, Comparable): Int */
+long VIRTUAL_standard___standard__Int___Comparable___60d_61d_62d(val* self, val* p0) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var2 /* : Int */;
+long var3 /* : Int */;
+var2 = (long)(self)>>2;
+var3 = (long)(p0)>>2;
+var1 = standard___standard__Int___Comparable___60d_61d_62d(var2, var3);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#ascii for (self: Int): Char */
+uint32_t standard___standard__Int___ascii(long self) {
+uint32_t var /* : Char */;
+uint32_t var1 /* : Char */;
+var1 = (uint32_t)self;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method kernel#Int#digit_count for (self: Int, Int): Int */
+long standard___standard__Int___digit_count(long self, long p0) {
+long var /* : Int */;
+long var_b /* var b: Int */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+long var4 /* : Int */;
+short int var5 /* : Bool */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var8 /* : Bool */;
+long var_d /* var d: Int */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+long var_n /* var n: Int */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+const char* var_class_name20;
+short int var21 /* : Bool */;
+long var22 /* : Int */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+const char* var_class_name27;
+long var28 /* : Int */;
+long var29 /* : Int */;
+short int var31 /* : Bool */;
+int cltype32;
+int idtype33;
+const char* var_class_name34;
+long var35 /* : Int */;
+var_b = p0;
+{
+{ /* Inline kernel#Int#== (var_b,10l) on <var_b:Int> */
+var3 = var_b == 10l;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+}
+if (var1){
+{
+var4 = standard___standard__Int___digit_count_base_95d10(self);
+}
+var = var4;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel#Int#< (self,0l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var7 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var7)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var8 = self < 0l;
+var5 = var8;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+}
+if (var5){
+var_d = 1l;
+{
+{ /* Inline kernel#Int#unary - (self) on <self:Int> */
+var11 = -self;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+var_n = var9;
+} else {
+{
+{ /* Inline kernel#Int#== (self,0l) on <self:Int> */
+var14 = self == 0l;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+if (var12){
+var = 1l;
+goto RET_LABEL;
+} else {
+var_d = 0l;
+var_n = self;
+}
+}
+for(;;) {
 {
-{ /* Inline kernel#Int#> (var_n,var21) on <var_n:Int> */
-/* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
-/* <var21:Int> isa OTHER */
-var24 = 1; /* easy <var21:Int> isa OTHER*/
+{ /* Inline kernel#Int#> (var_n,0l) on <var_n:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var17 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var17)) {
+var_class_name20 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
+}
+var21 = var_n > 0l;
+var15 = var21;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+if (var15){
+{
+{ /* Inline kernel#Int#+ (var_d,1l) on <var_d:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var24 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var24)) {
 var_class_name27 = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var28 = var_n > var21;
+var28 = var_d + 1l;
 var22 = var28;
 goto RET_LABEL23;
 RET_LABEL23:(void)0;
 }
 }
-if (var22){
-var29 = 1;
-{
-{ /* Inline kernel#Int#+ (var_d,var29) on <var_d:Int> */
-/* Covariant cast for argument 0 (i) <var29:Int> isa OTHER */
-/* <var29:Int> isa OTHER */
-var32 = 1; /* easy <var29:Int> isa OTHER*/
-if (unlikely(!var32)) {
-var_class_name35 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var36 = var_d + var29;
-var30 = var36;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
-}
-}
-var_d = var30;
+var_d = var22;
 {
 { /* Inline kernel#Int#/ (var_n,var_b) on <var_n:Int> */
 /* Covariant cast for argument 0 (i) <var_b:Int> isa OTHER */
 /* <var_b:Int> isa OTHER */
-var39 = 1; /* easy <var_b:Int> isa OTHER*/
-if (unlikely(!var39)) {
-var_class_name42 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
+var31 = 1; /* easy <var_b:Int> isa OTHER*/
+if (unlikely(!var31)) {
+var_class_name34 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
+fatal_exit(1);
 }
-var43 = var_n / var_b;
-var37 = var43;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
+var35 = var_n / var_b;
+var29 = var35;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
 }
 }
-var_n = var37;
+var_n = var29;
 } else {
 goto BREAK_label;
 }
@@ -2383,517 +3341,481 @@ return var;
 /* method kernel#Int#digit_count_base_10 for (self: Int): Int */
 long standard___standard__Int___digit_count_base_95d10(long self) {
 long var /* : Int */;
-long var1 /* : Int */;
-short int var2 /* : Bool */;
-short int var4 /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var5 /* : Bool */;
-long var6 /* : Int */;
+short int var4 /* : Bool */;
 long var_result /* var result: Int */;
+long var5 /* : Int */;
 long var7 /* : Int */;
-long var9 /* : Int */;
 long var_val /* var val: Int */;
-long var10 /* : Int */;
-long var11 /* : Int */;
-short int var12 /* : Bool */;
+short int var8 /* : Bool */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+const char* var_class_name13;
 short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
-const char* var_class_name17;
-short int var18 /* : Bool */;
-long var19 /* : Int */;
-short int var20 /* : Bool */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-const char* var_class_name25;
-short int var26 /* : Bool */;
-long var27 /* : Int */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+const char* var_class_name20;
+short int var21 /* : Bool */;
+long var22 /* : Int */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+const char* var_class_name27;
 long var28 /* : Int */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-const char* var_class_name33;
-long var34 /* : Int */;
-long var35 /* : Int */;
-short int var36 /* : Bool */;
+short int var29 /* : Bool */;
+short int var31 /* : Bool */;
+int cltype32;
+int idtype33;
+const char* var_class_name34;
+short int var35 /* : Bool */;
+long var36 /* : Int */;
 short int var38 /* : Bool */;
 int cltype39;
 int idtype40;
 const char* var_class_name41;
-short int var42 /* : Bool */;
-long var43 /* : Int */;
-long var44 /* : Int */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-const char* var_class_name49;
+long var42 /* : Int */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+int cltype46;
+int idtype47;
+const char* var_class_name48;
+short int var49 /* : Bool */;
 long var50 /* : Int */;
-long var51 /* : Int */;
 short int var52 /* : Bool */;
-short int var54 /* : Bool */;
-int cltype55;
-int idtype56;
-const char* var_class_name57;
-short int var58 /* : Bool */;
-long var59 /* : Int */;
-long var60 /* : Int */;
-short int var62 /* : Bool */;
-int cltype63;
-int idtype64;
-const char* var_class_name65;
-long var66 /* : Int */;
-long var67 /* : Int */;
-long var68 /* : Int */;
-short int var70 /* : Bool */;
-int cltype71;
-int idtype72;
-const char* var_class_name73;
-long var74 /* : Int */;
-long var75 /* : Int */;
-long var76 /* : Int */;
-short int var78 /* : Bool */;
-int cltype79;
-int idtype80;
-const char* var_class_name81;
-long var82 /* : Int */;
-var1 = 0;
+int cltype53;
+int idtype54;
+const char* var_class_name55;
+long var56 /* : Int */;
+long var57 /* : Int */;
+short int var59 /* : Bool */;
+int cltype60;
+int idtype61;
+const char* var_class_name62;
+long var63 /* : Int */;
+long var64 /* : Int */;
+short int var66 /* : Bool */;
+int cltype67;
+int idtype68;
+const char* var_class_name69;
+long var70 /* : Int */;
 {
-{ /* Inline kernel#Int#< (self,var1) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
-/* <var1:Int> isa OTHER */
-var4 = 1; /* easy <var1:Int> isa OTHER*/
-if (unlikely(!var4)) {
+{ /* Inline kernel#Int#< (self,0l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var3 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var3)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
 }
-var5 = self < var1;
-var2 = var5;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var4 = self < 0l;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
 }
-if (var2){
-var6 = 2;
-var_result = var6;
+if (var1){
+var_result = 2l;
 {
 { /* Inline kernel#Int#unary - (self) on <self:Int> */
-var9 = -self;
-var7 = var9;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+var7 = -self;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
 }
-var_val = var7;
+var_val = var5;
 } else {
-var10 = 1;
-var_result = var10;
+var_result = 1l;
 var_val = self;
 }
 for(;;) {
-var11 = 10;
 {
-{ /* Inline kernel#Int#< (var_val,var11) on <var_val:Int> */
-/* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
-/* <var11:Int> isa OTHER */
-var14 = 1; /* easy <var11:Int> isa OTHER*/
-if (unlikely(!var14)) {
-var_class_name17 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+{ /* Inline kernel#Int#< (var_val,10l) on <var_val:Int> */
+/* Covariant cast for argument 0 (i) <10l:Int> isa OTHER */
+/* <10l:Int> isa OTHER */
+var10 = 1; /* easy <10l:Int> isa OTHER*/
+if (unlikely(!var10)) {
+var_class_name13 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
 }
-var18 = var_val < var11;
-var12 = var18;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+var14 = var_val < 10l;
+var8 = var14;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
 }
 }
-if (var12){
+if (var8){
 var = var_result;
 goto RET_LABEL;
 } else {
 }
-var19 = 100;
 {
-{ /* Inline kernel#Int#< (var_val,var19) on <var_val:Int> */
-/* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
-/* <var19:Int> isa OTHER */
-var22 = 1; /* easy <var19:Int> isa OTHER*/
-if (unlikely(!var22)) {
-var_class_name25 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
-}
-var26 = var_val < var19;
-var20 = var26;
-goto RET_LABEL21;
-RET_LABEL21:(void)0;
-}
-}
-if (var20){
-var27 = 1;
+{ /* Inline kernel#Int#< (var_val,100l) on <var_val:Int> */
+/* Covariant cast for argument 0 (i) <100l:Int> isa OTHER */
+/* <100l:Int> isa OTHER */
+var17 = 1; /* easy <100l:Int> isa OTHER*/
+if (unlikely(!var17)) {
+var_class_name20 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var21 = var_val < 100l;
+var15 = var21;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+if (var15){
 {
-{ /* Inline kernel#Int#+ (var_result,var27) on <var_result:Int> */
-/* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
-/* <var27:Int> isa OTHER */
-var30 = 1; /* easy <var27:Int> isa OTHER*/
-if (unlikely(!var30)) {
-var_class_name33 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_result,1l) on <var_result:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var24 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var24)) {
+var_class_name27 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var34 = var_result + var27;
-var28 = var34;
-goto RET_LABEL29;
-RET_LABEL29:(void)0;
+var28 = var_result + 1l;
+var22 = var28;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
 }
 }
-var = var28;
+var = var22;
 goto RET_LABEL;
 } else {
 }
-var35 = 1000;
 {
-{ /* Inline kernel#Int#< (var_val,var35) on <var_val:Int> */
-/* Covariant cast for argument 0 (i) <var35:Int> isa OTHER */
-/* <var35:Int> isa OTHER */
-var38 = 1; /* easy <var35:Int> isa OTHER*/
+{ /* Inline kernel#Int#< (var_val,1000l) on <var_val:Int> */
+/* Covariant cast for argument 0 (i) <1000l:Int> isa OTHER */
+/* <1000l:Int> isa OTHER */
+var31 = 1; /* easy <1000l:Int> isa OTHER*/
+if (unlikely(!var31)) {
+var_class_name34 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var35 = var_val < 1000l;
+var29 = var35;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
+}
+}
+if (var29){
+{
+{ /* Inline kernel#Int#+ (var_result,2l) on <var_result:Int> */
+/* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
+/* <2l:Int> isa OTHER */
+var38 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var38)) {
 var_class_name41 = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var42 = var_val < var35;
+var42 = var_result + 2l;
 var36 = var42;
 goto RET_LABEL37;
 RET_LABEL37:(void)0;
 }
 }
-if (var36){
-var43 = 2;
-{
-{ /* Inline kernel#Int#+ (var_result,var43) on <var_result:Int> */
-/* Covariant cast for argument 0 (i) <var43:Int> isa OTHER */
-/* <var43:Int> isa OTHER */
-var46 = 1; /* easy <var43:Int> isa OTHER*/
-if (unlikely(!var46)) {
-var_class_name49 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var50 = var_result + var43;
-var44 = var50;
-goto RET_LABEL45;
-RET_LABEL45:(void)0;
-}
-}
-var = var44;
+var = var36;
 goto RET_LABEL;
 } else {
 }
-var51 = 10000;
 {
-{ /* Inline kernel#Int#< (var_val,var51) on <var_val:Int> */
-/* Covariant cast for argument 0 (i) <var51:Int> isa OTHER */
-/* <var51:Int> isa OTHER */
-var54 = 1; /* easy <var51:Int> isa OTHER*/
-if (unlikely(!var54)) {
-var_class_name57 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
-}
-var58 = var_val < var51;
-var52 = var58;
-goto RET_LABEL53;
-RET_LABEL53:(void)0;
-}
-}
-if (var52){
-var59 = 3;
+{ /* Inline kernel#Int#< (var_val,10000l) on <var_val:Int> */
+/* Covariant cast for argument 0 (i) <10000l:Int> isa OTHER */
+/* <10000l:Int> isa OTHER */
+var45 = 1; /* easy <10000l:Int> isa OTHER*/
+if (unlikely(!var45)) {
+var_class_name48 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var49 = var_val < 10000l;
+var43 = var49;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+}
+if (var43){
 {
-{ /* Inline kernel#Int#+ (var_result,var59) on <var_result:Int> */
-/* Covariant cast for argument 0 (i) <var59:Int> isa OTHER */
-/* <var59:Int> isa OTHER */
-var62 = 1; /* easy <var59:Int> isa OTHER*/
-if (unlikely(!var62)) {
-var_class_name65 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var66 = var_result + var59;
-var60 = var66;
-goto RET_LABEL61;
-RET_LABEL61:(void)0;
-}
-}
-var = var60;
+{ /* Inline kernel#Int#+ (var_result,3l) on <var_result:Int> */
+/* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
+/* <3l:Int> isa OTHER */
+var52 = 1; /* easy <3l:Int> isa OTHER*/
+if (unlikely(!var52)) {
+var_class_name55 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var56 = var_result + 3l;
+var50 = var56;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
+}
+}
+var = var50;
 goto RET_LABEL;
 } else {
 }
-var67 = 10000;
 {
-{ /* Inline kernel#Int#/ (var_val,var67) on <var_val:Int> */
-/* Covariant cast for argument 0 (i) <var67:Int> isa OTHER */
-/* <var67:Int> isa OTHER */
-var70 = 1; /* easy <var67:Int> isa OTHER*/
-if (unlikely(!var70)) {
-var_class_name73 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 418);
-show_backtrace(1);
-}
-var74 = var_val / var67;
-var68 = var74;
-goto RET_LABEL69;
-RET_LABEL69:(void)0;
-}
-}
-var_val = var68;
-var75 = 4;
+{ /* Inline kernel#Int#/ (var_val,10000l) on <var_val:Int> */
+/* Covariant cast for argument 0 (i) <10000l:Int> isa OTHER */
+/* <10000l:Int> isa OTHER */
+var59 = 1; /* easy <10000l:Int> isa OTHER*/
+if (unlikely(!var59)) {
+var_class_name62 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name62);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
+fatal_exit(1);
+}
+var63 = var_val / 10000l;
+var57 = var63;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+}
+var_val = var57;
 {
-{ /* Inline kernel#Int#+ (var_result,var75) on <var_result:Int> */
-/* Covariant cast for argument 0 (i) <var75:Int> isa OTHER */
-/* <var75:Int> isa OTHER */
-var78 = 1; /* easy <var75:Int> isa OTHER*/
-if (unlikely(!var78)) {
-var_class_name81 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name81);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_result,4l) on <var_result:Int> */
+/* Covariant cast for argument 0 (i) <4l:Int> isa OTHER */
+/* <4l:Int> isa OTHER */
+var66 = 1; /* easy <4l:Int> isa OTHER*/
+if (unlikely(!var66)) {
+var_class_name69 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name69);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var82 = var_result + var75;
-var76 = var82;
-goto RET_LABEL77;
-RET_LABEL77:(void)0;
+var70 = var_result + 4l;
+var64 = var70;
+goto RET_LABEL65;
+RET_LABEL65:(void)0;
 }
 }
-var_result = var76;
+var_result = var64;
 }
 RET_LABEL:;
 return var;
 }
 /* method kernel#Int#to_c for (self: Int): Char */
-char standard___standard__Int___to_c(long self) {
-char var /* : Char */;
+uint32_t standard___standard__Int___to_c(long self) {
+uint32_t var /* : Char */;
 short int var1 /* : Bool */;
-long var2 /* : Int */;
-short int var3 /* : Bool */;
-short int var5 /* : Bool */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var6 /* : Bool */;
+short int var5 /* : Bool */;
 short int var_ /* var : Bool */;
-long var7 /* : Int */;
+short int var6 /* : Bool */;
 short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-const char* var_class_name13;
-short int var14 /* : Bool */;
-long var15 /* : Int */;
-short int var16 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-const char* var_class_name21;
-short int var22 /* : Bool */;
-char var23 /* : Char */;
-long var24 /* : Int */;
-long var26 /* : Int */;
-long var27 /* : Int */;
-short int var29 /* : Bool */;
-int cltype30;
-int idtype31;
-const char* var_class_name32;
+int cltype9;
+int idtype10;
+const char* var_class_name11;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+const char* var_class_name18;
+short int var19 /* : Bool */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+long var23 /* : Int */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+const char* var_class_name28;
+long var29 /* : Int */;
+uint32_t var30 /* : Char */;
+uint32_t var32 /* : Char */;
 long var33 /* : Int */;
-char var34 /* : Char */;
-char var36 /* : Char */;
-char var37 /* : Char */;
-long var38 /* : Int */;
-long var40 /* : Int */;
-long var41 /* : Int */;
+long var35 /* : Int */;
+long var36 /* : Int */;
+short int var38 /* : Bool */;
+int cltype39;
+int idtype40;
+const char* var_class_name41;
 long var42 /* : Int */;
-short int var44 /* : Bool */;
-int cltype45;
-int idtype46;
-const char* var_class_name47;
-long var48 /* : Int */;
+long var43 /* : Int */;
+short int var45 /* : Bool */;
+int cltype46;
+int idtype47;
+const char* var_class_name48;
 long var49 /* : Int */;
-short int var51 /* : Bool */;
-int cltype52;
-int idtype53;
-const char* var_class_name54;
-long var55 /* : Int */;
-char var56 /* : Char */;
-char var58 /* : Char */;
-var2 = 0;
-{
-{ /* Inline kernel#Int#>= (self,var2) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var2:Int> isa OTHER */
-/* <var2:Int> isa OTHER */
-var5 = 1; /* easy <var2:Int> isa OTHER*/
-if (unlikely(!var5)) {
+uint32_t var50 /* : Char */;
+uint32_t var52 /* : Char */;
+{
+{ /* Inline kernel#Int#>= (self,0l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var4 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var4)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
 }
-var6 = self >= var2;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = self >= 0l;
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
 }
-var_ = var3;
-if (var3){
-var7 = 36;
+var_ = var2;
+if (var2){
 {
-{ /* Inline kernel#Int#<= (self,var7) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
-/* <var7:Int> isa OTHER */
-var10 = 1; /* easy <var7:Int> isa OTHER*/
-if (unlikely(!var10)) {
-var_class_name13 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 409);
-show_backtrace(1);
-}
-var14 = self <= var7;
-var8 = var14;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+{ /* Inline kernel#Int#<= (self,36l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <36l:Int> isa OTHER */
+/* <36l:Int> isa OTHER */
+var8 = 1; /* easy <36l:Int> isa OTHER*/
+if (unlikely(!var8)) {
+var_class_name11 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
+}
+var12 = self <= 36l;
+var6 = var12;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var1 = var8;
+var1 = var6;
 } else {
 var1 = var_;
 }
 if (unlikely(!var1)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 554);
-show_backtrace(1);
-}
-var15 = 10;
-{
-{ /* Inline kernel#Int#< (self,var15) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
-/* <var15:Int> isa OTHER */
-var18 = 1; /* easy <var15:Int> isa OTHER*/
-if (unlikely(!var18)) {
-var_class_name21 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
-}
-var22 = self < var15;
-var16 = var22;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
-}
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 685);
+fatal_exit(1);
 }
-if (var16){
-var23 = '0';
 {
-{ /* Inline kernel#Char#ascii (var23) on <var23:Char> */
-var26 = (unsigned char)var23;
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+{ /* Inline kernel#Int#< (self,10l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <10l:Int> isa OTHER */
+/* <10l:Int> isa OTHER */
+var15 = 1; /* easy <10l:Int> isa OTHER*/
+if (unlikely(!var15)) {
+var_class_name18 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name18);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var19 = self < 10l;
+var13 = var19;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
 }
+if (var13){
 {
-{ /* Inline kernel#Int#+ (self,var24) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
-/* <var24:Int> isa OTHER */
-var29 = 1; /* easy <var24:Int> isa OTHER*/
-if (unlikely(!var29)) {
-var_class_name32 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Char#ascii ('0') on <'0':Char> */
+var22 = (long)'0';
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
 }
-var33 = self + var24;
-var27 = var33;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+}
+{
+{ /* Inline kernel#Int#+ (self,var20) on <self:Int> */
+/* Covariant cast for argument 0 (i) <var20:Int> isa OTHER */
+/* <var20:Int> isa OTHER */
+var25 = 1; /* easy <var20:Int> isa OTHER*/
+if (unlikely(!var25)) {
+var_class_name28 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var29 = self + var20;
+var23 = var29;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#ascii (var27) on <var27:Int> */
-var36 = var27;
-var34 = var36;
-goto RET_LABEL35;
-RET_LABEL35:(void)0;
+{ /* Inline kernel#Int#ascii (var23) on <var23:Int> */
+var32 = (uint32_t)var23;
+var30 = var32;
+goto RET_LABEL31;
+RET_LABEL31:(void)0;
 }
 }
-var = var34;
+var = var30;
 goto RET_LABEL;
 } else {
-var37 = 'a';
 {
-{ /* Inline kernel#Char#ascii (var37) on <var37:Char> */
-var40 = (unsigned char)var37;
-var38 = var40;
-goto RET_LABEL39;
-RET_LABEL39:(void)0;
+{ /* Inline kernel#Char#ascii ('a') on <'a':Char> */
+var35 = (long)'a';
+var33 = var35;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
 }
 }
-var41 = 10;
 {
-{ /* Inline kernel#Int#- (var38,var41) on <var38:Int> */
-/* Covariant cast for argument 0 (i) <var41:Int> isa OTHER */
-/* <var41:Int> isa OTHER */
-var44 = 1; /* easy <var41:Int> isa OTHER*/
-if (unlikely(!var44)) {
-var_class_name47 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+{ /* Inline kernel#Int#- (var33,10l) on <var33:Int> */
+/* Covariant cast for argument 0 (i) <10l:Int> isa OTHER */
+/* <10l:Int> isa OTHER */
+var38 = 1; /* easy <10l:Int> isa OTHER*/
+if (unlikely(!var38)) {
+var_class_name41 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
-var48 = var38 - var41;
-var42 = var48;
-goto RET_LABEL43;
-RET_LABEL43:(void)0;
+var42 = var33 - 10l;
+var36 = var42;
+goto RET_LABEL37;
+RET_LABEL37:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (self,var42) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
-/* <var42:Int> isa OTHER */
-var51 = 1; /* easy <var42:Int> isa OTHER*/
-if (unlikely(!var51)) {
-var_class_name54 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name54);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (self,var36) on <self:Int> */
+/* Covariant cast for argument 0 (i) <var36:Int> isa OTHER */
+/* <var36:Int> isa OTHER */
+var45 = 1; /* easy <var36:Int> isa OTHER*/
+if (unlikely(!var45)) {
+var_class_name48 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var55 = self + var42;
-var49 = var55;
-goto RET_LABEL50;
-RET_LABEL50:(void)0;
+var49 = self + var36;
+var43 = var49;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#ascii (var49) on <var49:Int> */
-var58 = var49;
-var56 = var58;
-goto RET_LABEL57;
-RET_LABEL57:(void)0;
+{ /* Inline kernel#Int#ascii (var43) on <var43:Int> */
+var52 = (uint32_t)var43;
+var50 = var52;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
 }
 }
-var = var56;
+var = var50;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -2902,78 +3824,74 @@ return var;
 /* method kernel#Int#abs for (self: Int): Int */
 long standard___standard__Int___abs(long self) {
 long var /* : Int */;
-long var1 /* : Int */;
-short int var2 /* : Bool */;
-short int var4 /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var5 /* : Bool */;
-long var6 /* : Int */;
+short int var4 /* : Bool */;
+long var5 /* : Int */;
 long var7 /* : Int */;
-long var9 /* : Int */;
-long var10 /* : Int */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
-const char* var_class_name15;
-long var16 /* : Int */;
-var1 = 0;
+long var8 /* : Int */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+const char* var_class_name13;
+long var14 /* : Int */;
 {
-{ /* Inline kernel#Int#>= (self,var1) on <self:Int> */
-/* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
-/* <var1:Int> isa OTHER */
-var4 = 1; /* easy <var1:Int> isa OTHER*/
-if (unlikely(!var4)) {
+{ /* Inline kernel#Int#>= (self,0l) on <self:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var3 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var3)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
 }
-var5 = self >= var1;
-var2 = var5;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var4 = self >= 0l;
+var1 = var4;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
 }
-if (var2){
+if (var1){
 var = self;
 goto RET_LABEL;
 } else {
-var6 = 1;
 {
-{ /* Inline kernel#Int#unary - (var6) on <var6:Int> */
-var9 = -var6;
-var7 = var9;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var7 = -1l;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#* (var7,self) on <var7:Int> */
+{ /* Inline kernel#Int#* (var5,self) on <var5:Int> */
 /* Covariant cast for argument 0 (i) <self:Int> isa OTHER */
 /* <self:Int> isa OTHER */
-var12 = 1; /* easy <self:Int> isa OTHER*/
-if (unlikely(!var12)) {
-var_class_name15 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 417);
-show_backtrace(1);
-}
-var16 = var7 * self;
-var10 = var16;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var10 = 1; /* easy <self:Int> isa OTHER*/
+if (unlikely(!var10)) {
+var_class_name13 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 541);
+fatal_exit(1);
 }
+var14 = var5 * self;
+var8 = var14;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
 }
-var = var10;
+}
+var = var8;
 goto RET_LABEL;
 }
 RET_LABEL:;
 return var;
 }
 /* method kernel#Char#object_id for (self: Char): Int */
-long standard___standard__Char___Object__object_id(char self) {
+long standard___standard__Char___Object__object_id(uint32_t self) {
 long var /* : Int */;
 long var1 /* : Int */;
 var1 = (long)self;
@@ -2986,10 +3904,10 @@ return var;
 long VIRTUAL_standard___standard__Char___Object__object_id(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-char var3 /* : Char */;
+uint32_t var3 /* : Char */;
 long var4 /* : Int */;
 { /* Inline kernel#Char#object_id (self) on <self:Object(Char)> */
-var3 = ((struct instance_standard__Char*)self)->value; /* autounbox from Object to Char */;
+var3 = (uint32_t)((long)(self)>>2);
 var4 = (long)var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -3000,13 +3918,13 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#hash for (self: Char): Int */
-long standard___standard__Char___Object__hash(char self) {
+long standard___standard__Char___Object__hash(uint32_t self) {
 long var /* : Int */;
 long var1 /* : Int */;
 long var3 /* : Int */;
 {
 { /* Inline kernel#Char#ascii (self) on <self:Char> */
-var3 = (unsigned char)self;
+var3 = (long)self;
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -3021,23 +3939,20 @@ return var;
 long VIRTUAL_standard___standard__Char___Object__hash(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
-char var2 /* : Char */;
-var2 = ((struct instance_standard__Char*)self)->value; /* autounbox from Object to Char */;
+uint32_t var2 /* : Char */;
+var2 = (uint32_t)((long)(self)>>2);
 var1 = standard___standard__Char___Object__hash(var2);
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method kernel#Char#== for (self: Char, nullable Object): Bool */
-short int standard___standard__Char___Object___61d_61d(char self, val* p0) {
+short int standard___standard__Char___Object___61d_61d(uint32_t self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-char var2 /* : Char */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Char);
-if (var1) {
-var2 = ((struct instance_standard__Char*)p0)->value; /* autounbox from nullable Object to Char */;
-var1 = (var2 == self);
-}
+uint32_t var2 /* : Char */;
+var2 = (uint32_t)((long)(p0)>>2);
+var1 = (p0 != NULL) && (var2 == self);
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
@@ -3049,7 +3964,7 @@ short int var /* : Bool */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 { /* Inline kernel#Char#== (self,p0) on <self:Object(Char)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Char*)self)->value == ((struct instance_standard__Char*)p0)->value);
+var3 = self == p0;
 var1 = var3;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
@@ -3059,16 +3974,13 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#!= for (self: Char, nullable Object): Bool */
-short int standard___standard__Char___Object___33d_61d(char self, val* p0) {
+short int standard___standard__Char___Object___33d_61d(uint32_t self, val* p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-char var2 /* : Char */;
+uint32_t var2 /* : Char */;
 short int var3 /* : Bool */;
-var1 = (p0 != NULL) && (p0->class == &class_standard__Char);
-if (var1) {
-var2 = ((struct instance_standard__Char*)p0)->value; /* autounbox from nullable Object to Char */;
-var1 = (var2 == self);
-}
+var2 = (uint32_t)((long)(p0)>>2);
+var1 = (p0 != NULL) && (var2 == self);
 var3 = !var1;
 var = var3;
 goto RET_LABEL;
@@ -3082,7 +3994,7 @@ short int var1 /* : Bool */;
 short int var3 /* : Bool */;
 short int var4 /* : Bool */;
 { /* Inline kernel#Char#!= (self,p0) on <self:Object(Char)> */
-var3 = self == p0 || (p0 != NULL && self->class == p0->class && ((struct instance_standard__Char*)self)->value == ((struct instance_standard__Char*)p0)->value);
+var3 = self == p0;
 var4 = !var3;
 var1 = var4;
 goto RET_LABEL2;
@@ -3093,7 +4005,7 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#<= for (self: Char, Char): Bool */
-short int standard___standard__Char___Comparable___60d_61d(char self, char p0) {
+short int standard___standard__Char___Comparable___60d_61d(uint32_t self, uint32_t p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
@@ -3106,8 +4018,8 @@ var1 = 1; /* easy <p0:Char> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 591);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 722);
+fatal_exit(1);
 }
 var2 = self <= p0;
 var = var2;
@@ -3124,28 +4036,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-char var4 /* : Char */;
-char var5 /* : Char */;
+uint32_t var4 /* : Char */;
+uint32_t var5 /* : Char */;
 short int var6 /* : Bool */;
 { /* Inline kernel#Char#<= (self,p0) on <self:Comparable(Char)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 591);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 722);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Char*)self)->value; /* autounbox from Comparable to Char */;
-var5 = ((struct instance_standard__Char*)p0)->value; /* autounbox from Comparable to Char */;
+var4 = (uint32_t)((long)(self)>>2);
+var5 = (uint32_t)((long)(p0)>>2);
 var6 = var4 <= var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -3156,7 +4068,7 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#< for (self: Char, Char): Bool */
-short int standard___standard__Char___Comparable___60d(char self, char p0) {
+short int standard___standard__Char___Comparable___60d(uint32_t self, uint32_t p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
@@ -3169,8 +4081,8 @@ var1 = 1; /* easy <p0:Char> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 723);
+fatal_exit(1);
 }
 var2 = self < p0;
 var = var2;
@@ -3187,28 +4099,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-char var4 /* : Char */;
-char var5 /* : Char */;
+uint32_t var4 /* : Char */;
+uint32_t var5 /* : Char */;
 short int var6 /* : Bool */;
 { /* Inline kernel#Char#< (self,p0) on <self:Comparable(Char)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 723);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Char*)self)->value; /* autounbox from Comparable to Char */;
-var5 = ((struct instance_standard__Char*)p0)->value; /* autounbox from Comparable to Char */;
+var4 = (uint32_t)((long)(self)>>2);
+var5 = (uint32_t)((long)(p0)>>2);
 var6 = var4 < var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -3219,7 +4131,7 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#>= for (self: Char, Char): Bool */
-short int standard___standard__Char___Comparable___62d_61d(char self, char p0) {
+short int standard___standard__Char___Comparable___62d_61d(uint32_t self, uint32_t p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
@@ -3232,8 +4144,8 @@ var1 = 1; /* easy <p0:Char> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 593);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 724);
+fatal_exit(1);
 }
 var2 = self >= p0;
 var = var2;
@@ -3250,28 +4162,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-char var4 /* : Char */;
-char var5 /* : Char */;
+uint32_t var4 /* : Char */;
+uint32_t var5 /* : Char */;
 short int var6 /* : Bool */;
 { /* Inline kernel#Char#>= (self,p0) on <self:Comparable(Char)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 593);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 724);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Char*)self)->value; /* autounbox from Comparable to Char */;
-var5 = ((struct instance_standard__Char*)p0)->value; /* autounbox from Comparable to Char */;
+var4 = (uint32_t)((long)(self)>>2);
+var5 = (uint32_t)((long)(p0)>>2);
 var6 = var4 >= var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -3282,7 +4194,7 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#> for (self: Char, Char): Bool */
-short int standard___standard__Char___Comparable___62d(char self, char p0) {
+short int standard___standard__Char___Comparable___62d(uint32_t self, uint32_t p0) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 int cltype;
@@ -3295,8 +4207,8 @@ var1 = 1; /* easy <p0:Char> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 594);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 725);
+fatal_exit(1);
 }
 var2 = self > p0;
 var = var2;
@@ -3313,28 +4225,28 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-char var4 /* : Char */;
-char var5 /* : Char */;
+uint32_t var4 /* : Char */;
+uint32_t var5 /* : Char */;
 short int var6 /* : Bool */;
 { /* Inline kernel#Char#> (self,p0) on <self:Comparable(Char)> */
 /* Covariant cast for argument 0 (i) <p0:Comparable> isa OTHER */
 /* <p0:Comparable> isa OTHER */
-type_struct = self->type->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
+type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_standard__kernel__Comparable__OTHER];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= p0->type->table_size) {
+if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
 var3 = 0;
 } else {
-var3 = p0->type->type_table[cltype] == idtype;
+var3 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
 }
 if (unlikely(!var3)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
+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`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 594);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 725);
+fatal_exit(1);
 }
-var4 = ((struct instance_standard__Char*)self)->value; /* autounbox from Comparable to Char */;
-var5 = ((struct instance_standard__Char*)p0)->value; /* autounbox from Comparable to Char */;
+var4 = (uint32_t)((long)(self)>>2);
+var5 = (uint32_t)((long)(p0)>>2);
 var6 = var4 > var5;
 var1 = var6;
 goto RET_LABEL2;
@@ -3345,9 +4257,9 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#successor for (self: Char, Int): Char */
-char standard___standard__Char___Discrete__successor(char self, long p0) {
-char var /* : Char */;
-char var1 /* : Char */;
+uint32_t standard___standard__Char___Discrete__successor(uint32_t self, long p0) {
+uint32_t var /* : Char */;
+uint32_t var1 /* : Char */;
 var1 = self + p0;
 var = var1;
 goto RET_LABEL;
@@ -3357,30 +4269,30 @@ return var;
 /* method kernel#Char#successor for (self: Discrete, Int): Discrete */
 val* VIRTUAL_standard___standard__Char___Discrete__successor(val* self, long p0) {
 val* var /* : Discrete */;
-char var1 /* : Char */;
-char var3 /* : Char */;
-char var4 /* : Char */;
+uint32_t var1 /* : Char */;
+uint32_t var3 /* : Char */;
+uint32_t var4 /* : Char */;
 val* var5 /* : Discrete */;
 { /* Inline kernel#Char#successor (self,p0) on <self:Discrete(Char)> */
-var3 = ((struct instance_standard__Char*)self)->value; /* autounbox from Discrete to Char */;
+var3 = (uint32_t)((long)(self)>>2);
 var4 = var3 + p0;
 var1 = var4;
 goto RET_LABEL2;
 RET_LABEL2:(void)0;
 }
-var5 = BOX_standard__Char(var1); /* autobox from Char to Discrete */
+var5 = (val*)((long)(var1)<<2|2);
 var = var5;
 RET_LABEL:;
 return var;
 }
 /* method kernel#Char#distance for (self: Char, Char): Int */
-long standard___standard__Char___Discrete__distance(char self, char p0) {
+long standard___standard__Char___Discrete__distance(uint32_t self, uint32_t p0) {
 long var /* : Int */;
 short int var1 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-char var_c /* var c: Char */;
+uint32_t var_c /* var c: Char */;
 long var2 /* : Int */;
 long var4 /* : Int */;
 long var5 /* : Int */;
@@ -3392,28 +4304,27 @@ int idtype12;
 const char* var_class_name13;
 long var14 /* : Int */;
 long var_d /* var d: Int */;
-long var15 /* : Int */;
-short int var16 /* : Bool */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-const char* var_class_name21;
-short int var22 /* : Bool */;
-long var23 /* : Int */;
-long var25 /* : Int */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+const char* var_class_name20;
+short int var21 /* : Bool */;
+long var22 /* : Int */;
+long var24 /* : Int */;
 /* Covariant cast for argument 0 (c) <p0:Char> isa OTHER */
 /* <p0:Char> isa OTHER */
 var1 = 1; /* easy <p0:Char> isa OTHER*/
 if (unlikely(!var1)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 599);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 730);
+fatal_exit(1);
 }
 var_c = p0;
 {
 { /* Inline kernel#Char#ascii (self) on <self:Char> */
-var4 = (unsigned char)self;
+var4 = (long)self;
 var2 = var4;
 goto RET_LABEL3;
 RET_LABEL3:(void)0;
@@ -3421,7 +4332,7 @@ RET_LABEL3:(void)0;
 }
 {
 { /* Inline kernel#Char#ascii (var_c) on <var_c:Char> */
-var7 = (unsigned char)var_c;
+var7 = (long)var_c;
 var5 = var7;
 goto RET_LABEL6;
 RET_LABEL6:(void)0;
@@ -3435,8 +4346,8 @@ var10 = 1; /* easy <var5:Int> isa OTHER*/
 if (unlikely(!var10)) {
 var_class_name13 = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
 var14 = var2 - var5;
 var8 = var14;
@@ -3445,37 +4356,36 @@ RET_LABEL9:(void)0;
 }
 }
 var_d = var8;
-var15 = 0;
-{
-{ /* Inline kernel#Int#>= (var_d,var15) on <var_d:Int> */
-/* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
-/* <var15:Int> isa OTHER */
-var18 = 1; /* easy <var15:Int> isa OTHER*/
-if (unlikely(!var18)) {
-var_class_name21 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 411);
-show_backtrace(1);
-}
-var22 = var_d >= var15;
-var16 = var22;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
-}
-}
-if (var16){
+{
+{ /* Inline kernel#Int#>= (var_d,0l) on <var_d:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var17 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var17)) {
+var_class_name20 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+fatal_exit(1);
+}
+var21 = var_d >= 0l;
+var15 = var21;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+}
+if (var15){
 var = var_d;
 goto RET_LABEL;
 } else {
 {
 { /* Inline kernel#Int#unary - (var_d) on <var_d:Int> */
-var25 = -var_d;
-var23 = var25;
-goto RET_LABEL24;
-RET_LABEL24:(void)0;
+var24 = -var_d;
+var22 = var24;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
 }
 }
-var = var23;
+var = var22;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -3485,174 +4395,164 @@ return var;
 long VIRTUAL_standard___standard__Char___Discrete__distance(val* self, val* p0) {
 long var /* : Int */;
 long var1 /* : Int */;
-char var2 /* : Char */;
-char var3 /* : Char */;
-var2 = ((struct instance_standard__Char*)self)->value; /* autounbox from Discrete to Char */;
-var3 = ((struct instance_standard__Char*)p0)->value; /* autounbox from Discrete to Char */;
+uint32_t var2 /* : Char */;
+uint32_t var3 /* : Char */;
+var2 = (uint32_t)((long)(self)>>2);
+var3 = (uint32_t)((long)(p0)>>2);
 var1 = standard___standard__Char___Discrete__distance(var2, var3);
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method kernel#Char#to_i for (self: Char): Int */
-long standard___standard__Char___to_i(char self) {
+long standard___standard__Char___to_i(uint32_t self) {
 long var /* : Int */;
-char var1 /* : Char */;
-short int var2 /* : Bool */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+long var4 /* : Int */;
 long var6 /* : Int */;
+short int var7 /* : Bool */;
 long var8 /* : Int */;
-short int var9 /* : Bool */;
 long var10 /* : Int */;
-long var12 /* : Int */;
-char var13 /* : Char */;
+long var11 /* : Int */;
+long var13 /* : Int */;
 long var14 /* : Int */;
-long var16 /* : Int */;
-long var17 /* : Int */;
-short int var19 /* : Bool */;
+short int var16 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var20 /* : Int */;
-char var21 /* : Char */;
+long var17 /* : Int */;
+uint32_t var18 /* : Char */;
+long var19 /* : Int */;
+long var21 /* : Int */;
 long var22 /* : Int */;
 long var24 /* : Int */;
-char var25 /* : Char */;
-long var26 /* : Int */;
-long var28 /* : Int */;
-long var29 /* : Int */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
-const char* var_class_name34;
-long var35 /* : Int */;
-long var36 /* : Int */;
-long var37 /* : Int */;
-short int var39 /* : Bool */;
-int cltype40;
-int idtype41;
-const char* var_class_name42;
-long var43 /* : Int */;
-var1 = '-';
+long var25 /* : Int */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+const char* var_class_name30;
+long var31 /* : Int */;
+long var32 /* : Int */;
+short int var34 /* : Bool */;
+int cltype35;
+int idtype36;
+const char* var_class_name37;
+long var38 /* : Int */;
 {
-{ /* Inline kernel#Char#== (self,var1) on <self:Char> */
-var4 = self == var1;
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+{ /* Inline kernel#Char#== (self,'-') on <self:Char> */
+var3 = self == '-';
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
 }
 }
-if (var2){
-var5 = 1;
+if (var1){
 {
-{ /* Inline kernel#Int#unary - (var5) on <var5:Int> */
-var8 = -var5;
-var6 = var8;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var6 = -1l;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
 }
-var = var6;
+var = var4;
 goto RET_LABEL;
 } else {
 {
-var9 = standard___standard__Char___is_digit(self);
+var7 = standard___standard__Char___is_digit(self);
 }
-if (var9){
+if (var7){
 {
 { /* Inline kernel#Char#ascii (self) on <self:Char> */
-var12 = (unsigned char)self;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var10 = (long)self;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
 }
 }
-var13 = '0';
 {
-{ /* Inline kernel#Char#ascii (var13) on <var13:Char> */
-var16 = (unsigned char)var13;
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
+{ /* Inline kernel#Char#ascii ('0') on <'0':Char> */
+var13 = (long)'0';
+var11 = var13;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#- (var10,var14) on <var10:Int> */
-/* Covariant cast for argument 0 (i) <var14:Int> isa OTHER */
-/* <var14:Int> isa OTHER */
-var19 = 1; /* easy <var14:Int> isa OTHER*/
-if (unlikely(!var19)) {
+{ /* Inline kernel#Int#- (var8,var11) on <var8:Int> */
+/* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
+/* <var11:Int> isa OTHER */
+var16 = 1; /* easy <var11:Int> isa OTHER*/
+if (unlikely(!var16)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
-var20 = var10 - var14;
-var17 = var20;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+var17 = var8 - var11;
+var14 = var17;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
 }
-var = var17;
+var = var14;
 goto RET_LABEL;
 } else {
 {
-var21 = standard___standard__Char___to_lower(self);
+var18 = standard___standard__Char___to_lower(self);
 }
 {
-{ /* Inline kernel#Char#ascii (var21) on <var21:Char> */
-var24 = (unsigned char)var21;
-var22 = var24;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
+{ /* Inline kernel#Char#ascii (var18) on <var18:Char> */
+var21 = (long)var18;
+var19 = var21;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
 }
 }
-var25 = 'a';
 {
-{ /* Inline kernel#Char#ascii (var25) on <var25:Char> */
-var28 = (unsigned char)var25;
-var26 = var28;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+{ /* Inline kernel#Char#ascii ('a') on <'a':Char> */
+var24 = (long)'a';
+var22 = var24;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#- (var22,var26) on <var22:Int> */
-/* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
-/* <var26:Int> isa OTHER */
-var31 = 1; /* easy <var26:Int> isa OTHER*/
-if (unlikely(!var31)) {
-var_class_name34 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
-}
-var35 = var22 - var26;
-var29 = var35;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
+{ /* Inline kernel#Int#- (var19,var22) on <var19:Int> */
+/* Covariant cast for argument 0 (i) <var22:Int> isa OTHER */
+/* <var22:Int> isa OTHER */
+var27 = 1; /* easy <var22:Int> isa OTHER*/
+if (unlikely(!var27)) {
+var_class_name30 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
+}
+var31 = var19 - var22;
+var25 = var31;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
 }
 }
-var36 = 10;
 {
-{ /* Inline kernel#Int#+ (var29,var36) on <var29:Int> */
-/* Covariant cast for argument 0 (i) <var36:Int> isa OTHER */
-/* <var36:Int> isa OTHER */
-var39 = 1; /* easy <var36:Int> isa OTHER*/
-if (unlikely(!var39)) {
-var_class_name42 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var43 = var29 + var36;
-var37 = var43;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
-}
-}
-var = var37;
+{ /* Inline kernel#Int#+ (var25,10l) on <var25:Int> */
+/* Covariant cast for argument 0 (i) <10l:Int> isa OTHER */
+/* <10l:Int> isa OTHER */
+var34 = 1; /* easy <10l:Int> isa OTHER*/
+if (unlikely(!var34)) {
+var_class_name37 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
+}
+var38 = var25 + 10l;
+var32 = var38;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+}
+var = var32;
 goto RET_LABEL;
 }
 }
@@ -3660,75 +4560,71 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#ascii for (self: Char): Int */
-long standard___standard__Char___ascii(char self) {
+long standard___standard__Char___ascii(uint32_t self) {
 long var /* : Int */;
 long var1 /* : Int */;
-var1 = (unsigned char)self;
+var1 = (long)self;
 var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
 /* method kernel#Char#to_lower for (self: Char): Char */
-char standard___standard__Char___to_lower(char self) {
-char var /* : Char */;
+uint32_t standard___standard__Char___to_lower(uint32_t self) {
+uint32_t var /* : Char */;
 short int var1 /* : Bool */;
 long var2 /* : Int */;
 long var4 /* : Int */;
-char var5 /* : Char */;
-char var6 /* : Char */;
-long var7 /* : Int */;
-long var8 /* : Int */;
-short int var10 /* : Bool */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var11 /* : Int */;
-char var12 /* : Char */;
-char var14 /* : Char */;
+long var9 /* : Int */;
+uint32_t var10 /* : Char */;
+uint32_t var12 /* : Char */;
 {
 var1 = standard___standard__Char___is_upper(self);
 }
 if (var1){
 {
 { /* Inline kernel#Char#ascii (self) on <self:Char> */
-var4 = (unsigned char)self;
+var4 = (long)self;
 var2 = var4;
 goto RET_LABEL3;
 RET_LABEL3:(void)0;
 }
 }
-var5 = 'a';
-var6 = 'A';
 {
-var7 = standard___standard__Char___Discrete__distance(var5, var6);
+var5 = standard___standard__Char___Discrete__distance('a', 'A');
 }
 {
-{ /* Inline kernel#Int#+ (var2,var7) on <var2:Int> */
-/* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
-/* <var7:Int> isa OTHER */
-var10 = 1; /* easy <var7:Int> isa OTHER*/
-if (unlikely(!var10)) {
+{ /* Inline kernel#Int#+ (var2,var5) on <var2:Int> */
+/* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
+/* <var5:Int> isa OTHER */
+var8 = 1; /* easy <var5:Int> isa OTHER*/
+if (unlikely(!var8)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var11 = var2 + var7;
-var8 = var11;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var9 = var2 + var5;
+var6 = var9;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#ascii (var8) on <var8:Int> */
-var14 = var8;
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+{ /* Inline kernel#Int#ascii (var6) on <var6:Int> */
+var12 = (uint32_t)var6;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
 }
-var = var12;
+var = var10;
 goto RET_LABEL;
 } else {
 var = self;
@@ -3738,65 +4634,61 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#to_upper for (self: Char): Char */
-char standard___standard__Char___to_upper(char self) {
-char var /* : Char */;
+uint32_t standard___standard__Char___to_upper(uint32_t self) {
+uint32_t var /* : Char */;
 short int var1 /* : Bool */;
 long var2 /* : Int */;
 long var4 /* : Int */;
-char var5 /* : Char */;
-char var6 /* : Char */;
-long var7 /* : Int */;
-long var8 /* : Int */;
-short int var10 /* : Bool */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var11 /* : Int */;
-char var12 /* : Char */;
-char var14 /* : Char */;
+long var9 /* : Int */;
+uint32_t var10 /* : Char */;
+uint32_t var12 /* : Char */;
 {
 var1 = standard___standard__Char___is_lower(self);
 }
 if (var1){
 {
 { /* Inline kernel#Char#ascii (self) on <self:Char> */
-var4 = (unsigned char)self;
+var4 = (long)self;
 var2 = var4;
 goto RET_LABEL3;
 RET_LABEL3:(void)0;
 }
 }
-var5 = 'a';
-var6 = 'A';
 {
-var7 = standard___standard__Char___Discrete__distance(var5, var6);
+var5 = standard___standard__Char___Discrete__distance('a', 'A');
 }
 {
-{ /* Inline kernel#Int#- (var2,var7) on <var2:Int> */
-/* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
-/* <var7:Int> isa OTHER */
-var10 = 1; /* easy <var7:Int> isa OTHER*/
-if (unlikely(!var10)) {
+{ /* Inline kernel#Int#- (var2,var5) on <var2:Int> */
+/* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
+/* <var5:Int> isa OTHER */
+var8 = 1; /* easy <var5:Int> isa OTHER*/
+if (unlikely(!var8)) {
 var_class_name = type_standard__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
-var11 = var2 - var7;
-var8 = var11;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var9 = var2 - var5;
+var6 = var9;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#ascii (var8) on <var8:Int> */
-var14 = var8;
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+{ /* Inline kernel#Int#ascii (var6) on <var6:Int> */
+var12 = (uint32_t)var6;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
 }
-var = var12;
+var = var10;
 goto RET_LABEL;
 } else {
 var = self;
@@ -3806,63 +4698,59 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#is_digit for (self: Char): Bool */
-short int standard___standard__Char___is_digit(char self) {
+short int standard___standard__Char___is_digit(uint32_t self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-char var2 /* : Char */;
-short int var3 /* : Bool */;
-short int var5 /* : Bool */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var6 /* : Bool */;
+short int var5 /* : Bool */;
 short int var_ /* var : Bool */;
-char var7 /* : Char */;
+short int var6 /* : Bool */;
 short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-const char* var_class_name13;
-short int var14 /* : Bool */;
-var2 = '0';
+int cltype9;
+int idtype10;
+const char* var_class_name11;
+short int var12 /* : Bool */;
 {
-{ /* Inline kernel#Char#>= (self,var2) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var2:Char> isa OTHER */
-/* <var2:Char> isa OTHER */
-var5 = 1; /* easy <var2:Char> isa OTHER*/
-if (unlikely(!var5)) {
+{ /* Inline kernel#Char#>= (self,'0') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'0':Char> isa OTHER */
+/* <'0':Char> isa OTHER */
+var4 = 1; /* easy <'0':Char> isa OTHER*/
+if (unlikely(!var4)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 593);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 724);
+fatal_exit(1);
 }
-var6 = self >= var2;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = self >= '0';
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
 }
-var_ = var3;
-if (var3){
-var7 = '9';
+var_ = var2;
+if (var2){
 {
-{ /* Inline kernel#Char#<= (self,var7) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var7:Char> isa OTHER */
-/* <var7:Char> isa OTHER */
-var10 = 1; /* easy <var7:Char> isa OTHER*/
-if (unlikely(!var10)) {
-var_class_name13 = type_standard__Char.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 591);
-show_backtrace(1);
-}
-var14 = self <= var7;
-var8 = var14;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+{ /* Inline kernel#Char#<= (self,'9') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'9':Char> isa OTHER */
+/* <'9':Char> isa OTHER */
+var8 = 1; /* easy <'9':Char> isa OTHER*/
+if (unlikely(!var8)) {
+var_class_name11 = type_standard__Char.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 722);
+fatal_exit(1);
+}
+var12 = self <= '9';
+var6 = var12;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var1 = var8;
+var1 = var6;
 } else {
 var1 = var_;
 }
@@ -3872,63 +4760,59 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#is_lower for (self: Char): Bool */
-short int standard___standard__Char___is_lower(char self) {
+short int standard___standard__Char___is_lower(uint32_t self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-char var2 /* : Char */;
-short int var3 /* : Bool */;
-short int var5 /* : Bool */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var6 /* : Bool */;
+short int var5 /* : Bool */;
 short int var_ /* var : Bool */;
-char var7 /* : Char */;
+short int var6 /* : Bool */;
 short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-const char* var_class_name13;
-short int var14 /* : Bool */;
-var2 = 'a';
+int cltype9;
+int idtype10;
+const char* var_class_name11;
+short int var12 /* : Bool */;
 {
-{ /* Inline kernel#Char#>= (self,var2) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var2:Char> isa OTHER */
-/* <var2:Char> isa OTHER */
-var5 = 1; /* easy <var2:Char> isa OTHER*/
-if (unlikely(!var5)) {
+{ /* Inline kernel#Char#>= (self,'a') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'a':Char> isa OTHER */
+/* <'a':Char> isa OTHER */
+var4 = 1; /* easy <'a':Char> isa OTHER*/
+if (unlikely(!var4)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 593);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 724);
+fatal_exit(1);
 }
-var6 = self >= var2;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = self >= 'a';
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
 }
-var_ = var3;
-if (var3){
-var7 = 'z';
+var_ = var2;
+if (var2){
 {
-{ /* Inline kernel#Char#<= (self,var7) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var7:Char> isa OTHER */
-/* <var7:Char> isa OTHER */
-var10 = 1; /* easy <var7:Char> isa OTHER*/
-if (unlikely(!var10)) {
-var_class_name13 = type_standard__Char.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 591);
-show_backtrace(1);
-}
-var14 = self <= var7;
-var8 = var14;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+{ /* Inline kernel#Char#<= (self,'z') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'z':Char> isa OTHER */
+/* <'z':Char> isa OTHER */
+var8 = 1; /* easy <'z':Char> isa OTHER*/
+if (unlikely(!var8)) {
+var_class_name11 = type_standard__Char.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 722);
+fatal_exit(1);
+}
+var12 = self <= 'z';
+var6 = var12;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var1 = var8;
+var1 = var6;
 } else {
 var1 = var_;
 }
@@ -3938,63 +4822,59 @@ RET_LABEL:;
 return var;
 }
 /* method kernel#Char#is_upper for (self: Char): Bool */
-short int standard___standard__Char___is_upper(char self) {
+short int standard___standard__Char___is_upper(uint32_t self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
-char var2 /* : Char */;
-short int var3 /* : Bool */;
-short int var5 /* : Bool */;
+short int var2 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var6 /* : Bool */;
+short int var5 /* : Bool */;
 short int var_ /* var : Bool */;
-char var7 /* : Char */;
+short int var6 /* : Bool */;
 short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-const char* var_class_name13;
-short int var14 /* : Bool */;
-var2 = 'A';
+int cltype9;
+int idtype10;
+const char* var_class_name11;
+short int var12 /* : Bool */;
 {
-{ /* Inline kernel#Char#>= (self,var2) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var2:Char> isa OTHER */
-/* <var2:Char> isa OTHER */
-var5 = 1; /* easy <var2:Char> isa OTHER*/
-if (unlikely(!var5)) {
+{ /* Inline kernel#Char#>= (self,'A') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'A':Char> isa OTHER */
+/* <'A':Char> isa OTHER */
+var4 = 1; /* easy <'A':Char> isa OTHER*/
+if (unlikely(!var4)) {
 var_class_name = type_standard__Char.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 593);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 724);
+fatal_exit(1);
 }
-var6 = self >= var2;
-var3 = var6;
-goto RET_LABEL4;
-RET_LABEL4:(void)0;
+var5 = self >= 'A';
+var2 = var5;
+goto RET_LABEL3;
+RET_LABEL3:(void)0;
 }
 }
-var_ = var3;
-if (var3){
-var7 = 'Z';
+var_ = var2;
+if (var2){
 {
-{ /* Inline kernel#Char#<= (self,var7) on <self:Char> */
-/* Covariant cast for argument 0 (i) <var7:Char> isa OTHER */
-/* <var7:Char> isa OTHER */
-var10 = 1; /* easy <var7:Char> isa OTHER*/
-if (unlikely(!var10)) {
-var_class_name13 = type_standard__Char.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 591);
-show_backtrace(1);
-}
-var14 = self <= var7;
-var8 = var14;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+{ /* Inline kernel#Char#<= (self,'Z') on <self:Char> */
+/* Covariant cast for argument 0 (i) <'Z':Char> isa OTHER */
+/* <'Z':Char> isa OTHER */
+var8 = 1; /* easy <'Z':Char> isa OTHER*/
+if (unlikely(!var8)) {
+var_class_name11 = type_standard__Char.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 722);
+fatal_exit(1);
+}
+var12 = self <= 'Z';
+var6 = var12;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var1 = var8;
+var1 = var6;
 } else {
 var1 = var_;
 }