c_src: regenerate
[nit.git] / c_src / nitc__light_ffi_base.sep.1.c
similarity index 52%
rename from c_src/nit__light_ffi_base.sep.1.c
rename to c_src/nitc__light_ffi_base.sep.1.c
index acdeaf9..f183f6a 100644 (file)
@@ -1,12 +1,12 @@
-#include "nit__light_ffi_base.sep.0.h"
+#include "nitc__light_ffi_base.sep.0.h"
 /* method light_ffi_base#ToolContext#ffi_language_assignation_phase for (self: ToolContext): Phase */
-val* nit__light_ffi_base___ToolContext___ffi_language_assignation_phase(val* self) {
+val* nitc__light_ffi_base___ToolContext___ffi_language_assignation_phase(val* self) {
 val* var /* : Phase */;
 val* var1 /* : Phase */;
-var1 = self->attrs[COLOR_nit__light_ffi_base__ToolContext___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:ToolContext> */
+var1 = self->attrs[COLOR_nitc__light_ffi_base__ToolContext___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:ToolContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 26);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 26);
 fatal_exit(1);
 }
 var = var1;
@@ -14,13 +14,13 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#FFILanguageAssignationPhase#languages for (self: FFILanguageAssignationPhase): Array[FFILanguage] */
-val* nit___nit__FFILanguageAssignationPhase___languages(val* self) {
+val* nitc___nitc__FFILanguageAssignationPhase___languages(val* self) {
 val* var /* : Array[FFILanguage] */;
 val* var1 /* : Array[FFILanguage] */;
-var1 = self->attrs[COLOR_nit__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
+var1 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 36);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
 fatal_exit(1);
 }
 var = var1;
@@ -28,7 +28,7 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#FFILanguageAssignationPhase#process_nmodule for (self: FFILanguageAssignationPhase, AModule) */
-void nit___nit__FFILanguageAssignationPhase___nit__phase__Phase__process_nmodule(val* self, val* p0) {
+void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_nmodule(val* self, val* p0) {
 val* var_nmodule /* var nmodule: AModule */;
 val* var /* : ANodes[AExternCodeBlock] */;
 val* var2 /* : ANodes[AExternCodeBlock] */;
@@ -41,10 +41,10 @@ val* var_block /* var block: AExternCodeBlock */;
 var_nmodule = p0;
 {
 { /* Inline parser_nodes#AModule#n_extern_code_blocks (var_nmodule) on <var_nmodule:AModule> */
-var2 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <var_nmodule:AModule> */
+var2 = var_nmodule->attrs[COLOR_nitc__parser_nodes__AModule___n_extern_code_blocks].val; /* _n_extern_code_blocks on <var_nmodule:AModule> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_blocks");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1093);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 1059);
 fatal_exit(1);
 }
 var = var2;
@@ -53,36 +53,36 @@ RET_LABEL1:(void)0;
 }
 var_ = var;
 {
-var3 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+var3 = nitc___nitc__ANodes___core__abstract_collection__Collection__iterator(var_);
 }
 var_4 = var3;
 for(;;) {
 {
-var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AExternCodeBlock]>*/
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AExternCodeBlock]>*/
 }
 if (var5){
+} else {
+goto BREAK_label;
+}
 {
-var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AExternCodeBlock]>*/
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AExternCodeBlock]>*/
 }
 var_block = var6;
 {
-nit___nit__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
+nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
 }
 {
-((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AExternCodeBlock]>*/
-}
-} else {
-goto BREAK_label;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AExternCodeBlock]>*/
 }
 }
 BREAK_label: (void)0;
 {
-((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AExternCodeBlock]>*/
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AExternCodeBlock]>*/
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#FFILanguageAssignationPhase#process_npropdef for (self: FFILanguageAssignationPhase, APropdef) */
-void nit___nit__FFILanguageAssignationPhase___nit__phase__Phase__process_npropdef(val* self, val* p0) {
+void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_npropdef(val* self, val* p0) {
 val* var_npropdef /* var npropdef: APropdef */;
 short int var /* : Bool */;
 int cltype;
@@ -97,8 +97,8 @@ short int var7 /* : Bool */;
 short int var8 /* : Bool */;
 var_npropdef = p0;
 /* <var_npropdef:APropdef> isa AMethPropdef */
-cltype = type_nit__AMethPropdef.color;
-idtype = type_nit__AMethPropdef.id;
+cltype = type_nitc__AMethPropdef.color;
+idtype = type_nitc__AMethPropdef.id;
 if(cltype >= var_npropdef->type->table_size) {
 var = 0;
 } else {
@@ -107,7 +107,7 @@ var = var_npropdef->type->type_table[cltype] == idtype;
 if (var){
 {
 { /* Inline parser_nodes#AMethPropdef#n_extern_code_block (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
-var3 = var_npropdef->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <var_npropdef:APropdef(AMethPropdef)> */
+var3 = var_npropdef->attrs[COLOR_nitc__parser_nodes__AMethPropdef___n_extern_code_block].val; /* _n_extern_code_block on <var_npropdef:APropdef(AMethPropdef)> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -122,7 +122,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var_code_block,((val*)NULL)) on <var_code_block:nullable AExternCodeBlock> */
 var_other = ((val*)NULL);
 {
-var7 = ((short int(*)(val* self, val* p0))(var_code_block->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_code_block, var_other); /* == on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/
+var7 = ((short int(*)(val* self, val* p0))(var_code_block->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_code_block, var_other); /* == on <var_code_block:nullable AExternCodeBlock(AExternCodeBlock)>*/
 }
 var8 = !var7;
 var5 = var8;
@@ -133,7 +133,7 @@ var4 = var5;
 }
 if (var4){
 {
-nit___nit__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_code_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
+nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_code_block); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
 }
 } else {
 }
@@ -142,7 +142,7 @@ nit___nit__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var_c
 RET_LABEL:;
 }
 /* method light_ffi_base#FFILanguageAssignationPhase#process_nclassdef for (self: FFILanguageAssignationPhase, AClassdef) */
-void nit___nit__FFILanguageAssignationPhase___nit__phase__Phase__process_nclassdef(val* self, val* p0) {
+void nitc___nitc__FFILanguageAssignationPhase___nitc__phase__Phase__process_nclassdef(val* self, val* p0) {
 val* var_nclassdef /* var nclassdef: AClassdef */;
 short int var /* : Bool */;
 short int var1 /* : Bool */;
@@ -160,8 +160,8 @@ val* var10 /* : nullable AExternCodeBlock */;
 val* var12 /* : nullable AExternCodeBlock */;
 var_nclassdef = p0;
 /* <var_nclassdef:AClassdef> isa AStdClassdef */
-cltype = type_nit__AStdClassdef.color;
-idtype = type_nit__AStdClassdef.id;
+cltype = type_nitc__AStdClassdef.color;
+idtype = type_nitc__AStdClassdef.id;
 if(cltype >= var_nclassdef->type->table_size) {
 var1 = 0;
 } else {
@@ -171,7 +171,7 @@ var_ = var1;
 if (var1){
 {
 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var4 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
+var4 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
 var2 = var4;
 RET_LABEL3:(void)0;
 }
@@ -185,7 +185,7 @@ if (0) {
 { /* Inline kernel#Object#!= (var2,((val*)NULL)) on <var2:nullable AExternCodeBlock> */
 var_other = ((val*)NULL);
 {
-var8 = ((short int(*)(val* self, val* p0))(var2->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var2, var_other); /* == on <var2:nullable AExternCodeBlock(AExternCodeBlock)>*/
+var8 = ((short int(*)(val* self, val* p0))(var2->class->vft[COLOR_core__kernel__Object___61d_61d]))(var2, var_other); /* == on <var2:nullable AExternCodeBlock(AExternCodeBlock)>*/
 }
 var9 = !var8;
 var6 = var9;
@@ -201,32 +201,32 @@ var = var_;
 if (var){
 {
 { /* Inline parser_nodes#AStdClassdef#n_extern_code_block (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var12 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
+var12 = var_nclassdef->attrs[COLOR_nitc__parser_nodes__AStdClassdef___n_extern_code_block].val; /* _n_extern_code_block on <var_nclassdef:AClassdef(AStdClassdef)> */
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 59);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 59);
 fatal_exit(1);
 }
 {
-nit___nit__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var10); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
+nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(self, var10); /* Direct call light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node on <self:FFILanguageAssignationPhase>*/
 }
 } else {
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#FFILanguageAssignationPhase#verify_foreign_code_on_node for (self: FFILanguageAssignationPhase, AExternCodeBlock) */
-void nit___nit__FFILanguageAssignationPhase___verify_foreign_code_on_node(val* self, val* p0) {
+void nitc___nitc__FFILanguageAssignationPhase___verify_foreign_code_on_node(val* self, val* p0) {
 val* var_n /* var n: AExternCodeBlock */;
 short int var_found /* var found: Bool */;
 val* var /* : Array[FFILanguage] */;
 val* var2 /* : Array[FFILanguage] */;
 val* var_ /* var : Array[FFILanguage] */;
-val* var3 /* : ArrayIterator[nullable Object] */;
-val* var_4 /* var : ArrayIterator[FFILanguage] */;
+val* var3 /* : IndexedIterator[nullable Object] */;
+val* var_4 /* var : IndexedIterator[FFILanguage] */;
 short int var5 /* : Bool */;
 val* var6 /* : nullable Object */;
 val* var_v /* var v: FFILanguage */;
@@ -241,7 +241,7 @@ val* var15 /* : Location */;
 static val* varonce;
 val* var16 /* : String */;
 char* var17 /* : NativeString */;
-val* var18 /* : FlatString */;
+val* var18 /* : String */;
 val* var19 /* : Message */;
 short int var21 /* : Bool */;
 val* var22 /* : ToolContext */;
@@ -251,16 +251,16 @@ val* var27 /* : Location */;
 static val* varonce28;
 val* var29 /* : String */;
 char* var30 /* : NativeString */;
-val* var31 /* : FlatString */;
+val* var31 /* : String */;
 val* var32 /* : Message */;
 var_n = p0;
 var_found = 0;
 {
 { /* Inline light_ffi_base#FFILanguageAssignationPhase#languages (self) on <self:FFILanguageAssignationPhase> */
-var2 = self->attrs[COLOR_nit__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
+var2 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <self:FFILanguageAssignationPhase> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 36);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
 fatal_exit(1);
 }
 var = var2;
@@ -269,20 +269,23 @@ RET_LABEL1:(void)0;
 }
 var_ = var;
 {
-var3 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
 var_4 = var3;
 for(;;) {
 {
-var5 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_4);
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[FFILanguage]>*/
 }
 if (var5){
+} else {
+goto BREAK_label;
+}
 {
-var6 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_4);
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[FFILanguage]>*/
 }
 var_v = var6;
 {
-var7 = nit___nit__CLanguage___nit__light_ffi_base__FFILanguage__identify_language(var_v, var_n);
+var7 = nitc___nitc__CLanguage___nitc__light_ffi_base__FFILanguage__identify_language(var_v, var_n);
 }
 var_identified = var7;
 if (var_identified){
@@ -295,10 +298,10 @@ var8 = var_9;
 if (var8){
 {
 { /* Inline phase#Phase#toolcontext (self) on <self:FFILanguageAssignationPhase> */
-var12 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
+var12 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
 fatal_exit(1);
 }
 var10 = var12;
@@ -307,10 +310,10 @@ RET_LABEL11:(void)0;
 }
 {
 { /* Inline parser_nodes#ANode#location (var_n) on <var_n:AExternCodeBlock> */
-var15 = var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
+var15 = var_n->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
 fatal_exit(1);
 }
 var13 = var15;
@@ -321,18 +324,18 @@ if (likely(varonce!=NULL)) {
 var16 = varonce;
 } else {
 var17 = "FFI Error: two languages identified as possible handlers.";
-var18 = standard___standard__NativeString___to_s_with_length(var17, 57l);
+var18 = core__flat___NativeString___to_s_full(var17, 57l, 57l);
 var16 = var18;
 varonce = var16;
 }
 {
-var19 = nit___nit__ToolContext___error(var10, var13, var16);
+var19 = nitc___nitc__ToolContext___error(var10, var13, var16);
 }
 } else {
 }
 {
 { /* Inline light_ffi_base#AExternCodeBlock#language= (var_n,var_v) on <var_n:AExternCodeBlock> */
-var_n->attrs[COLOR_nit__light_ffi_base__AExternCodeBlock___language].val = var_v; /* _language on <var_n:AExternCodeBlock> */
+var_n->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val = var_v; /* _language on <var_n:AExternCodeBlock> */
 RET_LABEL20:(void)0;
 }
 }
@@ -340,24 +343,21 @@ var_found = 1;
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[FFILanguage]>*/
-}
-} else {
-goto BREAK_label;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[FFILanguage]>*/
 }
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_4); /* Direct call array#ArrayIterator#finish on <var_4:ArrayIterator[FFILanguage]>*/
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[FFILanguage]>*/
 }
 var21 = !var_found;
 if (var21){
 {
 { /* Inline phase#Phase#toolcontext (self) on <self:FFILanguageAssignationPhase> */
-var24 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
+var24 = self->attrs[COLOR_nitc__phase__Phase___toolcontext].val; /* _toolcontext on <self:FFILanguageAssignationPhase> */
 if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__phase, 200);
 fatal_exit(1);
 }
 var22 = var24;
@@ -366,10 +366,10 @@ RET_LABEL23:(void)0;
 }
 {
 { /* Inline parser_nodes#ANode#location (var_n) on <var_n:AExternCodeBlock> */
-var27 = var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
+var27 = var_n->attrs[COLOR_nitc__parser_nodes__ANode___location].val; /* _location on <var_n:AExternCodeBlock> */
 if (unlikely(var27 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 24);
 fatal_exit(1);
 }
 var25 = var27;
@@ -380,25 +380,25 @@ if (likely(varonce28!=NULL)) {
 var29 = varonce28;
 } else {
 var30 = "FFI Error: unsupported language.";
-var31 = standard___standard__NativeString___to_s_with_length(var30, 32l);
+var31 = core__flat___NativeString___to_s_full(var30, 32l, 32l);
 var29 = var31;
 varonce28 = var29;
 }
 {
-var32 = nit___nit__ToolContext___error(var22, var25, var29);
+var32 = nitc___nitc__ToolContext___error(var22, var25, var29);
 }
 } else {
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#MModule#ffi_files for (self: MModule): Array[ExternFile] */
-val* nit__light_ffi_base___MModule___ffi_files(val* self) {
+val* nitc__light_ffi_base___MModule___ffi_files(val* self) {
 val* var /* : Array[ExternFile] */;
 val* var1 /* : Array[ExternFile] */;
-var1 = self->attrs[COLOR_nit__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
+var1 = self->attrs[COLOR_nitc__light_ffi_base__MModule___ffi_files].val; /* _ffi_files on <self:MModule> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_files");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 82);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 82);
 fatal_exit(1);
 }
 var = var1;
@@ -406,7 +406,7 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#AExternCodeBlock#language_name for (self: AExternCodeBlock): nullable String */
-val* nit__light_ffi_base___AExternCodeBlock___language_name(val* self) {
+val* nitc__light_ffi_base___AExternCodeBlock___language_name(val* self) {
 val* var /* : nullable String */;
 val* var1 /* : nullable AInLanguage */;
 val* var3 /* : nullable AInLanguage */;
@@ -422,7 +422,7 @@ val* var15 /* : TString */;
 val* var16 /* : String */;
 {
 { /* Inline parser_nodes#AExternCodeBlock#n_in_language (self) on <self:AExternCodeBlock> */
-var3 = self->attrs[COLOR_nit__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
+var3 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
 var1 = var3;
 RET_LABEL2:(void)0;
 }
@@ -456,26 +456,26 @@ goto RET_LABEL;
 }
 {
 { /* Inline parser_nodes#AExternCodeBlock#n_in_language (self) on <self:AExternCodeBlock> */
-var12 = self->attrs[COLOR_nit__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
+var12 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_in_language].val; /* _n_in_language on <self:AExternCodeBlock> */
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
 if (var10 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 90);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 90);
 fatal_exit(1);
 } else {
 { /* Inline parser_nodes#AInLanguage#n_string (var10) on <var10:nullable AInLanguage> */
 if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2911);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2849);
 fatal_exit(1);
 }
-var15 = var10->attrs[COLOR_nit__parser_nodes__AInLanguage___n_string].val; /* _n_string on <var10:nullable AInLanguage> */
+var15 = var10->attrs[COLOR_nitc__parser_nodes__AInLanguage___n_string].val; /* _n_string on <var10:nullable AInLanguage> */
 if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_string");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2911);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2849);
 fatal_exit(1);
 }
 var13 = var15;
@@ -483,7 +483,7 @@ RET_LABEL14:(void)0;
 }
 }
 {
-var16 = nit__light_ffi_base___TString___without_quotes(var13);
+var16 = nitc__light_ffi_base___TString___without_quotes(var13);
 }
 var = var16;
 goto RET_LABEL;
@@ -491,7 +491,7 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#AExternCodeBlock#language_name_lowered for (self: AExternCodeBlock): nullable String */
-val* nit__light_ffi_base___AExternCodeBlock___language_name_lowered(val* self) {
+val* nitc__light_ffi_base___AExternCodeBlock___language_name_lowered(val* self) {
 val* var /* : nullable String */;
 val* var1 /* : nullable String */;
 short int var2 /* : Bool */;
@@ -499,7 +499,7 @@ short int var3 /* : Bool */;
 val* var4 /* : nullable String */;
 val* var5 /* : String */;
 {
-var1 = nit__light_ffi_base___AExternCodeBlock___language_name(self);
+var1 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
 }
 if (var1 == NULL) {
 var2 = 1; /* is null */
@@ -507,7 +507,7 @@ var2 = 1; /* is null */
 var2 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var3 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var1, ((val*)NULL)); /* == on <var1:nullable String>*/
+var3 = ((short int(*)(val* self, val* p0))(var1->class->vft[COLOR_core__kernel__Object___61d_61d]))(var1, ((val*)NULL)); /* == on <var1:nullable String>*/
 var2 = var3;
 }
 if (var2){
@@ -516,14 +516,14 @@ goto RET_LABEL;
 } else {
 }
 {
-var4 = nit__light_ffi_base___AExternCodeBlock___language_name(self);
+var4 = nitc__light_ffi_base___AExternCodeBlock___language_name(self);
 }
 if (var4 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 96);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 96);
 fatal_exit(1);
 } else {
-var5 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__String__to_lower]))(var4); /* to_lower on <var4:nullable String>*/
+var5 = ((val*(*)(val* self))(var4->class->vft[COLOR_core__abstract_text__String__to_lower]))(var4); /* to_lower on <var4:nullable String>*/
 }
 var = var5;
 goto RET_LABEL;
@@ -531,17 +531,17 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#AExternCodeBlock#code for (self: AExternCodeBlock): String */
-val* nit__light_ffi_base___AExternCodeBlock___code(val* self) {
+val* nitc__light_ffi_base___AExternCodeBlock___code(val* self) {
 val* var /* : String */;
 val* var1 /* : TExternCodeSegment */;
 val* var3 /* : TExternCodeSegment */;
 val* var4 /* : String */;
 {
 { /* Inline parser_nodes#AExternCodeBlock#n_extern_code_segment (self) on <self:AExternCodeBlock> */
-var3 = self->attrs[COLOR_nit__parser_nodes__AExternCodeBlock___n_extern_code_segment].val; /* _n_extern_code_segment on <self:AExternCodeBlock> */
+var3 = self->attrs[COLOR_nitc__parser_nodes__AExternCodeBlock___n_extern_code_segment].val; /* _n_extern_code_segment on <self:AExternCodeBlock> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_extern_code_segment");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2922);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__parser_nodes, 2860);
 fatal_exit(1);
 }
 var1 = var3;
@@ -549,7 +549,7 @@ RET_LABEL2:(void)0;
 }
 }
 {
-var4 = nit__light_ffi_base___TExternCodeSegment___without_guard(var1);
+var4 = nitc__light_ffi_base___TExternCodeSegment___without_guard(var1);
 }
 var = var4;
 goto RET_LABEL;
@@ -557,27 +557,27 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#AExternCodeBlock#language for (self: AExternCodeBlock): nullable FFILanguage */
-val* nit__light_ffi_base___AExternCodeBlock___language(val* self) {
+val* nitc__light_ffi_base___AExternCodeBlock___language(val* self) {
 val* var /* : nullable FFILanguage */;
 val* var1 /* : nullable FFILanguage */;
-var1 = self->attrs[COLOR_nit__light_ffi_base__AExternCodeBlock___language].val; /* _language on <self:AExternCodeBlock> */
+var1 = self->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val; /* _language on <self:AExternCodeBlock> */
 var = var1;
 RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#AExternCodeBlock#language= for (self: AExternCodeBlock, nullable FFILanguage) */
-void nit__light_ffi_base___AExternCodeBlock___language_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__light_ffi_base__AExternCodeBlock___language].val = p0; /* _language on <self:AExternCodeBlock> */
+void nitc__light_ffi_base___AExternCodeBlock___language_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__light_ffi_base__AExternCodeBlock___language].val = p0; /* _language on <self:AExternCodeBlock> */
 RET_LABEL:;
 }
 /* method light_ffi_base#FFILanguage#ffi_language_assignation_phase for (self: FFILanguage): FFILanguageAssignationPhase */
-val* nit___nit__FFILanguage___ffi_language_assignation_phase(val* self) {
+val* nitc___nitc__FFILanguage___ffi_language_assignation_phase(val* self) {
 val* var /* : FFILanguageAssignationPhase */;
 val* var1 /* : FFILanguageAssignationPhase */;
-var1 = self->attrs[COLOR_nit__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
+var1 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 109);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 109);
 fatal_exit(1);
 }
 var = var1;
@@ -585,22 +585,25 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#FFILanguage#ffi_language_assignation_phase= for (self: FFILanguage, FFILanguageAssignationPhase) */
-void nit___nit__FFILanguage___ffi_language_assignation_phase_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val = p0; /* _ffi_language_assignation_phase on <self:FFILanguage> */
+void nitc___nitc__FFILanguage___ffi_language_assignation_phase_61d(val* self, val* p0) {
+self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val = p0; /* _ffi_language_assignation_phase on <self:FFILanguage> */
 RET_LABEL:;
 }
 /* method light_ffi_base#FFILanguage#init for (self: FFILanguage) */
-void nit___nit__FFILanguage___standard__kernel__Object__init(val* self) {
+void nitc___nitc__FFILanguage___core__kernel__Object__init(val* self) {
 val* var /* : FFILanguageAssignationPhase */;
 val* var2 /* : FFILanguageAssignationPhase */;
 val* var3 /* : Array[FFILanguage] */;
 val* var5 /* : Array[FFILanguage] */;
 {
+((void(*)(val* self))(self->class->vft[COLOR_nitc___nitc__FFILanguage___core__kernel__Object__init]))(self); /* init on <self:FFILanguage>*/
+}
+{
 { /* Inline light_ffi_base#FFILanguage#ffi_language_assignation_phase (self) on <self:FFILanguage> */
-var2 = self->attrs[COLOR_nit__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
+var2 = self->attrs[COLOR_nitc__light_ffi_base__FFILanguage___ffi_language_assignation_phase].val; /* _ffi_language_assignation_phase on <self:FFILanguage> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ffi_language_assignation_phase");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 109);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 109);
 fatal_exit(1);
 }
 var = var2;
@@ -609,10 +612,10 @@ RET_LABEL1:(void)0;
 }
 {
 { /* Inline light_ffi_base#FFILanguageAssignationPhase#languages (var) on <var:FFILanguageAssignationPhase> */
-var5 = var->attrs[COLOR_nit__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <var:FFILanguageAssignationPhase> */
+var5 = var->attrs[COLOR_nitc__light_ffi_base__FFILanguageAssignationPhase___languages].val; /* _languages on <var:FFILanguageAssignationPhase> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _languages");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 36);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 36);
 fatal_exit(1);
 }
 var3 = var5;
@@ -620,12 +623,12 @@ RET_LABEL4:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var3, self); /* Direct call array#Array#add on <var3:Array[FFILanguage]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var3, self); /* Direct call array#Array#add on <var3:Array[FFILanguage]>*/
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#TString#without_quotes for (self: TString): String */
-val* nit__light_ffi_base___TString___without_quotes(val* self) {
+val* nitc__light_ffi_base___TString___without_quotes(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
 long var2 /* : Int */;
@@ -646,10 +649,10 @@ const char* var_class_name15;
 long var16 /* : Int */;
 val* var17 /* : Text */;
 {
-var1 = nit__lexer_work___Token___text(self);
+var1 = nitc__lexer_work___Token___text(self);
 }
 {
-var2 = ((long(*)(val* self))(var1->class->vft[COLOR_standard__string__Text__length]))(var1); /* length on <var1:String>*/
+var2 = ((long(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__Text__length]))(var1); /* length on <var1:String>*/
 }
 {
 { /* Inline kernel#Int#>= (var2,2l) on <var2:Int> */
@@ -657,9 +660,9 @@ var2 = ((long(*)(val* self))(var1->class->vft[COLOR_standard__string__Text__leng
 /* <2l:Int> isa OTHER */
 var5 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var5)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
 fatal_exit(1);
 }
 var6 = var2 >= 2l;
@@ -670,17 +673,17 @@ RET_LABEL4:(void)0;
 }
 if (unlikely(!var3)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 142);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 142);
 fatal_exit(1);
 }
 {
-var7 = nit__lexer_work___Token___text(self);
+var7 = nitc__lexer_work___Token___text(self);
 }
 {
-var8 = nit__lexer_work___Token___text(self);
+var8 = nitc__lexer_work___Token___text(self);
 }
 {
-var9 = ((long(*)(val* self))(var8->class->vft[COLOR_standard__string__Text__length]))(var8); /* length on <var8:String>*/
+var9 = ((long(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__Text__length]))(var8); /* length on <var8:String>*/
 }
 {
 { /* Inline kernel#Int#- (var9,2l) on <var9:Int> */
@@ -688,9 +691,9 @@ var9 = ((long(*)(val* self))(var8->class->vft[COLOR_standard__string__Text__leng
 /* <2l:Int> isa OTHER */
 var12 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var12)) {
-var_class_name15 = type_standard__Int.name;
+var_class_name15 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
 fatal_exit(1);
 }
 var16 = var9 - 2l;
@@ -700,7 +703,7 @@ RET_LABEL11:(void)0;
 }
 }
 {
-var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_standard__string__Text__substring]))(var7, 1l, var10); /* substring on <var7:String>*/
+var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_core__abstract_text__Text__substring]))(var7, 1l, var10); /* substring on <var7:String>*/
 }
 var = var17;
 goto RET_LABEL;
@@ -708,7 +711,7 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#TExternCodeSegment#without_guard for (self: TExternCodeSegment): String */
-val* nit__light_ffi_base___TExternCodeSegment___without_guard(val* self) {
+val* nitc__light_ffi_base___TExternCodeSegment___without_guard(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
 long var2 /* : Int */;
@@ -729,10 +732,10 @@ const char* var_class_name15;
 long var16 /* : Int */;
 val* var17 /* : Text */;
 {
-var1 = nit__lexer_work___Token___text(self);
+var1 = nitc__lexer_work___Token___text(self);
 }
 {
-var2 = ((long(*)(val* self))(var1->class->vft[COLOR_standard__string__Text__length]))(var1); /* length on <var1:String>*/
+var2 = ((long(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__Text__length]))(var1); /* length on <var1:String>*/
 }
 {
 { /* Inline kernel#Int#>= (var2,4l) on <var2:Int> */
@@ -740,9 +743,9 @@ var2 = ((long(*)(val* self))(var1->class->vft[COLOR_standard__string__Text__leng
 /* <4l:Int> isa OTHER */
 var5 = 1; /* easy <4l:Int> isa OTHER*/
 if (unlikely(!var5)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 535);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 729);
 fatal_exit(1);
 }
 var6 = var2 >= 4l;
@@ -753,17 +756,17 @@ RET_LABEL4:(void)0;
 }
 if (unlikely(!var3)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__light_ffi_base, 151);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__light_ffi_base, 151);
 fatal_exit(1);
 }
 {
-var7 = nit__lexer_work___Token___text(self);
+var7 = nitc__lexer_work___Token___text(self);
 }
 {
-var8 = nit__lexer_work___Token___text(self);
+var8 = nitc__lexer_work___Token___text(self);
 }
 {
-var9 = ((long(*)(val* self))(var8->class->vft[COLOR_standard__string__Text__length]))(var8); /* length on <var8:String>*/
+var9 = ((long(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__Text__length]))(var8); /* length on <var8:String>*/
 }
 {
 { /* Inline kernel#Int#- (var9,4l) on <var9:Int> */
@@ -771,9 +774,9 @@ var9 = ((long(*)(val* self))(var8->class->vft[COLOR_standard__string__Text__leng
 /* <4l:Int> isa OTHER */
 var12 = 1; /* easy <4l:Int> isa OTHER*/
 if (unlikely(!var12)) {
-var_class_name15 = type_standard__Int.name;
+var_class_name15 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
 fatal_exit(1);
 }
 var16 = var9 - 4l;
@@ -783,7 +786,7 @@ RET_LABEL11:(void)0;
 }
 }
 {
-var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_standard__string__Text__substring]))(var7, 2l, var10); /* substring on <var7:String>*/
+var17 = ((val*(*)(val* self, long p0, long p1))(var7->class->vft[COLOR_core__abstract_text__Text__substring]))(var7, 2l, var10); /* substring on <var7:String>*/
 }
 var = var17;
 goto RET_LABEL;
@@ -791,7 +794,7 @@ RET_LABEL:;
 return var;
 }
 /* method light_ffi_base#CCompilationUnit#write_as_impl for (self: CCompilationUnit, MModule, String) */
-void nit__light_ffi_base___CCompilationUnit___write_as_impl(val* self, val* p0, val* p1) {
+void nitc__light_ffi_base___CCompilationUnit___write_as_impl(val* self, val* p0, val* p1) {
 val* var_mmodule /* var mmodule: MModule */;
 val* var_compdir /* var compdir: String */;
 val* var /* : NativeArray[String] */;
@@ -799,7 +802,7 @@ static val* varonce;
 static val* varonce1;
 val* var2 /* : String */;
 char* var3 /* : NativeString */;
-val* var4 /* : FlatString */;
+val* var4 /* : String */;
 val* var5 /* : String */;
 val* var6 /* : String */;
 val* var_base_name /* var base_name: String */;
@@ -808,7 +811,7 @@ static val* varonce7;
 static val* varonce9;
 val* var10 /* : String */;
 char* var11 /* : NativeString */;
-val* var12 /* : FlatString */;
+val* var12 /* : String */;
 val* var13 /* : String */;
 val* var_h_file /* var h_file: String */;
 val* var15 /* : NativeArray[String] */;
@@ -816,7 +819,7 @@ static val* varonce14;
 static val* varonce16;
 val* var17 /* : String */;
 char* var18 /* : NativeString */;
-val* var19 /* : FlatString */;
+val* var19 /* : String */;
 val* var20 /* : String */;
 val* var21 /* : String */;
 val* var22 /* : String */;
@@ -826,20 +829,20 @@ static val* varonce23;
 static val* varonce25;
 val* var26 /* : String */;
 char* var27 /* : NativeString */;
-val* var28 /* : FlatString */;
+val* var28 /* : String */;
 val* var29 /* : String */;
 val* var30 /* : Array[String] */;
 val* var_ /* var : Array[String] */;
 static val* varonce31;
 val* var32 /* : String */;
 char* var33 /* : NativeString */;
-val* var34 /* : FlatString */;
+val* var34 /* : String */;
 val* var36 /* : NativeArray[String] */;
 static val* varonce35;
 static val* varonce37;
 val* var38 /* : String */;
 char* var39 /* : NativeString */;
-val* var40 /* : FlatString */;
+val* var40 /* : String */;
 val* var41 /* : String */;
 val* var_c_file /* var c_file: String */;
 val* var43 /* : NativeArray[String] */;
@@ -847,32 +850,32 @@ static val* varonce42;
 static val* varonce44;
 val* var45 /* : String */;
 char* var46 /* : NativeString */;
-val* var47 /* : FlatString */;
+val* var47 /* : String */;
 val* var48 /* : String */;
 val* var49 /* : Array[String] */;
 val* var_50 /* var : Array[String] */;
 static val* varonce51;
 val* var52 /* : String */;
 char* var53 /* : NativeString */;
-val* var54 /* : FlatString */;
+val* var54 /* : String */;
 static val* varonce55;
 val* var56 /* : String */;
 char* var57 /* : NativeString */;
-val* var58 /* : FlatString */;
+val* var58 /* : String */;
 static val* varonce59;
 val* var60 /* : String */;
 char* var61 /* : NativeString */;
-val* var62 /* : FlatString */;
+val* var62 /* : String */;
 val* var64 /* : NativeArray[String] */;
 static val* varonce63;
 static val* varonce65;
 val* var66 /* : String */;
 char* var67 /* : NativeString */;
-val* var68 /* : FlatString */;
+val* var68 /* : String */;
 static val* varonce69;
 val* var70 /* : String */;
 char* var71 /* : NativeString */;
-val* var72 /* : FlatString */;
+val* var72 /* : String */;
 val* var73 /* : String */;
 val* var74 /* : Array[String] */;
 val* var76 /* : Array[String] */;
@@ -881,243 +884,243 @@ static val* varonce77;
 static val* varonce79;
 val* var80 /* : String */;
 char* var81 /* : NativeString */;
-val* var82 /* : FlatString */;
+val* var82 /* : String */;
 val* var83 /* : String */;
 var_mmodule = p0;
 var_compdir = p1;
 if (unlikely(varonce==NULL)) {
-var = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+var = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
 if (likely(varonce1!=NULL)) {
 var2 = varonce1;
 } else {
 var3 = "._ffi";
-var4 = standard___standard__NativeString___to_s_with_length(var3, 5l);
+var4 = core__flat___NativeString___to_s_full(var3, 5l, 5l);
 var2 = var4;
 varonce1 = var2;
 }
-((struct instance_standard__NativeArray*)var)->values[1]=var2;
+((struct instance_core__NativeArray*)var)->values[1]=var2;
 } else {
 var = varonce;
 varonce = NULL;
 }
 {
-var5 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_mmodule);
+var5 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
 }
-((struct instance_standard__NativeArray*)var)->values[0]=var5;
+((struct instance_core__NativeArray*)var)->values[0]=var5;
 {
-var6 = ((val*(*)(val* self))(var->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
+var6 = ((val*(*)(val* self))(var->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
 }
 varonce = var;
 var_base_name = var6;
 if (unlikely(varonce7==NULL)) {
-var8 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+var8 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
 if (likely(varonce9!=NULL)) {
 var10 = varonce9;
 } else {
 var11 = ".h";
-var12 = standard___standard__NativeString___to_s_with_length(var11, 2l);
+var12 = core__flat___NativeString___to_s_full(var11, 2l, 2l);
 var10 = var12;
 varonce9 = var10;
 }
-((struct instance_standard__NativeArray*)var8)->values[1]=var10;
+((struct instance_core__NativeArray*)var8)->values[1]=var10;
 } else {
 var8 = varonce7;
 varonce7 = NULL;
 }
-((struct instance_standard__NativeArray*)var8)->values[0]=var_base_name;
+((struct instance_core__NativeArray*)var8)->values[0]=var_base_name;
 {
-var13 = ((val*(*)(val* self))(var8->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
+var13 = ((val*(*)(val* self))(var8->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var8); /* native_to_s on <var8:NativeArray[String]>*/
 }
 varonce7 = var8;
 var_h_file = var13;
 if (unlikely(varonce14==NULL)) {
-var15 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+var15 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
 if (likely(varonce16!=NULL)) {
 var17 = varonce16;
 } else {
 var18 = "_NIT_H";
-var19 = standard___standard__NativeString___to_s_with_length(var18, 6l);
+var19 = core__flat___NativeString___to_s_full(var18, 6l, 6l);
 var17 = var19;
 varonce16 = var17;
 }
-((struct instance_standard__NativeArray*)var15)->values[1]=var17;
+((struct instance_core__NativeArray*)var15)->values[1]=var17;
 } else {
 var15 = varonce14;
 varonce14 = NULL;
 }
 {
-var20 = nit___nit__MModule___nit__model_base__MEntity__c_name(var_mmodule);
+var20 = nitc___nitc__MModule___nitc__model_base__MEntity__c_name(var_mmodule);
 }
 {
-var21 = ((val*(*)(val* self))(var20->class->vft[COLOR_standard__string__String__to_upper]))(var20); /* to_upper on <var20:String>*/
+var21 = ((val*(*)(val* self))(var20->class->vft[COLOR_core__abstract_text__String__to_upper]))(var20); /* to_upper on <var20:String>*/
 }
-((struct instance_standard__NativeArray*)var15)->values[0]=var21;
+((struct instance_core__NativeArray*)var15)->values[0]=var21;
 {
-var22 = ((val*(*)(val* self))(var15->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
+var22 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
 }
 varonce14 = var15;
 var_guard = var22;
 if (unlikely(varonce23==NULL)) {
-var24 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var24 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce25!=NULL)) {
 var26 = varonce25;
 } else {
 var27 = "/";
-var28 = standard___standard__NativeString___to_s_with_length(var27, 1l);
+var28 = core__flat___NativeString___to_s_full(var27, 1l, 1l);
 var26 = var28;
 varonce25 = var26;
 }
-((struct instance_standard__NativeArray*)var24)->values[1]=var26;
+((struct instance_core__NativeArray*)var24)->values[1]=var26;
 } else {
 var24 = varonce23;
 varonce23 = NULL;
 }
-((struct instance_standard__NativeArray*)var24)->values[0]=var_compdir;
-((struct instance_standard__NativeArray*)var24)->values[2]=var_h_file;
+((struct instance_core__NativeArray*)var24)->values[0]=var_compdir;
+((struct instance_core__NativeArray*)var24)->values[2]=var_h_file;
 {
-var29 = ((val*(*)(val* self))(var24->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var24); /* native_to_s on <var24:NativeArray[String]>*/
+var29 = ((val*(*)(val* self))(var24->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var24); /* native_to_s on <var24:NativeArray[String]>*/
 }
 varonce23 = var24;
-var30 = NEW_standard__Array(&type_standard__Array__standard__String);
+var30 = NEW_core__Array(&type_core__Array__core__String);
 {
-standard___standard__Array___with_capacity(var30, 1l); /* Direct call array#Array#with_capacity on <var30:Array[String]>*/
+core___core__Array___with_capacity(var30, 1l); /* Direct call array#Array#with_capacity on <var30:Array[String]>*/
 }
 var_ = var30;
 if (likely(varonce31!=NULL)) {
 var32 = varonce31;
 } else {
 var33 = "<stdint.h>";
-var34 = standard___standard__NativeString___to_s_with_length(var33, 10l);
+var34 = core__flat___NativeString___to_s_full(var33, 10l, 10l);
 var32 = var34;
 varonce31 = var32;
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var32); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var32); /* Direct call array#AbstractArray#push on <var_:Array[String]>*/
 }
 {
-nit__light_ffi_base___CCompilationUnit___write_header_to_file(self, var_mmodule, var29, var_, var_guard); /* Direct call light_ffi_base#CCompilationUnit#write_header_to_file on <self:CCompilationUnit>*/
+nitc__light_ffi_base___CCompilationUnit___write_header_to_file(self, var_mmodule, var29, var_, var_guard); /* Direct call light_ffi_base#CCompilationUnit#write_header_to_file on <self:CCompilationUnit>*/
 }
 if (unlikely(varonce35==NULL)) {
-var36 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+var36 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
 if (likely(varonce37!=NULL)) {
 var38 = varonce37;
 } else {
 var39 = ".c";
-var40 = standard___standard__NativeString___to_s_with_length(var39, 2l);
+var40 = core__flat___NativeString___to_s_full(var39, 2l, 2l);
 var38 = var40;
 varonce37 = var38;
 }
-((struct instance_standard__NativeArray*)var36)->values[1]=var38;
+((struct instance_core__NativeArray*)var36)->values[1]=var38;
 } else {
 var36 = varonce35;
 varonce35 = NULL;
 }
-((struct instance_standard__NativeArray*)var36)->values[0]=var_base_name;
+((struct instance_core__NativeArray*)var36)->values[0]=var_base_name;
 {
-var41 = ((val*(*)(val* self))(var36->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var36); /* native_to_s on <var36:NativeArray[String]>*/
+var41 = ((val*(*)(val* self))(var36->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var36); /* native_to_s on <var36:NativeArray[String]>*/
 }
 varonce35 = var36;
 var_c_file = var41;
 if (unlikely(varonce42==NULL)) {
-var43 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var43 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce44!=NULL)) {
 var45 = varonce44;
 } else {
 var46 = "/";
-var47 = standard___standard__NativeString___to_s_with_length(var46, 1l);
+var47 = core__flat___NativeString___to_s_full(var46, 1l, 1l);
 var45 = var47;
 varonce44 = var45;
 }
-((struct instance_standard__NativeArray*)var43)->values[1]=var45;
+((struct instance_core__NativeArray*)var43)->values[1]=var45;
 } else {
 var43 = varonce42;
 varonce42 = NULL;
 }
-((struct instance_standard__NativeArray*)var43)->values[0]=var_compdir;
-((struct instance_standard__NativeArray*)var43)->values[2]=var_c_file;
+((struct instance_core__NativeArray*)var43)->values[0]=var_compdir;
+((struct instance_core__NativeArray*)var43)->values[2]=var_c_file;
 {
-var48 = ((val*(*)(val* self))(var43->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var43); /* native_to_s on <var43:NativeArray[String]>*/
+var48 = ((val*(*)(val* self))(var43->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var43); /* native_to_s on <var43:NativeArray[String]>*/
 }
 varonce42 = var43;
-var49 = NEW_standard__Array(&type_standard__Array__standard__String);
+var49 = NEW_core__Array(&type_core__Array__core__String);
 {
-standard___standard__Array___with_capacity(var49, 4l); /* Direct call array#Array#with_capacity on <var49:Array[String]>*/
+core___core__Array___with_capacity(var49, 4l); /* Direct call array#Array#with_capacity on <var49:Array[String]>*/
 }
 var_50 = var49;
 if (likely(varonce51!=NULL)) {
 var52 = varonce51;
 } else {
 var53 = "<stdlib.h>";
-var54 = standard___standard__NativeString___to_s_with_length(var53, 10l);
+var54 = core__flat___NativeString___to_s_full(var53, 10l, 10l);
 var52 = var54;
 varonce51 = var52;
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_50, var52); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var52); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
 }
 if (likely(varonce55!=NULL)) {
 var56 = varonce55;
 } else {
 var57 = "<stdio.h>";
-var58 = standard___standard__NativeString___to_s_with_length(var57, 9l);
+var58 = core__flat___NativeString___to_s_full(var57, 9l, 9l);
 var56 = var58;
 varonce55 = var56;
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_50, var56); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var56); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
 }
 if (likely(varonce59!=NULL)) {
 var60 = varonce59;
 } else {
 var61 = "<stdint.h>";
-var62 = standard___standard__NativeString___to_s_with_length(var61, 10l);
+var62 = core__flat___NativeString___to_s_full(var61, 10l, 10l);
 var60 = var62;
 varonce59 = var60;
 }
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_50, var60); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var60); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
 }
 if (unlikely(varonce63==NULL)) {
-var64 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var64 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce65!=NULL)) {
 var66 = varonce65;
 } else {
 var67 = "\"";
-var68 = standard___standard__NativeString___to_s_with_length(var67, 1l);
+var68 = core__flat___NativeString___to_s_full(var67, 1l, 1l);
 var66 = var68;
 varonce65 = var66;
 }
-((struct instance_standard__NativeArray*)var64)->values[0]=var66;
+((struct instance_core__NativeArray*)var64)->values[0]=var66;
 if (likely(varonce69!=NULL)) {
 var70 = varonce69;
 } else {
 var71 = "\"";
-var72 = standard___standard__NativeString___to_s_with_length(var71, 1l);
+var72 = core__flat___NativeString___to_s_full(var71, 1l, 1l);
 var70 = var72;
 varonce69 = var70;
 }
-((struct instance_standard__NativeArray*)var64)->values[2]=var70;
+((struct instance_core__NativeArray*)var64)->values[2]=var70;
 } else {
 var64 = varonce63;
 varonce63 = NULL;
 }
-((struct instance_standard__NativeArray*)var64)->values[1]=var_h_file;
+((struct instance_core__NativeArray*)var64)->values[1]=var_h_file;
 {
-var73 = ((val*(*)(val* self))(var64->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var64); /* native_to_s on <var64:NativeArray[String]>*/
+var73 = ((val*(*)(val* self))(var64->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var64); /* native_to_s on <var64:NativeArray[String]>*/
 }
 varonce63 = var64;
 {
-standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_50, var73); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
+core___core__AbstractArray___core__abstract_collection__Sequence__push(var_50, var73); /* Direct call array#AbstractArray#push on <var_50:Array[String]>*/
 }
 {
-nit__light_ffi_base___CCompilationUnit___write_body_to_file(self, var_mmodule, var48, var_50); /* Direct call light_ffi_base#CCompilationUnit#write_body_to_file on <self:CCompilationUnit>*/
+nitc__light_ffi_base___CCompilationUnit___write_body_to_file(self, var_mmodule, var48, var_50); /* Direct call light_ffi_base#CCompilationUnit#write_body_to_file on <self:CCompilationUnit>*/
 }
 {
 { /* Inline c_tools#CCompilationUnit#files (self) on <self:CCompilationUnit> */
-var76 = self->attrs[COLOR_nit__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
+var76 = self->attrs[COLOR_nitc__c_tools__CCompilationUnit___files].val; /* _files on <self:CCompilationUnit> */
 if (unlikely(var76 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _files");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__c_tools, 47);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__c_tools, 47);
 fatal_exit(1);
 }
 var74 = var76;
@@ -1125,33 +1128,33 @@ RET_LABEL75:(void)0;
 }
 }
 if (unlikely(varonce77==NULL)) {
-var78 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var78 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce79!=NULL)) {
 var80 = varonce79;
 } else {
 var81 = "/";
-var82 = standard___standard__NativeString___to_s_with_length(var81, 1l);
+var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
 var80 = var82;
 varonce79 = var80;
 }
-((struct instance_standard__NativeArray*)var78)->values[1]=var80;
+((struct instance_core__NativeArray*)var78)->values[1]=var80;
 } else {
 var78 = varonce77;
 varonce77 = NULL;
 }
-((struct instance_standard__NativeArray*)var78)->values[0]=var_compdir;
-((struct instance_standard__NativeArray*)var78)->values[2]=var_c_file;
+((struct instance_core__NativeArray*)var78)->values[0]=var_compdir;
+((struct instance_core__NativeArray*)var78)->values[2]=var_c_file;
 {
-var83 = ((val*(*)(val* self))(var78->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
+var83 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
 }
 varonce77 = var78;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var74, var83); /* Direct call array#Array#add on <var74:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var74, var83); /* Direct call array#Array#add on <var74:Array[String]>*/
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#CCompilationUnit#write_header_to_file for (self: CCompilationUnit, MModule, String, Array[String], String) */
-void nit__light_ffi_base___CCompilationUnit___write_header_to_file(val* self, val* p0, val* p1, val* p2, val* p3) {
+void nitc__light_ffi_base___CCompilationUnit___write_header_to_file(val* self, val* p0, val* p1, val* p2, val* p3) {
 val* var_mmodule /* var mmodule: MModule */;
 val* var_file /* var file: String */;
 val* var_includes /* var includes: Array[String] */;
@@ -1163,11 +1166,11 @@ static val* varonce;
 static val* varonce2;
 val* var3 /* : String */;
 char* var4 /* : NativeString */;
-val* var5 /* : FlatString */;
+val* var5 /* : String */;
 static val* varonce6;
 val* var7 /* : String */;
 char* var8 /* : NativeString */;
-val* var9 /* : FlatString */;
+val* var9 /* : String */;
 val* var10 /* : String */;
 val* var12 /* : String */;
 val* var13 /* : String */;
@@ -1177,26 +1180,26 @@ static val* varonce14;
 static val* varonce16;
 val* var17 /* : String */;
 char* var18 /* : NativeString */;
-val* var19 /* : FlatString */;
+val* var19 /* : String */;
 static val* varonce20;
 val* var21 /* : String */;
 char* var22 /* : NativeString */;
-val* var23 /* : FlatString */;
+val* var23 /* : String */;
 val* var24 /* : String */;
 val* var26 /* : NativeArray[String] */;
 static val* varonce25;
 static val* varonce27;
 val* var28 /* : String */;
 char* var29 /* : NativeString */;
-val* var30 /* : FlatString */;
+val* var30 /* : String */;
 static val* varonce31;
 val* var32 /* : String */;
 char* var33 /* : NativeString */;
-val* var34 /* : FlatString */;
+val* var34 /* : String */;
 val* var35 /* : String */;
 val* var_ /* var : Array[String] */;
-val* var36 /* : ArrayIterator[nullable Object] */;
-val* var_37 /* var : ArrayIterator[String] */;
+val* var36 /* : IndexedIterator[nullable Object] */;
+val* var_37 /* var : IndexedIterator[String] */;
 short int var38 /* : Bool */;
 val* var39 /* : nullable Object */;
 val* var_incl /* var incl: String */;
@@ -1205,212 +1208,212 @@ static val* varonce40;
 static val* varonce42;
 val* var43 /* : String */;
 char* var44 /* : NativeString */;
-val* var45 /* : FlatString */;
+val* var45 /* : String */;
 static val* varonce46;
 val* var47 /* : String */;
 char* var48 /* : NativeString */;
-val* var49 /* : FlatString */;
+val* var49 /* : String */;
 val* var50 /* : String */;
 static val* varonce51;
 val* var52 /* : String */;
 char* var53 /* : NativeString */;
-val* var54 /* : FlatString */;
+val* var54 /* : String */;
 var_mmodule = p0;
 var_file = p1;
 var_includes = p2;
 var_guard = p3;
-var = NEW_standard__FileWriter(&type_standard__FileWriter);
+var = NEW_core__FileWriter(&type_core__FileWriter);
 {
-standard___standard__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
+core___core__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
 }
 var_stream = var;
 if (unlikely(varonce==NULL)) {
-var1 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var1 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce2!=NULL)) {
 var3 = varonce2;
 } else {
 var4 = "/*\n\tExtern implementation of Nit module ";
-var5 = standard___standard__NativeString___to_s_with_length(var4, 40l);
+var5 = core__flat___NativeString___to_s_full(var4, 40l, 40l);
 var3 = var5;
 varonce2 = var3;
 }
-((struct instance_standard__NativeArray*)var1)->values[0]=var3;
+((struct instance_core__NativeArray*)var1)->values[0]=var3;
 if (likely(varonce6!=NULL)) {
 var7 = varonce6;
 } else {
 var8 = "\n*/\n";
-var9 = standard___standard__NativeString___to_s_with_length(var8, 4l);
+var9 = core__flat___NativeString___to_s_full(var8, 4l, 4l);
 var7 = var9;
 varonce6 = var7;
 }
-((struct instance_standard__NativeArray*)var1)->values[2]=var7;
+((struct instance_core__NativeArray*)var1)->values[2]=var7;
 } else {
 var1 = varonce;
 varonce = NULL;
 }
 {
 { /* Inline mmodule#MModule#name (var_mmodule) on <var_mmodule:MModule> */
-var12 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
+var12 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 87);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 95);
 fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
-((struct instance_standard__NativeArray*)var1)->values[1]=var10;
+((struct instance_core__NativeArray*)var1)->values[1]=var10;
 {
-var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
+var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
 }
 varonce = var1;
 var_module_info = var13;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 if (unlikely(varonce14==NULL)) {
-var15 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var15 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce16!=NULL)) {
 var17 = varonce16;
 } else {
 var18 = "#ifndef ";
-var19 = standard___standard__NativeString___to_s_with_length(var18, 8l);
+var19 = core__flat___NativeString___to_s_full(var18, 8l, 8l);
 var17 = var19;
 varonce16 = var17;
 }
-((struct instance_standard__NativeArray*)var15)->values[0]=var17;
+((struct instance_core__NativeArray*)var15)->values[0]=var17;
 if (likely(varonce20!=NULL)) {
 var21 = varonce20;
 } else {
 var22 = "\n";
-var23 = standard___standard__NativeString___to_s_with_length(var22, 1l);
+var23 = core__flat___NativeString___to_s_full(var22, 1l, 1l);
 var21 = var23;
 varonce20 = var21;
 }
-((struct instance_standard__NativeArray*)var15)->values[2]=var21;
+((struct instance_core__NativeArray*)var15)->values[2]=var21;
 } else {
 var15 = varonce14;
 varonce14 = NULL;
 }
-((struct instance_standard__NativeArray*)var15)->values[1]=var_guard;
+((struct instance_core__NativeArray*)var15)->values[1]=var_guard;
 {
-var24 = ((val*(*)(val* self))(var15->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
+var24 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
 }
 varonce14 = var15;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var24); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var24); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 if (unlikely(varonce25==NULL)) {
-var26 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var26 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce27!=NULL)) {
 var28 = varonce27;
 } else {
 var29 = "#define ";
-var30 = standard___standard__NativeString___to_s_with_length(var29, 8l);
+var30 = core__flat___NativeString___to_s_full(var29, 8l, 8l);
 var28 = var30;
 varonce27 = var28;
 }
-((struct instance_standard__NativeArray*)var26)->values[0]=var28;
+((struct instance_core__NativeArray*)var26)->values[0]=var28;
 if (likely(varonce31!=NULL)) {
 var32 = varonce31;
 } else {
 var33 = "\n\n";
-var34 = standard___standard__NativeString___to_s_with_length(var33, 2l);
+var34 = core__flat___NativeString___to_s_full(var33, 2l, 2l);
 var32 = var34;
 varonce31 = var32;
 }
-((struct instance_standard__NativeArray*)var26)->values[2]=var32;
+((struct instance_core__NativeArray*)var26)->values[2]=var32;
 } else {
 var26 = varonce25;
 varonce25 = NULL;
 }
-((struct instance_standard__NativeArray*)var26)->values[1]=var_guard;
+((struct instance_core__NativeArray*)var26)->values[1]=var_guard;
 {
-var35 = ((val*(*)(val* self))(var26->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
+var35 = ((val*(*)(val* self))(var26->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
 }
 varonce25 = var26;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var35); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var35); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 var_ = var_includes;
 {
-var36 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var36 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
 var_37 = var36;
 for(;;) {
 {
-var38 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_37);
+var38 = ((short int(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_37); /* is_ok on <var_37:IndexedIterator[String]>*/
 }
 if (var38){
+} else {
+goto BREAK_label;
+}
 {
-var39 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_37);
+var39 = ((val*(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_37); /* item on <var_37:IndexedIterator[String]>*/
 }
 var_incl = var39;
 if (unlikely(varonce40==NULL)) {
-var41 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var41 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce42!=NULL)) {
 var43 = varonce42;
 } else {
 var44 = "#include ";
-var45 = standard___standard__NativeString___to_s_with_length(var44, 9l);
+var45 = core__flat___NativeString___to_s_full(var44, 9l, 9l);
 var43 = var45;
 varonce42 = var43;
 }
-((struct instance_standard__NativeArray*)var41)->values[0]=var43;
+((struct instance_core__NativeArray*)var41)->values[0]=var43;
 if (likely(varonce46!=NULL)) {
 var47 = varonce46;
 } else {
 var48 = "\n";
-var49 = standard___standard__NativeString___to_s_with_length(var48, 1l);
+var49 = core__flat___NativeString___to_s_full(var48, 1l, 1l);
 var47 = var49;
 varonce46 = var47;
 }
-((struct instance_standard__NativeArray*)var41)->values[2]=var47;
+((struct instance_core__NativeArray*)var41)->values[2]=var47;
 } else {
 var41 = varonce40;
 varonce40 = NULL;
 }
-((struct instance_standard__NativeArray*)var41)->values[1]=var_incl;
+((struct instance_core__NativeArray*)var41)->values[1]=var_incl;
 {
-var50 = ((val*(*)(val* self))(var41->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
+var50 = ((val*(*)(val* self))(var41->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
 }
 varonce40 = var41;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var50); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var50); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_37); /* Direct call array#ArrayIterator#next on <var_37:ArrayIterator[String]>*/
-}
-} else {
-goto BREAK_label;
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_37); /* next on <var_37:IndexedIterator[String]>*/
 }
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_37); /* Direct call array#ArrayIterator#finish on <var_37:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_37&3)?class_info[((long)var_37&3)]:var_37->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_37); /* finish on <var_37:IndexedIterator[String]>*/
 }
 {
-nit___nit__CCompilationUnit___compile_header_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_header_core on <self:CCompilationUnit>*/
+nitc___nitc__CCompilationUnit___compile_header_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_header_core on <self:CCompilationUnit>*/
 }
 if (likely(varonce51!=NULL)) {
 var52 = varonce51;
 } else {
 var53 = "#endif\n";
-var54 = standard___standard__NativeString___to_s_with_length(var53, 7l);
+var54 = core__flat___NativeString___to_s_full(var53, 7l, 7l);
 var52 = var54;
 varonce51 = var52;
 }
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var52); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var52); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 {
-standard___standard__FileWriter___standard__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#CCompilationUnit#write_body_to_file for (self: CCompilationUnit, MModule, String, Array[String]) */
-void nit__light_ffi_base___CCompilationUnit___write_body_to_file(val* self, val* p0, val* p1, val* p2) {
+void nitc__light_ffi_base___CCompilationUnit___write_body_to_file(val* self, val* p0, val* p1, val* p2) {
 val* var_mmodule /* var mmodule: MModule */;
 val* var_file /* var file: String */;
 val* var_includes /* var includes: Array[String] */;
@@ -1421,18 +1424,18 @@ static val* varonce;
 static val* varonce2;
 val* var3 /* : String */;
 char* var4 /* : NativeString */;
-val* var5 /* : FlatString */;
+val* var5 /* : String */;
 static val* varonce6;
 val* var7 /* : String */;
 char* var8 /* : NativeString */;
-val* var9 /* : FlatString */;
+val* var9 /* : String */;
 val* var10 /* : String */;
 val* var12 /* : String */;
 val* var13 /* : String */;
 val* var_module_info /* var module_info: String */;
 val* var_ /* var : Array[String] */;
-val* var14 /* : ArrayIterator[nullable Object] */;
-val* var_15 /* var : ArrayIterator[String] */;
+val* var14 /* : IndexedIterator[nullable Object] */;
+val* var_15 /* var : IndexedIterator[String] */;
 short int var16 /* : Bool */;
 val* var17 /* : nullable Object */;
 val* var_incl /* var incl: String */;
@@ -1441,142 +1444,142 @@ static val* varonce18;
 static val* varonce20;
 val* var21 /* : String */;
 char* var22 /* : NativeString */;
-val* var23 /* : FlatString */;
+val* var23 /* : String */;
 static val* varonce24;
 val* var25 /* : String */;
 char* var26 /* : NativeString */;
-val* var27 /* : FlatString */;
+val* var27 /* : String */;
 val* var28 /* : String */;
 var_mmodule = p0;
 var_file = p1;
 var_includes = p2;
-var = NEW_standard__FileWriter(&type_standard__FileWriter);
+var = NEW_core__FileWriter(&type_core__FileWriter);
 {
-standard___standard__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
+core___core__FileWriter___open(var, var_file); /* Direct call file#FileWriter#open on <var:FileWriter>*/
 }
 var_stream = var;
 if (unlikely(varonce==NULL)) {
-var1 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var1 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce2!=NULL)) {
 var3 = varonce2;
 } else {
 var4 = "/*\n\tExtern implementation of Nit module ";
-var5 = standard___standard__NativeString___to_s_with_length(var4, 40l);
+var5 = core__flat___NativeString___to_s_full(var4, 40l, 40l);
 var3 = var5;
 varonce2 = var3;
 }
-((struct instance_standard__NativeArray*)var1)->values[0]=var3;
+((struct instance_core__NativeArray*)var1)->values[0]=var3;
 if (likely(varonce6!=NULL)) {
 var7 = varonce6;
 } else {
 var8 = "\n*/\n";
-var9 = standard___standard__NativeString___to_s_with_length(var8, 4l);
+var9 = core__flat___NativeString___to_s_full(var8, 4l, 4l);
 var7 = var9;
 varonce6 = var7;
 }
-((struct instance_standard__NativeArray*)var1)->values[2]=var7;
+((struct instance_core__NativeArray*)var1)->values[2]=var7;
 } else {
 var1 = varonce;
 varonce = NULL;
 }
 {
 { /* Inline mmodule#MModule#name (var_mmodule) on <var_mmodule:MModule> */
-var12 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
+var12 = var_mmodule->attrs[COLOR_nitc__mmodule__MModule___name].val; /* _name on <var_mmodule:MModule> */
 if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 87);
+PRINT_ERROR(" (%s:%d)\n", FILE_nitc__mmodule, 95);
 fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
-((struct instance_standard__NativeArray*)var1)->values[1]=var10;
+((struct instance_core__NativeArray*)var1)->values[1]=var10;
 {
-var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
+var13 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
 }
 varonce = var1;
 var_module_info = var13;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var_module_info); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 var_ = var_includes;
 {
-var14 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
 var_15 = var14;
 for(;;) {
 {
-var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_15);
+var16 = ((short int(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_15); /* is_ok on <var_15:IndexedIterator[String]>*/
 }
 if (var16){
+} else {
+goto BREAK_label;
+}
 {
-var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_15);
+var17 = ((val*(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_15); /* item on <var_15:IndexedIterator[String]>*/
 }
 var_incl = var17;
 if (unlikely(varonce18==NULL)) {
-var19 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+var19 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
 if (likely(varonce20!=NULL)) {
 var21 = varonce20;
 } else {
 var22 = "#include ";
-var23 = standard___standard__NativeString___to_s_with_length(var22, 9l);
+var23 = core__flat___NativeString___to_s_full(var22, 9l, 9l);
 var21 = var23;
 varonce20 = var21;
 }
-((struct instance_standard__NativeArray*)var19)->values[0]=var21;
+((struct instance_core__NativeArray*)var19)->values[0]=var21;
 if (likely(varonce24!=NULL)) {
 var25 = varonce24;
 } else {
 var26 = "\n";
-var27 = standard___standard__NativeString___to_s_with_length(var26, 1l);
+var27 = core__flat___NativeString___to_s_full(var26, 1l, 1l);
 var25 = var27;
 varonce24 = var25;
 }
-((struct instance_standard__NativeArray*)var19)->values[2]=var25;
+((struct instance_core__NativeArray*)var19)->values[2]=var25;
 } else {
 var19 = varonce18;
 varonce18 = NULL;
 }
-((struct instance_standard__NativeArray*)var19)->values[1]=var_incl;
+((struct instance_core__NativeArray*)var19)->values[1]=var_incl;
 {
-var28 = ((val*(*)(val* self))(var19->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
+var28 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
 }
 varonce18 = var19;
 {
-standard___standard__FileWriter___standard__stream__Writer__write(var_stream, var28); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var28); /* Direct call file#FileWriter#write on <var_stream:FileWriter>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_15); /* Direct call array#ArrayIterator#next on <var_15:ArrayIterator[String]>*/
-}
-} else {
-goto BREAK_label;
+((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_15); /* next on <var_15:IndexedIterator[String]>*/
 }
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_15); /* Direct call array#ArrayIterator#finish on <var_15:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_15&3)?class_info[((long)var_15&3)]:var_15->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_15); /* finish on <var_15:IndexedIterator[String]>*/
 }
 {
-nit___nit__CCompilationUnit___compile_body_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_body_core on <self:CCompilationUnit>*/
+nitc___nitc__CCompilationUnit___compile_body_core(self, var_stream); /* Direct call c_tools#CCompilationUnit#compile_body_core on <self:CCompilationUnit>*/
 }
 {
-standard___standard__FileWriter___standard__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
+core___core__FileWriter___core__stream__Stream__close(var_stream); /* Direct call file#FileWriter#close on <var_stream:FileWriter>*/
 }
 RET_LABEL:;
 }
 /* method light_ffi_base#ForeignType#ctype for (self: ForeignType): String */
-val* nit___nit__ForeignType___ctype(val* self) {
+val* nitc___nitc__ForeignType___ctype(val* self) {
 val* var /* : String */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-val* var3 /* : FlatString */;
+val* var3 /* : String */;
 if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
 var2 = "void*";
-var3 = standard___standard__NativeString___to_s_with_length(var2, 5l);
+var3 = core__flat___NativeString___to_s_full(var2, 5l, 5l);
 var1 = var3;
 varonce = var1;
 }