model_utils: extract mclasses and mclassdefs from MProject and Mgroup
[nit.git] / c_src / file.sep.1.c
index 5f9c5b6..300b48b 100644 (file)
@@ -163,9 +163,9 @@ val* var1 /* : nullable NativeFile */;
 void* var2 /* : FileStat */;
 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:FStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 66);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 74);
+show_backtrace(1);
 } else {
 var2 = ((void* (*)(val*))(var1->class->vft[COLOR_file__NativeFile__file_stat]))(var1) /* file_stat on <var1:nullable NativeFile>*/;
 }
@@ -213,9 +213,9 @@ if (var1){
 var2 = NULL/*special!*/;
 var3 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 80);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88);
+show_backtrace(1);
 } else {
 var4 = ((char* (*)(val*))(var3->class->vft[COLOR_string__String__to_cstring]))(var3) /* to_cstring on <var3:nullable String>*/;
 }
@@ -228,9 +228,9 @@ var8 = 0;
 self->attrs[COLOR_stream__BufferedIStream___buffer_pos].l = var8; /* _buffer_pos on <self:IFStream> */
 var9 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 83);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 91);
+show_backtrace(1);
 } else {
 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__RemovableCollection__clear]))(var9) /* clear on <var9:nullable Buffer>*/;
 }
@@ -249,9 +249,9 @@ long var_i /* var i: Int */;
 short int var2 /* : Bool */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 88);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 96);
+show_backtrace(1);
 } else {
 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
 }
@@ -288,22 +288,22 @@ long var14 /* : Int */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:IFStream> */
 var1 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
+show_backtrace(1);
 }
 var2 = var1->attrs[COLOR_string__AbstractString___items].str; /* _items on <var1:nullable Buffer> */
 var3 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
+show_backtrace(1);
 }
 var4 = var3->attrs[COLOR_string__Buffer___capacity].l; /* _capacity on <var3:nullable Buffer> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 94);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 102);
+show_backtrace(1);
 } else {
 var5 = ((long (*)(val*, char*, long))(var->class->vft[COLOR_file__NativeFile__io_read]))(var, var2, var4) /* io_read on <var:nullable NativeFile>*/;
 }
@@ -316,8 +316,8 @@ var9 = 1; /* easy <var6:Int> isa OTHER*/
 if (!var9) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
+show_backtrace(1);
 }
 var10 = var_nb <= var6;
 var7 = var10;
@@ -333,9 +333,9 @@ var_nb = var12;
 }
 var13 = self->attrs[COLOR_stream__BufferedIStream___buffer].val; /* _buffer on <self:IFStream> */
 if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 99);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 107);
+show_backtrace(1);
 }
 var13->attrs[COLOR_array__AbstractArrayRead___length].l = var_nb; /* _length on <var13:nullable Buffer> */
 var14 = 0;
@@ -386,9 +386,9 @@ var = 10;
 var1 = NULL/*special!*/;
 var2 = self->attrs[COLOR_file__FStream___path].val; /* _path on <self:IFStream> */
 if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 111);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 119);
+show_backtrace(1);
 } else {
 var3 = ((char* (*)(val*))(var2->class->vft[COLOR_string__String__to_cstring]))(var2) /* to_cstring on <var2:nullable String>*/;
 }
@@ -404,8 +404,8 @@ var8 = 1; /* arg is null and recv is not */
 }
 if (!var8) {
 fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 112);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 120);
+show_backtrace(1);
 }
 RET_LABEL:;
 }
@@ -446,8 +446,8 @@ var_s = p0;
 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
 if (!var) {
 fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 126);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 134);
+show_backtrace(1);
 }
 var1 = ((char* (*)(val*))(var_s->class->vft[COLOR_string__String__to_cstring]))(var_s) /* to_cstring on <var_s:String>*/;
 var2 = ((long (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__length]))(var_s) /* length on <var_s:String>*/;
@@ -486,9 +486,9 @@ long var_i /* var i: Int */;
 short int var2 /* : Bool */;
 var = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 134);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 142);
+show_backtrace(1);
 } else {
 var1 = ((long (*)(val*))(var->class->vft[COLOR_file__NativeFile__io_close]))(var) /* io_close on <var:nullable NativeFile>*/;
 }
@@ -538,14 +538,14 @@ var_len = p1;
 var = self->attrs[COLOR_file__OFStream___writable].s; /* _writable on <self:OFStream> */
 if (!var) {
 fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 144);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 152);
+show_backtrace(1);
 }
 var1 = self->attrs[COLOR_file__FStream___file].val; /* _file on <self:OFStream> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 145);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 153);
+show_backtrace(1);
 } else {
 var2 = ((long (*)(val*, char*, long))(var1->class->vft[COLOR_file__NativeFile__io_write]))(var1, var_native, var_len) /* io_write on <var1:nullable NativeFile>*/;
 }
@@ -597,7 +597,6 @@ var25 = BOX_kernel__Int(var_len); /* autobox from Int to Object */
 ((struct instance_array__NativeArray*)var23)->values[3] = (val*) var25;
 ((struct instance_array__NativeArray*)var23)->values[4] = (val*) var17;
 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
-CHECK_NEW_array__Array(var21);
 }
 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__printn]))(self, var21) /* printn on <self:OFStream>*/;
 } else {
@@ -636,8 +635,8 @@ var6 = 1; /* arg is null and recv is not */
 }
 if (!var6) {
 fprintf(stderr, "Runtime error: %s", "Assert \'cant_open_file\' failed");
-fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 156);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/file.nit", 164);
+show_backtrace(1);
 }
 self->attrs[COLOR_file__FStream___path].val = var_path; /* _path on <self:OFStream> */
 var7 = 1;
@@ -877,6 +876,45 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* method file#String#file_copy_to for (self: String, String) */
+void file__String__file_copy_to(val* self, val* p0) {
+val* var_dest /* var dest: String */;
+val* var /* : IFStream */;
+val* var_input /* var input: IFStream */;
+val* var1 /* : OFStream */;
+val* var_output /* var output: OFStream */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+long var4 /* : Int */;
+val* var5 /* : String */;
+val* var_buffer /* var buffer: String */;
+var_dest = p0;
+var = NEW_file__IFStream(&type_file__IFStream);
+((void (*)(val*, val*))(var->class->vft[COLOR_file__IFStream__open]))(var, self) /* open on <var:IFStream>*/;
+var_input = var;
+var1 = NEW_file__OFStream(&type_file__OFStream);
+((void (*)(val*, val*))(var1->class->vft[COLOR_file__OFStream__open]))(var1, var_dest) /* open on <var1:OFStream>*/;
+var_output = var1;
+for(;;) {
+var2 = ((short int (*)(val*))(var_input->class->vft[COLOR_stream__IStream__eof]))(var_input) /* eof on <var_input:IFStream>*/;
+var3 = !var2;
+if (!var3) break;
+var4 = 1024;
+var5 = ((val* (*)(val*, long))(var_input->class->vft[COLOR_stream__IStream__read]))(var_input, var4) /* read on <var_input:IFStream>*/;
+var_buffer = var5;
+((void (*)(val*, val*))(var_output->class->vft[COLOR_stream__OStream__write]))(var_output, var_buffer) /* write on <var_output:OFStream>*/;
+CONTINUE_label: (void)0;
+}
+BREAK_label: (void)0;
+((void (*)(val*))(var_input->class->vft[COLOR_stream__IOS__close]))(var_input) /* close on <var_input:IFStream>*/;
+((void (*)(val*))(var_output->class->vft[COLOR_stream__IOS__close]))(var_output) /* close on <var_output:OFStream>*/;
+RET_LABEL:;
+}
+/* method file#String#file_copy_to for (self: Object, String) */
+void VIRTUAL_file__String__file_copy_to(val* self, val* p0) {
+file__String__file_copy_to(self, p0);
+RET_LABEL:;
+}
 /* method file#String#strip_extension for (self: String, String): String */
 val* file__String__strip_extension(val* self, val* p0) {
 val* var /* : String */;
@@ -966,8 +1004,8 @@ var12 = 1; /* easy <var9:Int> isa OTHER*/
 if (!var12) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
+show_backtrace(1);
 }
 var13 = var_pos >= var9;
 var10 = var13;
@@ -1018,40 +1056,41 @@ int idtype;
 const char* var_class_name;
 short int var11 /* : Bool */;
 short int var_ /* var : Bool */;
-val* var12 /* : nullable Object */;
-char var13 /* : Char */;
-short int var14 /* : Bool */;
-short int var16 /* : Bool */;
-char var17 /* : Char */;
-long var18 /* : Int */;
+val* var12 /* : StringCharView */;
+val* var13 /* : nullable Object */;
+char var14 /* : Char */;
+short int var15 /* : Bool */;
+short int var17 /* : Bool */;
+char var18 /* : Char */;
 long var19 /* : Int */;
-long var21 /* : Int */;
-char var22 /* : Char */;
-long var23 /* : Int */;
-val* var24 /* : nullable Object */;
+long var20 /* : Int */;
+long var22 /* : Int */;
+char var23 /* : Char */;
+long var24 /* : Int */;
+val* var25 /* : nullable Object */;
 long var_pos /* var pos: Int */;
-long var25 /* : Int */;
-short int var26 /* : Bool */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name31;
-short int var32 /* : Bool */;
-long var33 /* : Int */;
-val* var34 /* : String */;
-long var35 /* : Int */;
-short int var36 /* : Bool */;
-short int var38 /* : Bool */;
+long var26 /* : Int */;
+short int var27 /* : Bool */;
+short int var29 /* : Bool */;
+int cltype30;
+int idtype31;
+const char* var_class_name32;
+short int var33 /* : Bool */;
+long var34 /* : Int */;
+val* var35 /* : String */;
+long var36 /* : Int */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
 static val* varonce;
-val* var39 /* : String */;
-char* var40 /* : NativeString */;
-long var41 /* : Int */;
-val* var42 /* : String */;
-static val* varonce43;
-val* var44 /* : String */;
-char* var45 /* : NativeString */;
-long var46 /* : Int */;
-val* var47 /* : String */;
+val* var40 /* : String */;
+char* var41 /* : NativeString */;
+long var42 /* : Int */;
+val* var43 /* : String */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+long var47 /* : Int */;
+val* var48 /* : String */;
 var1 = self->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <self:String> */
 var2 = 1;
 { /* Inline kernel#Int#- (var1,var2) */
@@ -1069,8 +1108,8 @@ var10 = 1; /* easy <var7:Int> isa OTHER*/
 if (!var10) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
+show_backtrace(1);
 }
 var11 = var_l > var7;
 var8 = var11;
@@ -1079,89 +1118,90 @@ RET_LABEL9:(void)0;
 }
 var_ = var8;
 if (var8){
-var12 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(self, var_l) /* [] on <self:String>*/;
-var13 = '/';
-{ /* Inline kernel#Char#== (var12,var13) */
-var16 = (var12 != NULL) && (var12->class == &class_kernel__Char);
-if (var16) {
-var17 = ((struct instance_kernel__Char*)var12)->value; /* autounbox from nullable Object to Char */;
-var16 = (var17 == var13);
-}
-var14 = var16;
-goto RET_LABEL15;
-RET_LABEL15:(void)0;
-}
-var6 = var14;
+var12 = ((val* (*)(val*))(self->class->vft[COLOR_string__AbstractString__chars]))(self) /* chars on <self:String>*/;
+var13 = ((val* (*)(val*, long))(var12->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var12, var_l) /* [] on <var12:StringCharView>*/;
+var14 = '/';
+{ /* Inline kernel#Char#== (var13,var14) */
+var17 = (var13 != NULL) && (var13->class == &class_kernel__Char);
+if (var17) {
+var18 = ((struct instance_kernel__Char*)var13)->value; /* autounbox from nullable Object to Char */;
+var17 = (var18 == var14);
+}
+var15 = var17;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+var6 = var15;
 } else {
 var6 = var_;
 }
 if (var6){
-var18 = 1;
-{ /* Inline kernel#Int#- (var_l,var18) */
-var21 = var_l - var18;
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
-}
-var_l = var19;
-} else {
+var19 = 1;
+{ /* Inline kernel#Int#- (var_l,var19) */
+var22 = var_l - var19;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
 }
-var22 = '/';
-var24 = BOX_kernel__Char(var22); /* autobox from Char to nullable Object */
-var23 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var24, var_l) /* last_index_of_from on <self:String>*/;
-var_pos = var23;
-var25 = 0;
-{ /* Inline kernel#Int#> (var_pos,var25) */
-/* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
-/* <var25:Int> isa OTHER */
-var28 = 1; /* easy <var25:Int> isa OTHER*/
-if (!var28) {
-var_class_name31 = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
-}
-var32 = var_pos > var25;
-var26 = var32;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var_l = var20;
+} else {
 }
-if (var26){
-var33 = 0;
-var34 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var33, var_pos) /* substring on <self:String>*/;
-var = var34;
+var23 = '/';
+var25 = BOX_kernel__Char(var23); /* autobox from Char to nullable Object */
+var24 = ((long (*)(val*, val*, long))(self->class->vft[COLOR_array__AbstractArrayRead__last_index_of_from]))(self, var25, var_l) /* last_index_of_from on <self:String>*/;
+var_pos = var24;
+var26 = 0;
+{ /* Inline kernel#Int#> (var_pos,var26) */
+/* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
+/* <var26:Int> isa OTHER */
+var29 = 1; /* easy <var26:Int> isa OTHER*/
+if (!var29) {
+var_class_name32 = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
+show_backtrace(1);
+}
+var33 = var_pos > var26;
+var27 = var33;
+goto RET_LABEL28;
+RET_LABEL28:(void)0;
+}
+if (var27){
+var34 = 0;
+var35 = ((val* (*)(val*, long, long))(self->class->vft[COLOR_string__AbstractString__substring]))(self, var34, var_pos) /* substring on <self:String>*/;
+var = var35;
 goto RET_LABEL;
 } else {
-var35 = 0;
-{ /* Inline kernel#Int#== (var_pos,var35) */
-var38 = var_pos == var35;
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
-}
-if (var36){
+var36 = 0;
+{ /* Inline kernel#Int#== (var_pos,var36) */
+var39 = var_pos == var36;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
+}
+if (var37){
 if (varonce) {
-var39 = varonce;
+var40 = varonce;
 } else {
-var40 = "/";
-var41 = 1;
-var42 = string__NativeString__to_s_with_length(var40, var41);
-var39 = var42;
-varonce = var39;
+var41 = "/";
+var42 = 1;
+var43 = string__NativeString__to_s_with_length(var41, var42);
+var40 = var43;
+varonce = var40;
 }
-var = var39;
+var = var40;
 goto RET_LABEL;
 } else {
-if (varonce43) {
-var44 = varonce43;
+if (varonce44) {
+var45 = varonce44;
 } else {
-var45 = ".";
-var46 = 1;
-var47 = string__NativeString__to_s_with_length(var45, var46);
-var44 = var47;
-varonce43 = var44;
+var46 = ".";
+var47 = 1;
+var48 = string__NativeString__to_s_with_length(var46, var47);
+var45 = var48;
+varonce44 = var45;
 }
-var = var44;
+var = var45;
 goto RET_LABEL;
 }
 }
@@ -1177,6 +1217,33 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* method file#String#realpath for (self: String): String */
+val* file__String__realpath(val* self) {
+val* var /* : String */;
+char* var1 /* : NativeString */;
+char* var2 /* : NativeString */;
+char* var_cs /* var cs: NativeString */;
+val* var3 /* : String */;
+val* var_res /* var res: String */;
+var1 = ((char* (*)(val*))(self->class->vft[COLOR_string__String__to_cstring]))(self) /* to_cstring on <self:String>*/;
+var2 = file__NativeString__file_realpath(var1);
+var_cs = var2;
+var3 = string__NativeString__to_s_with_copy(var_cs);
+var_res = var3;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method file#String#realpath for (self: Object): String */
+val* VIRTUAL_file__String__realpath(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = file__String__realpath(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
 /* method file#String#simplify_path for (self: String): String */
 val* file__String__simplify_path(val* self) {
 val* var /* : String */;
@@ -1229,12 +1296,18 @@ long var41 /* : Int */;
 val* var42 /* : String */;
 short int var43 /* : Bool */;
 val* var44 /* : nullable Object */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : String */;
+short int var45 /* : Bool */;
+static val* varonce46;
+val* var47 /* : String */;
+char* var48 /* : NativeString */;
+long var49 /* : Int */;
 val* var50 /* : String */;
+static val* varonce51;
+val* var52 /* : String */;
+char* var53 /* : NativeString */;
+long var54 /* : Int */;
+val* var55 /* : String */;
+val* var56 /* : String */;
 if (varonce) {
 var1 = varonce;
 } else {
@@ -1248,7 +1321,6 @@ var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__spl
 var_a = var5;
 var6 = NEW_array__Array(&type_array__Arraystring__String);
 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
-CHECK_NEW_array__Array(var6);
 var_a2 = var6;
 var7 = ((val* (*)(val*))(var_a->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_a) /* iterator on <var_a:Array[String]>*/;
 for(;;) {
@@ -1338,17 +1410,32 @@ CONTINUE_label: (void)0;
 ((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
 }
 BREAK_label: (void)0;
-if (varonce45) {
-var46 = varonce45;
+var45 = ((short int (*)(val*))(var_a2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_a2) /* is_empty on <var_a2:Array[String]>*/;
+if (var45){
+if (varonce46) {
+var47 = varonce46;
+} else {
+var48 = ".";
+var49 = 1;
+var50 = string__NativeString__to_s_with_length(var48, var49);
+var47 = var50;
+varonce46 = var47;
+}
+var = var47;
+goto RET_LABEL;
+} else {
+}
+if (varonce51) {
+var52 = varonce51;
 } else {
-var47 = "/";
-var48 = 1;
-var49 = string__NativeString__to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
-}
-var50 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var46) /* join on <var_a2:Array[String]>*/;
-var = var50;
+var53 = "/";
+var54 = 1;
+var55 = string__NativeString__to_s_with_length(var53, var54);
+var52 = var55;
+varonce51 = var52;
+}
+var56 = ((val* (*)(val*, val*))(var_a2->class->vft[COLOR_string__Collection__join]))(var_a2, var52) /* join on <var_a2:Array[String]>*/;
+var = var56;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1368,31 +1455,32 @@ val* var /* : String */;
 val* var_path /* var path: String */;
 short int var1 /* : Bool */;
 short int var2 /* : Bool */;
-long var3 /* : Int */;
-val* var4 /* : nullable Object */;
-char var5 /* : Char */;
-short int var6 /* : Bool */;
-short int var8 /* : Bool */;
-char var9 /* : Char */;
-val* var10 /* : Array[Object] */;
-long var11 /* : Int */;
+val* var3 /* : StringCharView */;
+long var4 /* : Int */;
+val* var5 /* : nullable Object */;
+char var6 /* : Char */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+char var10 /* : Char */;
+val* var11 /* : Array[Object] */;
+long var12 /* : Int */;
 val* var_ /* var : Array[Object] */;
 static val* varonce;
-val* var12 /* : String */;
-char* var13 /* : NativeString */;
-long var14 /* : Int */;
-val* var15 /* : String */;
-static val* varonce16;
-val* var17 /* : String */;
-char* var18 /* : NativeString */;
-long var19 /* : Int */;
-val* var20 /* : String */;
-static val* varonce21;
-val* var22 /* : String */;
-char* var23 /* : NativeString */;
-long var24 /* : Int */;
-val* var25 /* : String */;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : String */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : String */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
 val* var26 /* : String */;
+val* var27 /* : String */;
 var_path = p0;
 var1 = ((short int (*)(val*))(var_path->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_path) /* is_empty on <var_path:String>*/;
 if (var1){
@@ -1406,63 +1494,63 @@ var = var_path;
 goto RET_LABEL;
 } else {
 }
-var3 = 0;
-var4 = ((val* (*)(val*, long))(var_path->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_path, var3) /* [] on <var_path:String>*/;
-var5 = '/';
-{ /* Inline kernel#Char#== (var4,var5) */
-var8 = (var4 != NULL) && (var4->class == &class_kernel__Char);
-if (var8) {
-var9 = ((struct instance_kernel__Char*)var4)->value; /* autounbox from nullable Object to Char */;
-var8 = (var9 == var5);
-}
-var6 = var8;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
+var3 = ((val* (*)(val*))(var_path->class->vft[COLOR_string__AbstractString__chars]))(var_path) /* chars on <var_path:String>*/;
+var4 = 0;
+var5 = ((val* (*)(val*, long))(var3->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var3, var4) /* [] on <var3:StringCharView>*/;
+var6 = '/';
+{ /* Inline kernel#Char#== (var5,var6) */
+var9 = (var5 != NULL) && (var5->class == &class_kernel__Char);
+if (var9) {
+var10 = ((struct instance_kernel__Char*)var5)->value; /* autounbox from nullable Object to Char */;
+var9 = (var10 == var6);
+}
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-if (var6){
+if (var7){
 var = var_path;
 goto RET_LABEL;
 } else {
 }
-var10 = NEW_array__Array(&type_array__Arraykernel__Object);
-var11 = 5;
-((void (*)(val*, long))(var10->class->vft[COLOR_array__Array__with_capacity]))(var10, var11) /* with_capacity on <var10:Array[Object]>*/;
-CHECK_NEW_array__Array(var10);
-var_ = var10;
+var11 = NEW_array__Array(&type_array__Arraykernel__Object);
+var12 = 5;
+((void (*)(val*, long))(var11->class->vft[COLOR_array__Array__with_capacity]))(var11, var12) /* with_capacity on <var11:Array[Object]>*/;
+var_ = var11;
 if (varonce) {
-var12 = varonce;
+var13 = varonce;
 } else {
-var13 = "";
-var14 = 0;
-var15 = string__NativeString__to_s_with_length(var13, var14);
-var12 = var15;
-varonce = var12;
+var14 = "";
+var15 = 0;
+var16 = string__NativeString__to_s_with_length(var14, var15);
+var13 = var16;
+varonce = var13;
 }
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var12) /* add on <var_:Array[Object]>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, self) /* add on <var_:Array[Object]>*/;
-if (varonce16) {
-var17 = varonce16;
+if (varonce17) {
+var18 = varonce17;
 } else {
-var18 = "/";
-var19 = 1;
-var20 = string__NativeString__to_s_with_length(var18, var19);
-var17 = var20;
-varonce16 = var17;
+var19 = "/";
+var20 = 1;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce17 = var18;
 }
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var18) /* add on <var_:Array[Object]>*/;
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_path) /* add on <var_:Array[Object]>*/;
-if (varonce21) {
-var22 = varonce21;
+if (varonce22) {
+var23 = varonce22;
 } else {
-var23 = "";
-var24 = 0;
-var25 = string__NativeString__to_s_with_length(var23, var24);
-var22 = var25;
-varonce21 = var22;
-}
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
-var26 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
-var = var26;
+var24 = "";
+var25 = 0;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce22 = var23;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
+var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
+var = var27;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1516,7 +1604,6 @@ var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_string_search__String__spl
 var_dirs = var4;
 var5 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var5->class->vft[COLOR_string__Buffer__init]))(var5) /* init on <var5:Buffer>*/;
-CHECK_NEW_string__Buffer(var5);
 var_path = var5;
 var6 = ((short int (*)(val*))(var_dirs->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_dirs) /* is_empty on <var_dirs:Array[String]>*/;
 if (var6){
@@ -1606,8 +1693,8 @@ var7 = 1; /* easy <var4:Int> isa OTHER*/
 if (!var7) {
 var_class_name = type_kernel__Int.name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 262);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
+show_backtrace(1);
 }
 var8 = var_last_slash >= var4;
 var5 = var8;
@@ -1646,11 +1733,75 @@ return var;
 /* method file#String#files for (self: String): Set[String] */
 val* file__String__files(val* self) {
 val* var /* : Set[String] */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#String#files at lib/standard/file.nit:345,2--346,159\n");
-exit(1);
+val* var1 /* : Set[String] */;
+struct nitni_instance* var_for_c_0;
+var_for_c_0 = malloc(sizeof(struct nitni_instance));
+var_for_c_0->value = self;
+struct nitni_instance* ret_var;
+ret_var = file___String_files___impl(var_for_c_0);
+var1 = ret_var->value;
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
+/* nitni callback for standard::hash_collection::HashSet::init */
+struct nitni_instance * file___new_HashSet_of_String(  ) {
+val* var /* : HashSet[String] */;
+var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetstring__String);
+val* recv /* var self: HashSet[String] */;
+recv = var;
+((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashSet__init]))(var) /* init on <var:HashSet[String]>*/;
+struct nitni_instance* ret_for_c;
+ret_for_c = malloc(sizeof(struct nitni_instance));
+ret_for_c->value = var;
+return ret_for_c;
+}
+/* nitni callback for standard::abstract_collection::SimpleCollection::add */
+void file___HashSet_of_String_add( struct nitni_instance * recv, struct nitni_instance * item ) {
+((void (*)(val*, val*))(recv->value->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(recv->value, item->value) /* add on <recv->value:HashSet[String]>*/;
+}
+/* nitni callback for standard::string::Object::to_s */
+struct nitni_instance * file___NativeString_to_s( char* recv ) {
+val* var /* : String */;
+var = string__NativeString__to_s(recv);
+struct nitni_instance* ret_for_c;
+ret_for_c = malloc(sizeof(struct nitni_instance));
+ret_for_c->value = var;
+return ret_for_c;
+}
+/* nitni callback for standard::string::String::to_cstring */
+char* file___String_to_cstring( struct nitni_instance * recv ) {
+char* var /* : NativeString */;
+var = ((char* (*)(val*))(recv->value->class->vft[COLOR_string__String__to_cstring]))(recv->value) /* to_cstring on <recv->value:String>*/;
+return var;
+}
+/* nitni check for HashSet[String] to Set[String] */
+int file___HashSet_of_String_is_a_Set_of_String(struct nitni_instance * from) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+/* <from->value:HashSet[String]> isa Set[String] */
+var = 1; /* easy <from->value:HashSet[String]> isa Set[String]*/
+return var;
+}
+/* nitni cast for HashSet[String] to Set[String] */
+struct nitni_instance * file___HashSet_of_String_as_Set_of_String(struct nitni_instance * from) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+/* <from->value:HashSet[String]> isa Set[String] */
+var = 1; /* easy <from->value:HashSet[String]> isa Set[String]*/
+if (!var) {
+fprintf(stderr, "Runtime error: %s", "FFI cast failed");
+fprintf(stderr, "\n");
+show_backtrace(1);
+}
+struct nitni_instance* ret_for_c;
+ret_for_c = malloc(sizeof(struct nitni_instance));
+ret_for_c->value = from->value;
+return ret_for_c;
+}
 /* method file#String#files for (self: Object): Set[String] */
 val* VIRTUAL_file__String__files(val* self) {
 val* var /* : Set[String] */;
@@ -1705,8 +1856,10 @@ return var;
 /* method file#NativeString#file_lstat for (self: NativeString): FileStat */
 void* file__NativeString__file_lstat(char* self) {
 void* var /* : FileStat */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#NativeString#file_lstat at lib/standard/file.nit:352,2--359,3\n");
-exit(1);
+void* var1 /* : FileStat */;
+var1 = file___NativeString_file_lstat___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1775,6 +1928,27 @@ var = ((struct instance_string__NativeString*)self)->value; /* autounbox from Ob
 file__NativeString__file_chdir(var);
 RET_LABEL:;
 }
+/* method file#NativeString#file_realpath for (self: NativeString): NativeString */
+char* file__NativeString__file_realpath(char* self) {
+char* var /* : NativeString */;
+char* var1 /* : NativeString */;
+var1 = file_NativeString_realpath(self);
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method file#NativeString#file_realpath for (self: Object): NativeString */
+char* VIRTUAL_file__NativeString__file_realpath(val* self) {
+char* var /* : NativeString */;
+char* var1 /* : NativeString */;
+char* var2 /* : NativeString */;
+var2 = ((struct instance_string__NativeString*)self)->value; /* autounbox from Object to NativeString */;
+var1 = file__NativeString__file_realpath(var2);
+var = var1;
+RET_LABEL:;
+return var;
+}
 /* method file#FileStat#mode for (self: FileStat): Int */
 long file__FileStat__mode(void* self) {
 long var /* : Int */;
@@ -1790,7 +1964,7 @@ long VIRTUAL_file__FileStat__mode(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__mode(var2);
 var = var1;
 RET_LABEL:;
@@ -1811,7 +1985,7 @@ long VIRTUAL_file__FileStat__atime(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__atime(var2);
 var = var1;
 RET_LABEL:;
@@ -1832,7 +2006,7 @@ long VIRTUAL_file__FileStat__ctime(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__ctime(var2);
 var = var1;
 RET_LABEL:;
@@ -1853,7 +2027,7 @@ long VIRTUAL_file__FileStat__mtime(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__mtime(var2);
 var = var1;
 RET_LABEL:;
@@ -1874,7 +2048,7 @@ long VIRTUAL_file__FileStat__size(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__size(var2);
 var = var1;
 RET_LABEL:;
@@ -1883,8 +2057,10 @@ return var;
 /* method file#FileStat#is_reg for (self: FileStat): Bool */
 short int file__FileStat__is_reg(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_reg at lib/standard/file.nit:373,2--54\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_reg___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1893,7 +2069,7 @@ short int VIRTUAL_file__FileStat__is_reg(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_reg(var2);
 var = var1;
 RET_LABEL:;
@@ -1902,8 +2078,10 @@ return var;
 /* method file#FileStat#is_dir for (self: FileStat): Bool */
 short int file__FileStat__is_dir(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_dir at lib/standard/file.nit:374,2--54\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_dir___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1912,7 +2090,7 @@ short int VIRTUAL_file__FileStat__is_dir(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_dir(var2);
 var = var1;
 RET_LABEL:;
@@ -1921,8 +2099,10 @@ return var;
 /* method file#FileStat#is_chr for (self: FileStat): Bool */
 short int file__FileStat__is_chr(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_chr at lib/standard/file.nit:375,2--54\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_chr___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1931,7 +2111,7 @@ short int VIRTUAL_file__FileStat__is_chr(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_chr(var2);
 var = var1;
 RET_LABEL:;
@@ -1940,8 +2120,10 @@ return var;
 /* method file#FileStat#is_blk for (self: FileStat): Bool */
 short int file__FileStat__is_blk(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_blk at lib/standard/file.nit:376,2--54\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_blk___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1950,7 +2132,7 @@ short int VIRTUAL_file__FileStat__is_blk(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_blk(var2);
 var = var1;
 RET_LABEL:;
@@ -1959,8 +2141,10 @@ return var;
 /* method file#FileStat#is_fifo for (self: FileStat): Bool */
 short int file__FileStat__is_fifo(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_fifo at lib/standard/file.nit:377,2--56\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_fifo___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1969,7 +2153,7 @@ short int VIRTUAL_file__FileStat__is_fifo(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_fifo(var2);
 var = var1;
 RET_LABEL:;
@@ -1978,8 +2162,10 @@ return var;
 /* method file#FileStat#is_lnk for (self: FileStat): Bool */
 short int file__FileStat__is_lnk(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_lnk at lib/standard/file.nit:378,2--54\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_lnk___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -1988,7 +2174,7 @@ short int VIRTUAL_file__FileStat__is_lnk(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_lnk(var2);
 var = var1;
 RET_LABEL:;
@@ -1997,8 +2183,10 @@ return var;
 /* method file#FileStat#is_sock for (self: FileStat): Bool */
 short int file__FileStat__is_sock(void* self) {
 short int var /* : Bool */;
-fprintf(stderr, "NOT YET IMPLEMENTED nitni for file#FileStat#is_sock at lib/standard/file.nit:379,2--56\n");
-exit(1);
+short int var1 /* : Bool */;
+var1 = file___FileStat_is_sock___impl(self);
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
@@ -2007,7 +2195,7 @@ short int VIRTUAL_file__FileStat__is_sock(val* self) {
 short int var /* : Bool */;
 short int var1 /* : Bool */;
 void* var2 /* : FileStat */;
-var2 = ((struct instance_file__FileStat*)self)->value; /* autounbox from Object to FileStat */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to FileStat */;
 var1 = file__FileStat__is_sock(var2);
 var = var1;
 RET_LABEL:;
@@ -2028,7 +2216,7 @@ long VIRTUAL_file__NativeFile__io_read(val* self, char* p0, long p1) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__io_read(var2, p0, p1);
 var = var1;
 RET_LABEL:;
@@ -2049,7 +2237,7 @@ long VIRTUAL_file__NativeFile__io_write(val* self, char* p0, long p1) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__io_write(var2, p0, p1);
 var = var1;
 RET_LABEL:;
@@ -2070,7 +2258,7 @@ long VIRTUAL_file__NativeFile__io_close(val* self) {
 long var /* : Int */;
 long var1 /* : Int */;
 void* var2 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__io_close(var2);
 var = var1;
 RET_LABEL:;
@@ -2091,7 +2279,7 @@ void* VIRTUAL_file__NativeFile__file_stat(val* self) {
 void* var /* : FileStat */;
 void* var1 /* : FileStat */;
 void* var2 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__file_stat(var2);
 var = var1;
 RET_LABEL:;
@@ -2113,9 +2301,9 @@ void* var /* : NativeFile */;
 val* var1 /* : Object */;
 void* var2 /* : NativeFile */;
 void* var3 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__io_open_read(var2, p0);
-var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
+var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
 var = var3;
 RET_LABEL:;
 return var;
@@ -2136,9 +2324,9 @@ void* var /* : NativeFile */;
 val* var1 /* : Object */;
 void* var2 /* : NativeFile */;
 void* var3 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__io_open_write(var2, p0);
-var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
+var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
 var = var3;
 RET_LABEL:;
 return var;
@@ -2159,9 +2347,9 @@ void* var /* : NativeFile */;
 val* var1 /* : Object */;
 void* var2 /* : NativeFile */;
 void* var3 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__native_stdin(var2);
-var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
+var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
 var = var3;
 RET_LABEL:;
 return var;
@@ -2182,9 +2370,9 @@ void* var /* : NativeFile */;
 val* var1 /* : Object */;
 void* var2 /* : NativeFile */;
 void* var3 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__native_stdout(var2);
-var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
+var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
 var = var3;
 RET_LABEL:;
 return var;
@@ -2205,9 +2393,9 @@ void* var /* : NativeFile */;
 val* var1 /* : Object */;
 void* var2 /* : NativeFile */;
 void* var3 /* : NativeFile */;
-var2 = ((struct instance_file__NativeFile*)self)->value; /* autounbox from Object to NativeFile */;
+var2 = ((struct instance_kernel__Pointer*)self)->value; /* autounbox from Object to NativeFile */;
 var1 = file__NativeFile__native_stderr(var2);
-var3 = ((struct instance_file__NativeFile*)var1)->value; /* autounbox from Object to NativeFile */;
+var3 = ((struct instance_kernel__Pointer*)var1)->value; /* autounbox from Object to NativeFile */;
 var = var3;
 RET_LABEL:;
 return var;
@@ -2224,7 +2412,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stdin(&type_file__Stdin);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdin__init]))(var2) /* init on <var2:Stdin>*/;
-CHECK_NEW_file__Stdin(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;
@@ -2255,7 +2442,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stdout(&type_file__Stdout);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stdout__init]))(var2) /* init on <var2:Stdout>*/;
-CHECK_NEW_file__Stdout(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;
@@ -2286,7 +2472,6 @@ var1 = varonce;
 } else {
 var2 = NEW_file__Stderr(&type_file__Stderr);
 ((void (*)(val*))(var2->class->vft[COLOR_file__Stderr__init]))(var2) /* init on <var2:Stderr>*/;
-CHECK_NEW_file__Stderr(var2);
 var1 = var2;
 varonce = var1;
 varonce_guard = 1;