csrc: regen for 32 bits platforms and Windows
[nit.git] / c_src / ini.sep.1.c
index 3fe3098..c72aacf 100644 (file)
@@ -1,10 +1,13 @@
 #include "ini.sep.0.h"
-/* method ini#ConfigTree#ini_file for (self: ConfigTree): String */
+/* method ini$ConfigTree$ini_file for (self: ConfigTree): String */
 val* ini___ini__ConfigTree___ini_file(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
 var1 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
 fatal_exit(1);
@@ -13,12 +16,12 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#ini_file= for (self: ConfigTree, String) */
+/* method ini$ConfigTree$ini_file= for (self: ConfigTree, String) */
 void ini___ini__ConfigTree___ini_file_61d(val* self, val* p0) {
 self->attrs[COLOR_ini__ConfigTree___ini_file].val = p0; /* _ini_file on <self:ConfigTree> */
 RET_LABEL:;
 }
-/* method ini#ConfigTree#init for (self: ConfigTree) */
+/* method ini$ConfigTree$init for (self: ConfigTree) */
 void ini___ini__ConfigTree___core__kernel__Object__init(val* self) {
 val* var /* : String */;
 val* var2 /* : String */;
@@ -27,9 +30,12 @@ short int var3 /* : Bool */;
 ((void(*)(val* self))(self->class->vft[COLOR_ini___ini__ConfigTree___core__kernel__Object__init]))(self); /* init on <self:ConfigTree>*/
 }
 {
-{ /* Inline ini#ConfigTree#ini_file (self) on <self:ConfigTree> */
+{ /* Inline ini$ConfigTree$ini_file (self) on <self:ConfigTree> */
 var2 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
 if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
 fatal_exit(1);
@@ -39,17 +45,17 @@ RET_LABEL1:(void)0;
 }
 }
 {
-var3 = core__file___String___file_exists(var);
+var3 = core__file___Text___file_exists(var);
 }
 if (var3){
 {
-ini___ini__ConfigTree___load(self); /* Direct call ini#ConfigTree#load on <self:ConfigTree>*/
+ini___ini__ConfigTree___load(self); /* Direct call ini$ConfigTree$load on <self:ConfigTree>*/
 }
 } else {
 }
 RET_LABEL:;
 }
-/* method ini#ConfigTree#[] for (self: ConfigTree, String): nullable String */
+/* method ini$ConfigTree$[] for (self: ConfigTree, String): nullable String */
 val* ini___ini__ConfigTree____91d_93d(val* self, val* p0) {
 val* var /* : nullable String */;
 val* var_key /* var key: String */;
@@ -73,10 +79,10 @@ var2 = 1; /* is null */
 var2 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
+{ /* Inline kernel$Object$is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
 var7 = var_node == var_other;
 var5 = var7;
 goto RET_LABEL6;
@@ -95,7 +101,7 @@ goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline ini#ConfigNode#value (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
+{ /* Inline ini$ConfigNode$value (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
 var10 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:nullable ConfigNode(ConfigNode)> */
 var8 = var10;
 RET_LABEL9:(void)0;
@@ -106,119 +112,127 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#has_key for (self: ConfigTree, String): Bool */
+/* method ini$ConfigTree$has_key for (self: ConfigTree, String): Bool */
 short int ini___ini__ConfigTree___has_key(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_key /* var key: String */;
 static val* varonce;
 val* var1 /* : String */;
-char* var2 /* : NativeString */;
+char* var2 /* : CString */;
 val* var3 /* : String */;
-val* var4 /* : Array[String] */;
-val* var5 /* : Array[nullable Object] */;
+val* var4 /* : nullable Int */;
+val* var5 /* : nullable Int */;
+val* var6 /* : nullable Bool */;
+val* var7 /* : nullable Bool */;
+val* var8 /* : Array[String] */;
+val* var9 /* : Array[nullable Object] */;
 val* var_parts /* var parts: Array[String] */;
-val* var6 /* : nullable Object */;
-val* var7 /* : nullable ConfigNode */;
+val* var10 /* : nullable Object */;
+val* var11 /* : nullable ConfigNode */;
 val* var_node /* var node: nullable ConfigNode */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var11 /* : Bool */;
+short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var14 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var15 /* : Bool */;
-val* var16 /* : nullable Object */;
-val* var17 /* : nullable ConfigNode */;
+short int var17 /* : Bool */;
 short int var18 /* : Bool */;
 short int var19 /* : Bool */;
-short int var21 /* : Bool */;
+val* var20 /* : nullable Object */;
+val* var21 /* : nullable ConfigNode */;
+short int var22 /* : Bool */;
 short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+short int var27 /* : Bool */;
 var_key = p0;
 if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
 var2 = ".";
-var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
+var4 = (val*)(1l<<2|1);
+var5 = (val*)(1l<<2|1);
+var6 = (val*)((long)(0)<<2|3);
+var7 = (val*)((long)(0)<<2|3);
+var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
 var1 = var3;
 varonce = var1;
 }
 {
-var4 = core__string_search___Text___split(var_key, var1);
+var8 = core__string_search___Text___split(var_key, var1);
 }
 {
-var5 = core___core__AbstractArrayRead___reversed(var4);
+var9 = core___core__AbstractArrayRead___reversed(var8);
 }
-var_parts = var5;
+var_parts = var9;
 {
-var6 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var10 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
 {
-var7 = ini___ini__ConfigTree___get_root(self, var6);
+var11 = ini___ini__ConfigTree___get_root(self, var10);
 }
-var_node = var7;
+var_node = var11;
 if (var_node == NULL) {
-var8 = 1; /* is null */
+var12 = 1; /* is null */
 } else {
-var8 = 0; /* arg is null but recv is not */
+var12 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
-var13 = var_node == var_other;
-var11 = var13;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+{ /* Inline kernel$Object$is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
+var17 = var_node == var_other;
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
 }
 }
-var9 = var11;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
-var8 = var9;
+var12 = var13;
 }
-if (var8){
+if (var12){
 var = 0;
 goto RET_LABEL;
 } else {
 }
 for(;;) {
 {
-var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
+var18 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
 }
-var15 = !var14;
-if (var15){
+var19 = !var18;
+if (var19){
 {
-var16 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var20 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
 {
-var17 = ini___ini__ConfigNode___get_child(var_node, var16);
+var21 = ini___ini__ConfigNode___get_child(var_node, var20);
 }
-var_node = var17;
+var_node = var21;
 if (var_node == NULL) {
-var18 = 1; /* is null */
+var22 = 1; /* is null */
 } else {
-var18 = 0; /* arg is null but recv is not */
+var22 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
-var23 = var_node == var_other;
-var21 = var23;
-goto RET_LABEL22;
-RET_LABEL22:(void)0;
+{ /* Inline kernel$Object$is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
+var27 = var_node == var_other;
+var25 = var27;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
 }
 }
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-var18 = var19;
+var22 = var23;
 }
-if (var18){
+if (var22){
 var = 0;
 goto RET_LABEL;
 } else {
@@ -233,7 +247,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#to_map for (self: ConfigTree): Map[String, String] */
+/* method ini$ConfigTree$to_map for (self: ConfigTree): Map[String, String] */
 val* ini___ini__ConfigTree___to_map(val* self) {
 val* var /* : Map[String, String] */;
 val* var1 /* : HashMap[String, String] */;
@@ -255,7 +269,7 @@ val* var16 /* : nullable String */;
 val* var17 /* : String */;
 var1 = NEW_core__HashMap(&type_core__HashMap__core__String__core__String);
 {
-core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection#HashMap#init on <var1:HashMap[String, String]>*/
+core___core__HashMap___core__kernel__Object__init(var1); /* Direct call hash_collection$HashMap$init on <var1:HashMap[String, String]>*/
 }
 var_map = var1;
 {
@@ -279,7 +293,7 @@ var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4-
 }
 var_node = var6;
 {
-{ /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
+{ /* Inline ini$ConfigNode$value (var_node) on <var_node:ConfigNode> */
 var9 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -302,13 +316,16 @@ goto BREAK_label12;
 var13 = ini___ini__ConfigNode___key(var_node);
 }
 {
-{ /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
+{ /* Inline ini$ConfigNode$value (var_node) on <var_node:ConfigNode> */
 var16 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
 var14 = var16;
 RET_LABEL15:(void)0;
 }
 }
 if (var14 == NULL) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 116);
 fatal_exit(1);
@@ -316,7 +333,7 @@ fatal_exit(1);
 var17 = core___core__String___Object__to_s(var14);
 }
 {
-core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_map, var13, var17); /* Direct call hash_collection#HashMap#[]= on <var_map:HashMap[String, String]>*/
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_map, var13, var17); /* Direct call hash_collection$HashMap$[]= on <var_map:HashMap[String, String]>*/
 }
 BREAK_label12: (void)0;
 {
@@ -332,19 +349,27 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#to_s for (self: ConfigTree): String */
+/* method ini$ConfigTree$to_s for (self: ConfigTree): String */
 val* ini___ini__ConfigTree___core__abstract_text__Object__to_s(val* self) {
 val* var /* : String */;
 val* var1 /* : Map[String, String] */;
 static val* varonce;
 val* var2 /* : String */;
-char* var3 /* : NativeString */;
+char* var3 /* : CString */;
 val* var4 /* : String */;
-static val* varonce5;
-val* var6 /* : String */;
-char* var7 /* : NativeString */;
-val* var8 /* : String */;
-val* var9 /* : String */;
+val* var5 /* : nullable Int */;
+val* var6 /* : nullable Int */;
+val* var7 /* : nullable Bool */;
+val* var8 /* : nullable Bool */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : CString */;
+val* var12 /* : String */;
+val* var13 /* : nullable Int */;
+val* var14 /* : nullable Int */;
+val* var15 /* : nullable Bool */;
+val* var16 /* : nullable Bool */;
+val* var17 /* : String */;
 {
 var1 = ini___ini__ConfigTree___to_map(self);
 }
@@ -352,27 +377,35 @@ if (likely(varonce!=NULL)) {
 var2 = varonce;
 } else {
 var3 = ", ";
-var4 = core__flat___NativeString___to_s_full(var3, 2l, 2l);
+var5 = (val*)(2l<<2|1);
+var6 = (val*)(2l<<2|1);
+var7 = (val*)((long)(0)<<2|3);
+var8 = (val*)((long)(0)<<2|3);
+var4 = core__flat___CString___to_s_unsafe(var3, var5, var6, var7, var8);
 var2 = var4;
 varonce = var2;
 }
-if (likely(varonce5!=NULL)) {
-var6 = varonce5;
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
 } else {
-var7 = ":";
-var8 = core__flat___NativeString___to_s_full(var7, 1l, 1l);
-var6 = var8;
-varonce5 = var6;
+var11 = ":";
+var13 = (val*)(1l<<2|1);
+var14 = (val*)(1l<<2|1);
+var15 = (val*)((long)(0)<<2|3);
+var16 = (val*)((long)(0)<<2|3);
+var12 = core__flat___CString___to_s_unsafe(var11, var13, var14, var15, var16);
+var10 = var12;
+varonce9 = var10;
 }
 {
-var9 = core__flat___Map___join(var1, var2, var6);
+var17 = core__flat___Map___join(var1, var2, var10);
 }
-var = var9;
+var = var17;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#write_to for (self: ConfigTree, Writer) */
+/* method ini$ConfigTree$write_to for (self: ConfigTree, Writer) */
 void ini___ini__ConfigTree___core__stream__Writable__write_to(val* self, val* p0) {
 val* var_stream /* var stream: Writer */;
 val* var /* : Array[ConfigNode] */;
@@ -390,17 +423,25 @@ val* var11 /* : NativeArray[String] */;
 static val* varonce;
 static val* varonce12;
 val* var13 /* : String */;
-char* var14 /* : NativeString */;
+char* var14 /* : CString */;
 val* var15 /* : String */;
-static val* varonce16;
-val* var17 /* : String */;
-char* var18 /* : NativeString */;
-val* var19 /* : String */;
-val* var20 /* : String */;
-val* var21 /* : nullable String */;
-val* var23 /* : nullable String */;
-val* var24 /* : String */;
-val* var25 /* : String */;
+val* var16 /* : nullable Int */;
+val* var17 /* : nullable Int */;
+val* var18 /* : nullable Bool */;
+val* var19 /* : nullable Bool */;
+static val* varonce20;
+val* var21 /* : String */;
+char* var22 /* : CString */;
+val* var23 /* : String */;
+val* var24 /* : nullable Int */;
+val* var25 /* : nullable Int */;
+val* var26 /* : nullable Bool */;
+val* var27 /* : nullable Bool */;
+val* var28 /* : String */;
+val* var29 /* : nullable String */;
+val* var31 /* : nullable String */;
+val* var32 /* : String */;
+val* var33 /* : String */;
 var_stream = p0;
 {
 var = ini___ini__ConfigTree___leaves(self);
@@ -423,7 +464,7 @@ var4 = ((val*(*)(val* self))((((long)var_2&3)?class_info[((long)var_2&3)]:var_2-
 }
 var_node = var4;
 {
-{ /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
+{ /* Inline ini$ConfigNode$value (var_node) on <var_node:ConfigNode> */
 var7 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -443,54 +484,65 @@ goto BREAK_label10;
 } else {
 }
 if (unlikely(varonce==NULL)) {
-var11 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
+var11 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
 if (likely(varonce12!=NULL)) {
 var13 = varonce12;
 } else {
 var14 = "=";
-var15 = core__flat___NativeString___to_s_full(var14, 1l, 1l);
+var16 = (val*)(1l<<2|1);
+var17 = (val*)(1l<<2|1);
+var18 = (val*)((long)(0)<<2|3);
+var19 = (val*)((long)(0)<<2|3);
+var15 = core__flat___CString___to_s_unsafe(var14, var16, var17, var18, var19);
 var13 = var15;
 varonce12 = var13;
 }
 ((struct instance_core__NativeArray*)var11)->values[1]=var13;
-if (likely(varonce16!=NULL)) {
-var17 = varonce16;
+if (likely(varonce20!=NULL)) {
+var21 = varonce20;
 } else {
-var18 = "\n";
-var19 = core__flat___NativeString___to_s_full(var18, 1l, 1l);
-var17 = var19;
-varonce16 = var17;
+var22 = "\n";
+var24 = (val*)(1l<<2|1);
+var25 = (val*)(1l<<2|1);
+var26 = (val*)((long)(0)<<2|3);
+var27 = (val*)((long)(0)<<2|3);
+var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
+var21 = var23;
+varonce20 = var21;
 }
-((struct instance_core__NativeArray*)var11)->values[3]=var17;
+((struct instance_core__NativeArray*)var11)->values[3]=var21;
 } else {
 var11 = varonce;
 varonce = NULL;
 }
 {
-var20 = ini___ini__ConfigNode___key(var_node);
+var28 = ini___ini__ConfigNode___key(var_node);
 }
-((struct instance_core__NativeArray*)var11)->values[0]=var20;
+((struct instance_core__NativeArray*)var11)->values[0]=var28;
 {
-{ /* Inline ini#ConfigNode#value (var_node) on <var_node:ConfigNode> */
-var23 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
-var21 = var23;
-RET_LABEL22:(void)0;
+{ /* Inline ini$ConfigNode$value (var_node) on <var_node:ConfigNode> */
+var31 = var_node->attrs[COLOR_ini__ConfigNode___value].val; /* _value on <var_node:ConfigNode> */
+var29 = var31;
+RET_LABEL30:(void)0;
+}
 }
+if (var29 == NULL) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
 }
-if (var21 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 126);
 fatal_exit(1);
 } else {
-var24 = core___core__String___Object__to_s(var21);
+var32 = core___core__String___Object__to_s(var29);
 }
-((struct instance_core__NativeArray*)var11)->values[2]=var24;
+((struct instance_core__NativeArray*)var11)->values[2]=var32;
 {
-var25 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
+var33 = ((val*(*)(val* self))(var11->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var11); /* native_to_s on <var11:NativeArray[String]>*/
 }
 varonce = var11;
 {
-core___core__FileWriter___core__stream__Writer__write(var_stream, var25); /* Direct call file#FileWriter#write on <var_stream:Writer>*/
+core___core__FileWriter___core__stream__Writer__write(var_stream, var33); /* Direct call file$FileWriter$write on <var_stream:Writer>*/
 }
 BREAK_label10: (void)0;
 {
@@ -503,7 +555,7 @@ BREAK_label: (void)0;
 }
 RET_LABEL:;
 }
-/* method ini#ConfigTree#load for (self: ConfigTree) */
+/* method ini$ConfigTree$load for (self: ConfigTree) */
 void ini___ini__ConfigTree___load(val* self) {
 val* var /* : Array[ConfigNode] */;
 val* var2 /* : Array[ConfigNode] */;
@@ -526,74 +578,101 @@ long var13 /* : Int */;
 short int var14 /* : Bool */;
 static val* varonce;
 val* var15 /* : String */;
-char* var16 /* : NativeString */;
+char* var16 /* : CString */;
 val* var17 /* : String */;
-short int var18 /* : Bool */;
-static val* varonce19;
-val* var20 /* : String */;
-char* var21 /* : NativeString */;
-val* var22 /* : String */;
-short int var23 /* : Bool */;
-val* var24 /* : Text */;
-long var25 /* : Int */;
-long var26 /* : Int */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name31;
-long var32 /* : Int */;
-val* var33 /* : Text */;
+val* var18 /* : nullable Int */;
+val* var19 /* : nullable Int */;
+val* var20 /* : nullable Bool */;
+val* var21 /* : nullable Bool */;
+short int var22 /* : Bool */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : CString */;
+val* var26 /* : String */;
+val* var27 /* : nullable Int */;
+val* var28 /* : nullable Int */;
+val* var29 /* : nullable Bool */;
+val* var30 /* : nullable Bool */;
+short int var31 /* : Bool */;
+val* var32 /* : Text */;
+long var33 /* : Int */;
+long var34 /* : Int */;
+short int var36 /* : Bool */;
+int cltype37;
+int idtype38;
+const char* var_class_name39;
+long var40 /* : Int */;
+val* var41 /* : Text */;
 val* var_key /* var key: String */;
-static val* varonce34;
-val* var35 /* : String */;
-char* var36 /* : NativeString */;
-val* var37 /* : String */;
-val* var38 /* : Array[String] */;
+static val* varonce42;
+val* var43 /* : String */;
+char* var44 /* : CString */;
+val* var45 /* : String */;
+val* var46 /* : nullable Int */;
+val* var47 /* : nullable Int */;
+val* var48 /* : nullable Bool */;
+val* var49 /* : nullable Bool */;
+val* var50 /* : Array[String] */;
 val* var_parts /* var parts: Array[String] */;
-long var39 /* : Int */;
-long var41 /* : Int */;
-short int var42 /* : Bool */;
-short int var44 /* : Bool */;
-int cltype45;
-int idtype46;
-const char* var_class_name47;
-short int var48 /* : Bool */;
-val* var49 /* : Sys */;
-val* var51 /* : NativeArray[String] */;
-static val* varonce50;
-static val* varonce52;
-val* var53 /* : String */;
-char* var54 /* : NativeString */;
-val* var55 /* : String */;
-val* var56 /* : String */;
-val* var57 /* : String */;
-val* var58 /* : nullable Object */;
-val* var59 /* : Text */;
-val* var_key60 /* var key: String */;
-val* var61 /* : nullable Object */;
-val* var62 /* : Text */;
-val* var_val /* var val: String */;
-short int var63 /* : Bool */;
-short int var64 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var66 /* : Bool */;
-short int var67 /* : Bool */;
-val* var69 /* : NativeArray[String] */;
-static val* varonce68;
-static val* varonce70;
-val* var71 /* : String */;
-char* var72 /* : NativeString */;
+long var51 /* : Int */;
+long var53 /* : Int */;
+short int var54 /* : Bool */;
+short int var56 /* : Bool */;
+int cltype57;
+int idtype58;
+const char* var_class_name59;
+short int var60 /* : Bool */;
+val* var61 /* : Sys */;
+val* var63 /* : NativeArray[String] */;
+static val* varonce62;
+static val* varonce64;
+val* var65 /* : String */;
+char* var66 /* : CString */;
+val* var67 /* : String */;
+val* var68 /* : nullable Int */;
+val* var69 /* : nullable Int */;
+val* var70 /* : nullable Bool */;
+val* var71 /* : nullable Bool */;
+val* var72 /* : String */;
 val* var73 /* : String */;
-val* var74 /* : String */;
-static val* varonce75;
-val* var76 /* : String */;
-char* var77 /* : NativeString */;
-val* var78 /* : String */;
+val* var74 /* : nullable Object */;
+val* var75 /* : Text */;
+val* var_key76 /* var key: String */;
+val* var77 /* : nullable Object */;
+val* var78 /* : Text */;
+val* var_val /* var val: String */;
 short int var79 /* : Bool */;
-{
-{ /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
+short int var80 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var82 /* : Bool */;
+short int var83 /* : Bool */;
+val* var85 /* : NativeArray[String] */;
+static val* varonce84;
+static val* varonce86;
+val* var87 /* : String */;
+char* var88 /* : CString */;
+val* var89 /* : String */;
+val* var90 /* : nullable Int */;
+val* var91 /* : nullable Int */;
+val* var92 /* : nullable Bool */;
+val* var93 /* : nullable Bool */;
+val* var94 /* : String */;
+static val* varonce95;
+val* var96 /* : String */;
+char* var97 /* : CString */;
+val* var98 /* : String */;
+val* var99 /* : nullable Int */;
+val* var100 /* : nullable Int */;
+val* var101 /* : nullable Bool */;
+val* var102 /* : nullable Bool */;
+short int var103 /* : Bool */;
+{
+{ /* Inline ini$ConfigTree$roots (self) on <self:ConfigTree> */
 var2 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
 if (unlikely(var2 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
 fatal_exit(1);
@@ -603,13 +682,16 @@ RET_LABEL1:(void)0;
 }
 }
 {
-core___core__AbstractArray___core__abstract_collection__RemovableCollection__clear(var); /* Direct call array#AbstractArray#clear on <var:Array[ConfigNode]>*/
+core___core__AbstractArray___core__abstract_collection__RemovableCollection__clear(var); /* Direct call array$AbstractArray$clear on <var:Array[ConfigNode]>*/
 }
 var3 = NEW_core__FileReader(&type_core__FileReader);
 {
-{ /* Inline ini#ConfigTree#ini_file (self) on <self:ConfigTree> */
+{ /* Inline ini$ConfigTree$ini_file (self) on <self:ConfigTree> */
 var6 = self->attrs[COLOR_ini__ConfigTree___ini_file].val; /* _ini_file on <self:ConfigTree> */
 if (unlikely(var6 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _ini_file");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 37);
 fatal_exit(1);
@@ -619,7 +701,7 @@ RET_LABEL5:(void)0;
 }
 }
 {
-core___core__FileReader___open(var3, var4); /* Direct call file#FileReader#open on <var3:FileReader>*/
+core___core__FileReader___open(var3, var4); /* Direct call file$FileReader$open on <var3:FileReader>*/
 }
 var_stream = var3;
 var_path = ((val*)NULL);
@@ -635,14 +717,14 @@ var9 = core___core__Reader___read_line(var_stream);
 }
 var_line = var9;
 {
-{ /* Inline kernel#Int#+ (var_line_number,1l) on <var_line_number:Int> */
+{ /* Inline kernel$Int$+ (var_line_number,1l) on <var_line_number:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
 var12 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var12)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var13 = var_line_number + 1l;
@@ -662,224 +744,254 @@ if (likely(varonce!=NULL)) {
 var15 = varonce;
 } else {
 var16 = ";";
-var17 = core__flat___NativeString___to_s_full(var16, 1l, 1l);
+var18 = (val*)(1l<<2|1);
+var19 = (val*)(1l<<2|1);
+var20 = (val*)((long)(0)<<2|3);
+var21 = (val*)((long)(0)<<2|3);
+var17 = core__flat___CString___to_s_unsafe(var16, var18, var19, var20, var21);
 var15 = var17;
 varonce = var15;
 }
 {
-var18 = core___core__Text___has_prefix(var_line, var15);
+var22 = core___core__Text___has_prefix(var_line, var15);
 }
-if (var18){
+if (var22){
 goto BREAK_label;
 } else {
-if (likely(varonce19!=NULL)) {
-var20 = varonce19;
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
 } else {
-var21 = "[";
-var22 = core__flat___NativeString___to_s_full(var21, 1l, 1l);
-var20 = var22;
-varonce19 = var20;
+var25 = "[";
+var27 = (val*)(1l<<2|1);
+var28 = (val*)(1l<<2|1);
+var29 = (val*)((long)(0)<<2|3);
+var30 = (val*)((long)(0)<<2|3);
+var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
+var24 = var26;
+varonce23 = var24;
 }
 {
-var23 = core___core__Text___has_prefix(var_line, var20);
+var31 = core___core__Text___has_prefix(var_line, var24);
 }
-if (var23){
+if (var31){
 {
-var24 = core___core__Text___trim(var_line);
+var32 = core___core__Text___trim(var_line);
 }
-var_line = var24;
+var_line = var32;
 {
-var25 = ((long(*)(val* self))(var_line->class->vft[COLOR_core__abstract_text__Text__length]))(var_line); /* length on <var_line:String>*/
+var33 = ((long(*)(val* self))(var_line->class->vft[COLOR_core__abstract_text__Text__length]))(var_line); /* length on <var_line:String>*/
 }
 {
-{ /* Inline kernel#Int#- (var25,2l) on <var25:Int> */
+{ /* Inline kernel$Int$- (var33,2l) on <var33:Int> */
 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
 /* <2l:Int> isa OTHER */
-var28 = 1; /* easy <2l:Int> isa OTHER*/
-if (unlikely(!var28)) {
-var_class_name31 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+var36 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var36)) {
+var_class_name39 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var32 = var25 - 2l;
-var26 = var32;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var40 = var33 - 2l;
+var34 = var40;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
 }
 {
-var33 = ((val*(*)(val* self, long p0, long p1))(var_line->class->vft[COLOR_core__abstract_text__Text__substring]))(var_line, 1l, var26); /* substring on <var_line:String>*/
+var41 = ((val*(*)(val* self, long p0, long p1))(var_line->class->vft[COLOR_core__abstract_text__Text__substring]))(var_line, 1l, var34); /* substring on <var_line:String>*/
 }
-var_key = var33;
+var_key = var41;
 var_path = var_key;
 {
-ini___ini__ConfigTree___set_node(self, var_path, ((val*)NULL)); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
+ini___ini__ConfigTree___set_node(self, var_path, ((val*)NULL)); /* Direct call ini$ConfigTree$set_node on <self:ConfigTree>*/
 }
 } else {
-if (likely(varonce34!=NULL)) {
-var35 = varonce34;
+if (likely(varonce42!=NULL)) {
+var43 = varonce42;
 } else {
-var36 = "=";
-var37 = core__flat___NativeString___to_s_full(var36, 1l, 1l);
-var35 = var37;
-varonce34 = var35;
+var44 = "=";
+var46 = (val*)(1l<<2|1);
+var47 = (val*)(1l<<2|1);
+var48 = (val*)((long)(0)<<2|3);
+var49 = (val*)((long)(0)<<2|3);
+var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
+var43 = var45;
+varonce42 = var43;
 }
 {
-var38 = core__string_search___Text___split(var_line, var35);
+var50 = core__string_search___Text___split(var_line, var43);
 }
-var_parts = var38;
+var_parts = var50;
 {
-{ /* Inline array#AbstractArrayRead#length (var_parts) on <var_parts:Array[String]> */
-var41 = var_parts->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_parts:Array[String]> */
-var39 = var41;
-RET_LABEL40:(void)0;
+{ /* Inline array$AbstractArrayRead$length (var_parts) on <var_parts:Array[String]> */
+var53 = var_parts->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_parts:Array[String]> */
+var51 = var53;
+RET_LABEL52:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#> (var39,1l) on <var39:Int> */
+{ /* Inline kernel$Int$> (var51,1l) on <var51:Int> */
 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
 /* <1l:Int> isa OTHER */
-var44 = 1; /* easy <1l:Int> isa OTHER*/
-if (unlikely(!var44)) {
-var_class_name47 = type_core__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
+var56 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var56)) {
+var_class_name59 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name59);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
 fatal_exit(1);
 }
-var48 = var39 > 1l;
-var42 = var48;
-goto RET_LABEL43;
-RET_LABEL43:(void)0;
+var60 = var51 > 1l;
+var54 = var60;
+goto RET_LABEL55;
+RET_LABEL55:(void)0;
 }
 }
-if (unlikely(!var42)) {
-var49 = glob_sys;
-if (unlikely(varonce50==NULL)) {
-var51 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce52!=NULL)) {
-var53 = varonce52;
+if (unlikely(!var54)) {
+var61 = glob_sys;
+if (unlikely(varonce62==NULL)) {
+var63 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
+if (likely(varonce64!=NULL)) {
+var65 = varonce64;
 } else {
-var54 = "Error: malformed ini at line ";
-var55 = core__flat___NativeString___to_s_full(var54, 29l, 29l);
-var53 = var55;
-varonce52 = var53;
-}
-((struct instance_core__NativeArray*)var51)->values[0]=var53;
+var66 = "Error: malformed ini at line ";
+var68 = (val*)(29l<<2|1);
+var69 = (val*)(29l<<2|1);
+var70 = (val*)((long)(0)<<2|3);
+var71 = (val*)((long)(0)<<2|3);
+var67 = core__flat___CString___to_s_unsafe(var66, var68, var69, var70, var71);
+var65 = var67;
+varonce64 = var65;
+}
+((struct instance_core__NativeArray*)var63)->values[0]=var65;
 } else {
-var51 = varonce50;
-varonce50 = NULL;
+var63 = varonce62;
+varonce62 = NULL;
 }
-var56 = core__flat___Int___core__abstract_text__Object__to_s(var_line_number);
-((struct instance_core__NativeArray*)var51)->values[1]=var56;
+var72 = core__flat___Int___core__abstract_text__Object__to_s(var_line_number);
+((struct instance_core__NativeArray*)var63)->values[1]=var72;
 {
-var57 = ((val*(*)(val* self))(var51->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var51); /* native_to_s on <var51:NativeArray[String]>*/
+var73 = ((val*(*)(val* self))(var63->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var63); /* native_to_s on <var63:NativeArray[String]>*/
 }
-varonce50 = var51;
+varonce62 = var63;
 {
-core__file___Sys___print(var49, var57); /* Direct call file#Sys#print on <var49:Sys>*/
+core__file___Sys___print(var61, var73); /* Direct call file$Sys$print on <var61:Sys>*/
+}
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
 }
 PRINT_ERROR("Runtime error: %s", "Assert failed");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 212);
 fatal_exit(1);
 }
 {
-var58 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 0l);
+var74 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 0l);
 }
 {
-var59 = core___core__Text___trim(var58);
+var75 = core___core__Text___trim(var74);
 }
-var_key60 = var59;
+var_key76 = var75;
 {
-var61 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 1l);
+var77 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_parts, 1l);
 }
 {
-var62 = core___core__Text___trim(var61);
+var78 = core___core__Text___trim(var77);
 }
-var_val = var62;
+var_val = var78;
 if (var_path == NULL) {
-var63 = 0; /* is null */
+var79 = 0; /* is null */
 } else {
-var63 = 1; /* arg is null and recv is not */
+var79 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_path,((val*)NULL)) on <var_path:nullable String> */
+{ /* Inline kernel$Object$!= (var_path,((val*)NULL)) on <var_path:nullable String> */
 var_other = ((val*)NULL);
 {
-var66 = ((short int(*)(val* self, val* p0))(var_path->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_path, var_other); /* == on <var_path:nullable String(String)>*/
+var82 = ((short int(*)(val* self, val* p0))(var_path->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_path, var_other); /* == on <var_path:nullable String(String)>*/
 }
-var67 = !var66;
-var64 = var67;
-goto RET_LABEL65;
-RET_LABEL65:(void)0;
+var83 = !var82;
+var80 = var83;
+goto RET_LABEL81;
+RET_LABEL81:(void)0;
 }
-var63 = var64;
+var79 = var80;
 }
-if (var63){
-if (unlikely(varonce68==NULL)) {
-var69 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce70!=NULL)) {
-var71 = varonce70;
+if (var79){
+if (unlikely(varonce84==NULL)) {
+var85 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
+if (likely(varonce86!=NULL)) {
+var87 = varonce86;
 } else {
-var72 = ".";
-var73 = core__flat___NativeString___to_s_full(var72, 1l, 1l);
-var71 = var73;
-varonce70 = var71;
-}
-((struct instance_core__NativeArray*)var69)->values[1]=var71;
+var88 = ".";
+var90 = (val*)(1l<<2|1);
+var91 = (val*)(1l<<2|1);
+var92 = (val*)((long)(0)<<2|3);
+var93 = (val*)((long)(0)<<2|3);
+var89 = core__flat___CString___to_s_unsafe(var88, var90, var91, var92, var93);
+var87 = var89;
+varonce86 = var87;
+}
+((struct instance_core__NativeArray*)var85)->values[1]=var87;
 } else {
-var69 = varonce68;
-varonce68 = NULL;
+var85 = varonce84;
+varonce84 = NULL;
 }
-((struct instance_core__NativeArray*)var69)->values[0]=var_path;
-((struct instance_core__NativeArray*)var69)->values[2]=var_key60;
+((struct instance_core__NativeArray*)var85)->values[0]=var_path;
+((struct instance_core__NativeArray*)var85)->values[2]=var_key76;
 {
-var74 = ((val*(*)(val* self))(var69->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
+var94 = ((val*(*)(val* self))(var85->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var85); /* native_to_s on <var85:NativeArray[String]>*/
 }
-varonce68 = var69;
-var_key60 = var74;
+varonce84 = var85;
+var_key76 = var94;
 } else {
 }
-if (likely(varonce75!=NULL)) {
-var76 = varonce75;
+if (likely(varonce95!=NULL)) {
+var96 = varonce95;
 } else {
-var77 = "[]";
-var78 = core__flat___NativeString___to_s_full(var77, 2l, 2l);
-var76 = var78;
-varonce75 = var76;
+var97 = "[]";
+var99 = (val*)(2l<<2|1);
+var100 = (val*)(2l<<2|1);
+var101 = (val*)((long)(0)<<2|3);
+var102 = (val*)((long)(0)<<2|3);
+var98 = core__flat___CString___to_s_unsafe(var97, var99, var100, var101, var102);
+var96 = var98;
+varonce95 = var96;
 }
 {
-var79 = core___core__Text___has_suffix(var_key60, var76);
+var103 = core___core__Text___has_suffix(var_key76, var96);
 }
-if (var79){
+if (var103){
 {
-ini___ini__ConfigTree___set_array(self, var_key60, var_val); /* Direct call ini#ConfigTree#set_array on <self:ConfigTree>*/
+ini___ini__ConfigTree___set_array(self, var_key76, var_val); /* Direct call ini$ConfigTree$set_array on <self:ConfigTree>*/
 }
 } else {
 {
-ini___ini__ConfigTree___set_node(self, var_key60, var_val); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
+ini___ini__ConfigTree___set_node(self, var_key76, var_val); /* Direct call ini$ConfigTree$set_node on <self:ConfigTree>*/
 }
 }
 }
 }
 }
 } else {
-goto BREAK_label80;
+goto BREAK_label104;
 }
 BREAK_label: (void)0;
 }
-BREAK_label80: (void)0;
+BREAK_label104: (void)0;
 {
-core___core__FileReader___core__stream__Stream__close(var_stream); /* Direct call file#FileReader#close on <var_stream:FileReader>*/
+core___core__FileReader___core__stream__Stream__close(var_stream); /* Direct call file$FileReader$close on <var_stream:FileReader>*/
 }
 RET_LABEL:;
 }
-/* method ini#ConfigTree#roots for (self: ConfigTree): Array[ConfigNode] */
+/* method ini$ConfigTree$roots for (self: ConfigTree): Array[ConfigNode] */
 val* ini___ini__ConfigTree___roots(val* self) {
 val* var /* : Array[ConfigNode] */;
 val* var1 /* : Array[ConfigNode] */;
 var1 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
 fatal_exit(1);
@@ -888,7 +1000,7 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#set_array for (self: ConfigTree, String, nullable String) */
+/* method ini$ConfigTree$set_array for (self: ConfigTree, String, nullable String) */
 void ini___ini__ConfigTree___set_array(val* self, val* p0, val* p1) {
 val* var_key /* var key: String */;
 val* var_value /* var value: nullable String */;
@@ -910,24 +1022,28 @@ val* var12 /* : NativeArray[String] */;
 static val* varonce;
 static val* varonce13;
 val* var14 /* : String */;
-char* var15 /* : NativeString */;
+char* var15 /* : CString */;
 val* var16 /* : String */;
-val* var17 /* : String */;
-val* var18 /* : String */;
+val* var17 /* : nullable Int */;
+val* var18 /* : nullable Int */;
+val* var19 /* : nullable Bool */;
+val* var20 /* : nullable Bool */;
+val* var21 /* : String */;
+val* var22 /* : String */;
 var_key = p0;
 var_value = p1;
 {
 var = ((long(*)(val* self))(var_key->class->vft[COLOR_core__abstract_text__Text__length]))(var_key); /* length on <var_key:String>*/
 }
 {
-{ /* Inline kernel#Int#- (var,2l) on <var:Int> */
+{ /* Inline kernel$Int$- (var,2l) on <var:Int> */
 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
 /* <2l:Int> isa OTHER */
 var3 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var3)) {
 var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var4 = var - 2l;
@@ -949,18 +1065,27 @@ if (var6){
 var7 = ini___ini__ConfigTree___get_node(self, var_key);
 }
 if (var7 == NULL) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 238);
 fatal_exit(1);
 } else {
-{ /* Inline ini#ConfigNode#children (var7) on <var7:nullable ConfigNode> */
+{ /* Inline ini$ConfigNode$children (var7) on <var7:nullable ConfigNode> */
 if (unlikely(var7 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
 }
 var10 = var7->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var7:nullable ConfigNode> */
 if (unlikely(var10 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -976,12 +1101,16 @@ var_len = var11;
 } else {
 }
 if (unlikely(varonce==NULL)) {
-var12 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+var12 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
 if (likely(varonce13!=NULL)) {
 var14 = varonce13;
 } else {
 var15 = ".";
-var16 = core__flat___NativeString___to_s_full(var15, 1l, 1l);
+var17 = (val*)(1l<<2|1);
+var18 = (val*)(1l<<2|1);
+var19 = (val*)((long)(0)<<2|3);
+var20 = (val*)((long)(0)<<2|3);
+var16 = core__flat___CString___to_s_unsafe(var15, var17, var18, var19, var20);
 var14 = var16;
 varonce13 = var14;
 }
@@ -992,230 +1121,247 @@ varonce = NULL;
 }
 ((struct instance_core__NativeArray*)var12)->values[0]=var_key;
 {
-var17 = core__flat___Int___core__abstract_text__Object__to_s(var_len);
+var21 = core__flat___Int___core__abstract_text__Object__to_s(var_len);
 }
-((struct instance_core__NativeArray*)var12)->values[2]=var17;
+((struct instance_core__NativeArray*)var12)->values[2]=var21;
 {
-var18 = ((val*(*)(val* self))(var12->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
+var22 = ((val*(*)(val* self))(var12->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var12); /* native_to_s on <var12:NativeArray[String]>*/
 }
 varonce = var12;
 {
-ini___ini__ConfigTree___set_node(self, var18, var_value); /* Direct call ini#ConfigTree#set_node on <self:ConfigTree>*/
+ini___ini__ConfigTree___set_node(self, var22, var_value); /* Direct call ini$ConfigTree$set_node on <self:ConfigTree>*/
 }
 RET_LABEL:;
 }
-/* method ini#ConfigTree#set_node for (self: ConfigTree, String, nullable String) */
+/* method ini$ConfigTree$set_node for (self: ConfigTree, String, nullable String) */
 void ini___ini__ConfigTree___set_node(val* self, val* p0, val* p1) {
 val* var_key /* var key: String */;
 val* var_value /* var value: nullable String */;
 static val* varonce;
 val* var /* : String */;
-char* var1 /* : NativeString */;
+char* var1 /* : CString */;
 val* var2 /* : String */;
-val* var3 /* : Array[String] */;
-val* var4 /* : Array[nullable Object] */;
+val* var3 /* : nullable Int */;
+val* var4 /* : nullable Int */;
+val* var5 /* : nullable Bool */;
+val* var6 /* : nullable Bool */;
+val* var7 /* : Array[String] */;
+val* var8 /* : Array[nullable Object] */;
 val* var_parts /* var parts: Array[String] */;
-val* var5 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_k /* var k: String */;
-val* var6 /* : nullable ConfigNode */;
+val* var10 /* : nullable ConfigNode */;
 val* var_root /* var root: nullable ConfigNode */;
-short int var7 /* : Bool */;
-short int var8 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var10 /* : Bool */;
+short int var11 /* : Bool */;
 short int var12 /* : Bool */;
-val* var13 /* : ConfigNode */;
+val* var_other /* var other: nullable Object */;
 short int var14 /* : Bool */;
-val* var16 /* : Array[ConfigNode] */;
-val* var18 /* : Array[ConfigNode] */;
-short int var19 /* : Bool */;
-short int var20 /* : Bool */;
-val* var21 /* : nullable Object */;
-val* var22 /* : nullable ConfigNode */;
-val* var_node /* var node: nullable ConfigNode */;
+short int var16 /* : Bool */;
+val* var17 /* : ConfigNode */;
+short int var18 /* : Bool */;
+val* var20 /* : Array[ConfigNode] */;
+val* var22 /* : Array[ConfigNode] */;
 short int var23 /* : Bool */;
 short int var24 /* : Bool */;
-short int var26 /* : Bool */;
+val* var25 /* : nullable Object */;
+val* var26 /* : nullable ConfigNode */;
+val* var_node /* var node: nullable ConfigNode */;
+short int var27 /* : Bool */;
 short int var28 /* : Bool */;
-val* var29 /* : ConfigNode */;
-val* var31 /* : HashMap[String, ConfigNode] */;
-val* var33 /* : HashMap[String, ConfigNode] */;
-val* var34 /* : String */;
-val* var36 /* : String */;
-short int var37 /* : Bool */;
+short int var30 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : ConfigNode */;
+val* var35 /* : HashMap[String, ConfigNode] */;
+val* var37 /* : HashMap[String, ConfigNode] */;
+val* var38 /* : String */;
+val* var40 /* : String */;
+short int var41 /* : Bool */;
 var_key = p0;
 var_value = p1;
 if (likely(varonce!=NULL)) {
 var = varonce;
 } else {
 var1 = ".";
-var2 = core__flat___NativeString___to_s_full(var1, 1l, 1l);
+var3 = (val*)(1l<<2|1);
+var4 = (val*)(1l<<2|1);
+var5 = (val*)((long)(0)<<2|3);
+var6 = (val*)((long)(0)<<2|3);
+var2 = core__flat___CString___to_s_unsafe(var1, var3, var4, var5, var6);
 var = var2;
 varonce = var;
 }
 {
-var3 = core__string_search___Text___split(var_key, var);
+var7 = core__string_search___Text___split(var_key, var);
 }
 {
-var4 = core___core__AbstractArrayRead___reversed(var3);
+var8 = core___core__AbstractArrayRead___reversed(var7);
 }
-var_parts = var4;
+var_parts = var8;
 {
-var5 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var9 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
-var_k = var5;
+var_k = var9;
 {
-var6 = ini___ini__ConfigTree___get_root(self, var_k);
+var10 = ini___ini__ConfigTree___get_root(self, var_k);
 }
-var_root = var6;
+var_root = var10;
 if (var_root == NULL) {
-var7 = 1; /* is null */
+var11 = 1; /* is null */
 } else {
-var7 = 0; /* arg is null but recv is not */
+var11 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_root,((val*)NULL)) on <var_root:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var_root,((val*)NULL)) on <var_root:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_root,var_other) on <var_root:nullable ConfigNode(ConfigNode)> */
-var12 = var_root == var_other;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+{ /* Inline kernel$Object$is_same_instance (var_root,var_other) on <var_root:nullable ConfigNode(ConfigNode)> */
+var16 = var_root == var_other;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
 }
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
-var7 = var8;
+var11 = var12;
 }
-if (var7){
-var13 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
+if (var11){
+var17 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
 {
-((void(*)(val* self, val* p0))(var13->class->vft[COLOR_ini__ConfigNode__name_61d]))(var13, var_k); /* name= on <var13:ConfigNode>*/
+((void(*)(val* self, val* p0))(var17->class->vft[COLOR_ini__ConfigNode__name_61d]))(var17, var_k); /* name= on <var17:ConfigNode>*/
 }
 {
-((void(*)(val* self))(var13->class->vft[COLOR_core__kernel__Object__init]))(var13); /* init on <var13:ConfigNode>*/
+((void(*)(val* self))(var17->class->vft[COLOR_core__kernel__Object__init]))(var17); /* init on <var17:ConfigNode>*/
 }
-var_root = var13;
+var_root = var17;
 {
-var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
+var18 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
 }
-if (var14){
+if (var18){
 {
-{ /* Inline ini#ConfigNode#value= (var_root,var_value) on <var_root:nullable ConfigNode(ConfigNode)> */
+{ /* Inline ini$ConfigNode$value= (var_root,var_value) on <var_root:nullable ConfigNode(ConfigNode)> */
 var_root->attrs[COLOR_ini__ConfigNode___value].val = var_value; /* _value on <var_root:nullable ConfigNode(ConfigNode)> */
-RET_LABEL15:(void)0;
+RET_LABEL19:(void)0;
 }
 }
 } else {
 }
 {
-{ /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
-var18 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
-if (unlikely(var18 == NULL)) {
+{ /* Inline ini$ConfigTree$roots (self) on <self:ConfigTree> */
+var22 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
+if (unlikely(var22 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
 fatal_exit(1);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-core___core__Array___core__abstract_collection__SimpleCollection__add(var16, var_root); /* Direct call array#Array#add on <var16:Array[ConfigNode]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var20, var_root); /* Direct call array$Array$add on <var20:Array[ConfigNode]>*/
 }
 } else {
 }
 for(;;) {
 {
-var19 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
+var23 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
 }
-var20 = !var19;
-if (var20){
+var24 = !var23;
+if (var24){
 {
-var21 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var25 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
-var_k = var21;
+var_k = var25;
 {
-var22 = ini___ini__ConfigNode___get_child(var_root, var_k);
+var26 = ini___ini__ConfigNode___get_child(var_root, var_k);
 }
-var_node = var22;
+var_node = var26;
 if (var_node == NULL) {
-var23 = 1; /* is null */
+var27 = 1; /* is null */
 } else {
-var23 = 0; /* arg is null but recv is not */
+var27 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
-var28 = var_node == var_other;
-var26 = var28;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+{ /* Inline kernel$Object$is_same_instance (var_node,var_other) on <var_node:nullable ConfigNode(ConfigNode)> */
+var32 = var_node == var_other;
+var30 = var32;
+goto RET_LABEL31;
+RET_LABEL31:(void)0;
 }
 }
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
-var23 = var24;
+var27 = var28;
 }
-if (var23){
-var29 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
+if (var27){
+var33 = NEW_ini__ConfigNode(&type_ini__ConfigNode);
 {
-((void(*)(val* self, val* p0))(var29->class->vft[COLOR_ini__ConfigNode__name_61d]))(var29, var_k); /* name= on <var29:ConfigNode>*/
+((void(*)(val* self, val* p0))(var33->class->vft[COLOR_ini__ConfigNode__name_61d]))(var33, var_k); /* name= on <var33:ConfigNode>*/
 }
 {
-((void(*)(val* self))(var29->class->vft[COLOR_core__kernel__Object__init]))(var29); /* init on <var29:ConfigNode>*/
+((void(*)(val* self))(var33->class->vft[COLOR_core__kernel__Object__init]))(var33); /* init on <var33:ConfigNode>*/
 }
-var_node = var29;
+var_node = var33;
 {
-{ /* Inline ini#ConfigNode#parent= (var_node,var_root) on <var_node:nullable ConfigNode(ConfigNode)> */
+{ /* Inline ini$ConfigNode$parent= (var_node,var_root) on <var_node:nullable ConfigNode(ConfigNode)> */
 var_node->attrs[COLOR_ini__ConfigNode___parent].val = var_root; /* _parent on <var_node:nullable ConfigNode(ConfigNode)> */
-RET_LABEL30:(void)0;
+RET_LABEL34:(void)0;
 }
 }
 {
-{ /* Inline ini#ConfigNode#children (var_root) on <var_root:nullable ConfigNode(ConfigNode)> */
-var33 = var_root->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_root:nullable ConfigNode(ConfigNode)> */
-if (unlikely(var33 == NULL)) {
+{ /* Inline ini$ConfigNode$children (var_root) on <var_root:nullable ConfigNode(ConfigNode)> */
+var37 = var_root->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_root:nullable ConfigNode(ConfigNode)> */
+if (unlikely(var37 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-{ /* Inline ini#ConfigNode#name (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
-var36 = var_node->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <var_node:nullable ConfigNode(ConfigNode)> */
-if (unlikely(var36 == NULL)) {
+{ /* Inline ini$ConfigNode$name (var_node) on <var_node:nullable ConfigNode(ConfigNode)> */
+var40 = var_node->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <var_node:nullable ConfigNode(ConfigNode)> */
+if (unlikely(var40 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
 fatal_exit(1);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var38 = var40;
+RET_LABEL39:(void)0;
 }
 }
 {
-core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var31, var34, var_node); /* Direct call hash_collection#HashMap#[]= on <var31:HashMap[String, ConfigNode]>*/
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var35, var38, var_node); /* Direct call hash_collection$HashMap$[]= on <var35:HashMap[String, ConfigNode]>*/
 }
 } else {
 }
 {
-var37 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
+var41 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
 }
-if (var37){
+if (var41){
 {
-{ /* Inline ini#ConfigNode#value= (var_node,var_value) on <var_node:nullable ConfigNode(ConfigNode)> */
+{ /* Inline ini$ConfigNode$value= (var_node,var_value) on <var_node:nullable ConfigNode(ConfigNode)> */
 var_node->attrs[COLOR_ini__ConfigNode___value].val = var_value; /* _value on <var_node:nullable ConfigNode(ConfigNode)> */
-RET_LABEL38:(void)0;
+RET_LABEL42:(void)0;
 }
 }
 } else {
@@ -1228,91 +1374,99 @@ goto BREAK_label;
 BREAK_label: (void)0;
 RET_LABEL:;
 }
-/* method ini#ConfigTree#get_node for (self: ConfigTree, String): nullable ConfigNode */
+/* method ini$ConfigTree$get_node for (self: ConfigTree, String): nullable ConfigNode */
 val* ini___ini__ConfigTree___get_node(val* self, val* p0) {
 val* var /* : nullable ConfigNode */;
 val* var_key /* var key: String */;
 static val* varonce;
 val* var1 /* : String */;
-char* var2 /* : NativeString */;
+char* var2 /* : CString */;
 val* var3 /* : String */;
-val* var4 /* : Array[String] */;
-val* var5 /* : Array[nullable Object] */;
+val* var4 /* : nullable Int */;
+val* var5 /* : nullable Int */;
+val* var6 /* : nullable Bool */;
+val* var7 /* : nullable Bool */;
+val* var8 /* : Array[String] */;
+val* var9 /* : Array[nullable Object] */;
 val* var_parts /* var parts: Array[String] */;
-val* var6 /* : nullable Object */;
-val* var7 /* : nullable ConfigNode */;
+val* var10 /* : nullable Object */;
+val* var11 /* : nullable ConfigNode */;
 val* var_node /* var node: nullable ConfigNode */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-val* var_other /* var other: nullable Object */;
 short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var_ /* var : Bool */;
 short int var14 /* : Bool */;
-short int var15 /* : Bool */;
-val* var16 /* : nullable Object */;
-val* var17 /* : nullable ConfigNode */;
+val* var_other /* var other: nullable Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var_ /* var : Bool */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+val* var20 /* : nullable Object */;
+val* var21 /* : nullable ConfigNode */;
 var_key = p0;
 if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
 var2 = ".";
-var3 = core__flat___NativeString___to_s_full(var2, 1l, 1l);
+var4 = (val*)(1l<<2|1);
+var5 = (val*)(1l<<2|1);
+var6 = (val*)((long)(0)<<2|3);
+var7 = (val*)((long)(0)<<2|3);
+var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
 var1 = var3;
 varonce = var1;
 }
 {
-var4 = core__string_search___Text___split(var_key, var1);
+var8 = core__string_search___Text___split(var_key, var1);
 }
 {
-var5 = core___core__AbstractArrayRead___reversed(var4);
+var9 = core___core__AbstractArrayRead___reversed(var8);
 }
-var_parts = var5;
+var_parts = var9;
 {
-var6 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var10 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
 {
-var7 = ini___ini__ConfigTree___get_root(self, var6);
+var11 = ini___ini__ConfigTree___get_root(self, var10);
 }
-var_node = var7;
+var_node = var11;
 for(;;) {
 if (var_node == NULL) {
-var9 = 0; /* is null */
+var13 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var13 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
+{ /* Inline kernel$Object$!= (var_node,((val*)NULL)) on <var_node:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-var12 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ConfigNode(ConfigNode)>*/
+var16 = ((short int(*)(val* self, val* p0))(var_node->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_node, var_other); /* == on <var_node:nullable ConfigNode(ConfigNode)>*/
 }
-var13 = !var12;
-var10 = var13;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var17 = !var16;
+var14 = var17;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
-var9 = var10;
+var13 = var14;
 }
-var_ = var9;
-if (var9){
+var_ = var13;
+if (var13){
 {
-var14 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
+var18 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var_parts);
 }
-var15 = !var14;
-var8 = var15;
+var19 = !var18;
+var12 = var19;
 } else {
-var8 = var_;
+var12 = var_;
 }
-if (var8){
+if (var12){
 {
-var16 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
+var20 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var_parts);
 }
 {
-var17 = ini___ini__ConfigNode___get_child(var_node, var16);
+var21 = ini___ini__ConfigNode___get_child(var_node, var20);
 }
-var_node = var17;
+var_node = var21;
 } else {
 goto BREAK_label;
 }
@@ -1323,7 +1477,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#get_root for (self: ConfigTree, String): nullable ConfigNode */
+/* method ini$ConfigTree$get_root for (self: ConfigTree, String): nullable ConfigNode */
 val* ini___ini__ConfigTree___get_root(val* self, val* p0) {
 val* var /* : nullable ConfigNode */;
 val* var_name /* var name: String */;
@@ -1340,9 +1494,12 @@ val* var10 /* : String */;
 short int var11 /* : Bool */;
 var_name = p0;
 {
-{ /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
+{ /* Inline ini$ConfigTree$roots (self) on <self:ConfigTree> */
 var3 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
 fatal_exit(1);
@@ -1369,9 +1526,12 @@ var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5-
 }
 var_root = var7;
 {
-{ /* Inline ini#ConfigNode#name (var_root) on <var_root:ConfigNode> */
+{ /* Inline ini$ConfigNode$name (var_root) on <var_root:ConfigNode> */
 var10 = var_root->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <var_root:ConfigNode> */
 if (unlikely(var10 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
 fatal_exit(1);
@@ -1401,7 +1561,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigTree#leaves for (self: ConfigTree): Array[ConfigNode] */
+/* method ini$ConfigTree$leaves for (self: ConfigTree): Array[ConfigNode] */
 val* ini___ini__ConfigTree___leaves(val* self) {
 val* var /* : Array[ConfigNode] */;
 val* var1 /* : Array[ConfigNode] */;
@@ -1422,18 +1582,21 @@ val* var15 /* : HashMap[String, ConfigNode] */;
 val* var16 /* : RemovableCollection[nullable Object] */;
 var1 = NEW_core__Array(&type_core__Array__ini__ConfigNode);
 {
-core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[ConfigNode]>*/
+core___core__Array___core__kernel__Object__init(var1); /* Direct call array$Array$init on <var1:Array[ConfigNode]>*/
 }
 var_res = var1;
 var2 = NEW_core__Array(&type_core__Array__ini__ConfigNode);
 {
-core___core__Array___core__kernel__Object__init(var2); /* Direct call array#Array#init on <var2:Array[ConfigNode]>*/
+core___core__Array___core__kernel__Object__init(var2); /* Direct call array$Array$init on <var2:Array[ConfigNode]>*/
 }
 var_todo = var2;
 {
-{ /* Inline ini#ConfigTree#roots (self) on <self:ConfigTree> */
+{ /* Inline ini$ConfigTree$roots (self) on <self:ConfigTree> */
 var5 = self->attrs[COLOR_ini__ConfigTree___roots].val; /* _roots on <self:ConfigTree> */
 if (unlikely(var5 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _roots");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 231);
 fatal_exit(1);
@@ -1443,7 +1606,7 @@ RET_LABEL4:(void)0;
 }
 }
 {
-core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var3); /* Direct call array#Array#add_all on <var_todo:Array[ConfigNode]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var3); /* Direct call array$Array$add_all on <var_todo:Array[ConfigNode]>*/
 }
 for(;;) {
 {
@@ -1456,9 +1619,12 @@ var8 = core___core__AbstractArray___core__abstract_collection__Sequence__pop(var
 }
 var_node = var8;
 {
-{ /* Inline ini#ConfigNode#children (var_node) on <var_node:ConfigNode> */
+{ /* Inline ini$ConfigNode$children (var_node) on <var_node:ConfigNode> */
 var11 = var_node->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_node:ConfigNode> */
 if (unlikely(var11 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -1472,13 +1638,16 @@ var12 = core___core__HashMap___core__abstract_collection__MapRead__is_empty(var9
 }
 if (var12){
 {
-core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_node); /* Direct call array#Array#add on <var_res:Array[ConfigNode]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_res, var_node); /* Direct call array$Array$add on <var_res:Array[ConfigNode]>*/
 }
 } else {
 {
-{ /* Inline ini#ConfigNode#children (var_node) on <var_node:ConfigNode> */
+{ /* Inline ini$ConfigNode$children (var_node) on <var_node:ConfigNode> */
 var15 = var_node->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <var_node:ConfigNode> */
 if (unlikely(var15 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -1491,7 +1660,7 @@ RET_LABEL14:(void)0;
 var16 = core___core__HashMap___core__abstract_collection__MapRead__values(var13);
 }
 {
-core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var16); /* Direct call array#Array#add_all on <var_todo:Array[ConfigNode]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_todo, var16); /* Direct call array$Array$add_all on <var_todo:Array[ConfigNode]>*/
 }
 }
 } else {
@@ -1504,7 +1673,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#parent for (self: ConfigNode): nullable ConfigNode */
+/* method ini$ConfigNode$parent for (self: ConfigNode): nullable ConfigNode */
 val* ini___ini__ConfigNode___parent(val* self) {
 val* var /* : nullable ConfigNode */;
 val* var1 /* : nullable ConfigNode */;
@@ -1513,17 +1682,20 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#parent= for (self: ConfigNode, nullable ConfigNode) */
+/* method ini$ConfigNode$parent= for (self: ConfigNode, nullable ConfigNode) */
 void ini___ini__ConfigNode___parent_61d(val* self, val* p0) {
 self->attrs[COLOR_ini__ConfigNode___parent].val = p0; /* _parent on <self:ConfigNode> */
 RET_LABEL:;
 }
-/* method ini#ConfigNode#children for (self: ConfigNode): HashMap[String, ConfigNode] */
+/* method ini$ConfigNode$children for (self: ConfigNode): HashMap[String, ConfigNode] */
 val* ini___ini__ConfigNode___children(val* self) {
 val* var /* : HashMap[String, ConfigNode] */;
 val* var1 /* : HashMap[String, ConfigNode] */;
 var1 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -1532,12 +1704,15 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#name for (self: ConfigNode): String */
+/* method ini$ConfigNode$name for (self: ConfigNode): String */
 val* ini___ini__ConfigNode___name(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
 var1 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
 if (unlikely(var1 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
 fatal_exit(1);
@@ -1546,12 +1721,12 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#name= for (self: ConfigNode, String) */
+/* method ini$ConfigNode$name= for (self: ConfigNode, String) */
 void ini___ini__ConfigNode___name_61d(val* self, val* p0) {
 self->attrs[COLOR_ini__ConfigNode___name].val = p0; /* _name on <self:ConfigNode> */
 RET_LABEL:;
 }
-/* method ini#ConfigNode#value for (self: ConfigNode): nullable String */
+/* method ini$ConfigNode$value for (self: ConfigNode): nullable String */
 val* ini___ini__ConfigNode___value(val* self) {
 val* var /* : nullable String */;
 val* var1 /* : nullable String */;
@@ -1560,12 +1735,12 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#value= for (self: ConfigNode, nullable String) */
+/* method ini$ConfigNode$value= for (self: ConfigNode, nullable String) */
 void ini___ini__ConfigNode___value_61d(val* self, val* p0) {
 self->attrs[COLOR_ini__ConfigNode___value].val = p0; /* _value on <self:ConfigNode> */
 RET_LABEL:;
 }
-/* method ini#ConfigNode#key for (self: ConfigNode): String */
+/* method ini$ConfigNode$key for (self: ConfigNode): String */
 val* ini___ini__ConfigNode___key(val* self) {
 val* var /* : String */;
 val* var1 /* : nullable ConfigNode */;
@@ -1581,16 +1756,20 @@ val* var13 /* : NativeArray[String] */;
 static val* varonce;
 static val* varonce14;
 val* var15 /* : String */;
-char* var16 /* : NativeString */;
+char* var16 /* : CString */;
 val* var17 /* : String */;
-val* var18 /* : nullable ConfigNode */;
-val* var20 /* : nullable ConfigNode */;
-val* var21 /* : String */;
-val* var22 /* : String */;
-val* var24 /* : String */;
+val* var18 /* : nullable Int */;
+val* var19 /* : nullable Int */;
+val* var20 /* : nullable Bool */;
+val* var21 /* : nullable Bool */;
+val* var22 /* : nullable ConfigNode */;
+val* var24 /* : nullable ConfigNode */;
 val* var25 /* : String */;
+val* var26 /* : String */;
+val* var28 /* : String */;
+val* var29 /* : String */;
 {
-{ /* Inline ini#ConfigNode#parent (self) on <self:ConfigNode> */
+{ /* Inline ini$ConfigNode$parent (self) on <self:ConfigNode> */
 var3 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -1602,10 +1781,10 @@ var4 = 1; /* is null */
 var4 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable ConfigNode> */
+{ /* Inline kernel$Object$== (var1,((val*)NULL)) on <var1:nullable ConfigNode> */
 var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable ConfigNode(ConfigNode)> */
+{ /* Inline kernel$Object$is_same_instance (var1,var_other) on <var1:nullable ConfigNode(ConfigNode)> */
 var9 = var1 == var_other;
 var7 = var9;
 goto RET_LABEL8;
@@ -1620,9 +1799,12 @@ var4 = var5;
 }
 if (var4){
 {
-{ /* Inline ini#ConfigNode#name (self) on <self:ConfigNode> */
+{ /* Inline ini$ConfigNode$name (self) on <self:ConfigNode> */
 var12 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
 if (unlikely(var12 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
 fatal_exit(1);
@@ -1636,12 +1818,16 @@ goto RET_LABEL;
 } else {
 }
 if (unlikely(varonce==NULL)) {
-var13 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+var13 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
 if (likely(varonce14!=NULL)) {
 var15 = varonce14;
 } else {
 var16 = ".";
-var17 = core__flat___NativeString___to_s_full(var16, 1l, 1l);
+var18 = (val*)(1l<<2|1);
+var19 = (val*)(1l<<2|1);
+var20 = (val*)((long)(0)<<2|3);
+var21 = (val*)((long)(0)<<2|3);
+var17 = core__flat___CString___to_s_unsafe(var16, var18, var19, var20, var21);
 var15 = var17;
 varonce14 = var15;
 }
@@ -1651,43 +1837,49 @@ var13 = varonce;
 varonce = NULL;
 }
 {
-{ /* Inline ini#ConfigNode#parent (self) on <self:ConfigNode> */
-var20 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
-var18 = var20;
-RET_LABEL19:(void)0;
+{ /* Inline ini$ConfigNode$parent (self) on <self:ConfigNode> */
+var24 = self->attrs[COLOR_ini__ConfigNode___parent].val; /* _parent on <self:ConfigNode> */
+var22 = var24;
+RET_LABEL23:(void)0;
+}
 }
+if (var22 == NULL) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
 }
-if (var18 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 312);
 fatal_exit(1);
 } else {
-var21 = ini___ini__ConfigNode___key(var18);
+var25 = ini___ini__ConfigNode___key(var22);
 }
-((struct instance_core__NativeArray*)var13)->values[0]=var21;
+((struct instance_core__NativeArray*)var13)->values[0]=var25;
 {
-{ /* Inline ini#ConfigNode#name (self) on <self:ConfigNode> */
-var24 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
-if (unlikely(var24 == NULL)) {
+{ /* Inline ini$ConfigNode$name (self) on <self:ConfigNode> */
+var28 = self->attrs[COLOR_ini__ConfigNode___name].val; /* _name on <self:ConfigNode> */
+if (unlikely(var28 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 305);
 fatal_exit(1);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
-((struct instance_core__NativeArray*)var13)->values[2]=var22;
+((struct instance_core__NativeArray*)var13)->values[2]=var26;
 {
-var25 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
+var29 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var13); /* native_to_s on <var13:NativeArray[String]>*/
 }
 varonce = var13;
-var = var25;
+var = var29;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#get_child for (self: ConfigNode, String): nullable ConfigNode */
+/* method ini$ConfigNode$get_child for (self: ConfigNode, String): nullable ConfigNode */
 val* ini___ini__ConfigNode___get_child(val* self, val* p0) {
 val* var /* : nullable ConfigNode */;
 val* var_name /* var name: String */;
@@ -1699,9 +1891,12 @@ val* var7 /* : HashMap[String, ConfigNode] */;
 val* var8 /* : nullable Object */;
 var_name = p0;
 {
-{ /* Inline ini#ConfigNode#children (self) on <self:ConfigNode> */
+{ /* Inline ini$ConfigNode$children (self) on <self:ConfigNode> */
 var3 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
 if (unlikely(var3 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -1715,9 +1910,12 @@ var4 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var1,
 }
 if (var4){
 {
-{ /* Inline ini#ConfigNode#children (self) on <self:ConfigNode> */
+{ /* Inline ini$ConfigNode$children (self) on <self:ConfigNode> */
 var7 = self->attrs[COLOR_ini__ConfigNode___children].val; /* _children on <self:ConfigNode> */
 if (unlikely(var7 == NULL)) {
+if(catchStack.cursor >= 0){
+longjmp(catchStack.envs[catchStack.cursor], 1);
+}
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _children");
 PRINT_ERROR(" (%s:%d)\n", FILE_ini, 304);
 fatal_exit(1);
@@ -1738,7 +1936,7 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method ini#ConfigNode#init for (self: ConfigNode) */
+/* method ini$ConfigNode$init for (self: ConfigNode) */
 void ini___ini__ConfigNode___core__kernel__Object__init(val* self) {
 {
 ((void(*)(val* self))(self->class->vft[COLOR_ini___ini__ConfigNode___core__kernel__Object__init]))(self); /* init on <self:ConfigNode>*/