grammar: adds syntax for explicit extern calls and updates c_src
[nit.git] / c_src / stream._sep.c
index 1f8e0cb..5a960e9 100644 (file)
 /* This C file is generated by NIT to compile module stream. */
 #include "stream._sep.h"
-void stream___IOS___close(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 20, LOCATE_stream___IOS___close};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 20);
-  nit_exit(1);
-  tracehead = trace.prev;
+void stream___IOS___close(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 20;
+  fra.me.meth = LOCATE_stream___IOS___close;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:20 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 20);
+  stack_frame_head = fra.me.prev;
   return;
 }
-void stream___IOS___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 0, LOCATE_stream___IOS___init};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
+void stream___IOS___init(val_t p0, int* init_table){
+  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_IOS].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  if (init_table[itpos0]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos0] = 1;
   return;
 }
-val_t stream___IStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 27, LOCATE_stream___IStream___read_char};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 27);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t stream___IStream___read_char(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 27;
+  fra.me.meth = LOCATE_stream___IStream___read_char;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:27 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 27);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t stream___IStream___read(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 30, LOCATE_stream___IStream___read};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[4] = NEW_String_string___String___with_capacity( variable[1] /*i*/); /*new String*/
-  variable[3] = variable[4];
-  while (true) { /*while*/
-    variable[4] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
-    variable[5] = variable[4];
-    if (UNTAG_Bool(variable[5])) { /* and */
-      variable[5] = variable[0];
-      variable[5] = ((stream___IStream___eof_t)CALL(variable[5],COLOR_stream___IStream___eof))(variable[5]) /*IStream::eof*/;
-      variable[5] =  TAG_Bool(!UNTAG_Bool(variable[5]));
+val_t stream___IStream___read(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 30;
+  fra.me.meth = LOCATE_stream___IStream___read;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:33 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  /* ./../lib/standard//stream.nit:34 */
+  while(1) {
+    REGB1 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:214 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
+    /* ./../lib/standard//stream.nit:34 */
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+    } else {
+      REGB2 = TAG_Bool(false);
+      REGB1 = REGB2;
     }
-    variable[4] = variable[5];
-    if (!UNTAG_Bool(variable[4])) break; /* while*/
-    variable[5] = variable[0];
-    variable[5] = ((stream___IStream___read_char_t)CALL(variable[5],COLOR_stream___IStream___read_char))(variable[5]) /*IStream::read_char*/;
-    variable[4] = variable[5];
-    variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable[5])) { /*if*/
-      variable[5] = TAG_Char(UNTAG_Int( variable[4] /*c*/));
-      ((string___String___add_t)CALL( variable[3] /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable[3] /*s*/, variable[5]) /*String::add*/;
-      variable[1] = TAG_Int(UNTAG_Int(variable[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//stream.nit:35 */
+      REGB1 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./../lib/standard//stream.nit:36 */
+      REGB2 = TAG_Int(0);
+      /* ./../lib/standard//kernel.nit:213 */
+      REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:36 */
+      if (UNTAG_Bool(REGB2)) {
+        /* ./../lib/standard//kernel.nit:277 */
+        REGB1 = TAG_Char(UNTAG_Int(REGB1));
+        /* ./../lib/standard//stream.nit:37 */
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB1);
+        /* ./../lib/standard//stream.nit:38 */
+        REGB1 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:217 */
+        REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+        /* ./../lib/standard//stream.nit:38 */
+        REGB0 = REGB1;
+      }
+    } else {
+      /* ./../lib/standard//stream.nit:34 */
+      goto label1;
     }
-    continue_1: while(0);
-  }
-  break_1: while(0);
-  variable[2] =  variable[3] /*s*/;
-  goto return_label0;
-  return_label0: while(false);
-  tracehead = trace.prev;
-  return variable[2];
+  }
+  label1: while(0);
+  /* ./../lib/standard//stream.nit:41 */
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-val_t stream___IStream___read_line(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 44, LOCATE_stream___IStream___read_line};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[2] = ((stream___IStream___eof_t)CALL(variable[2],COLOR_stream___IStream___eof))(variable[2]) /*IStream::eof*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[2])))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___IStream___read_line, LOCATE_stream, 47); nit_exit(1);}
-  variable[3] = NEW_String_string___String___init(); /*new String*/
-  variable[2] = variable[3];
-  variable[3] = variable[0];
-  ((stream___IStream___append_line_to_t)CALL(variable[3],COLOR_stream___IStream___append_line_to))(variable[3],  variable[2] /*s*/) /*IStream::append_line_to*/;
-  variable[1] =  variable[2] /*s*/;
-  goto return_label2;
-  return_label2: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+val_t stream___IStream___read_line(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 44;
+  fra.me.meth = LOCATE_stream___IStream___read_line;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:47 */
+  REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_stream, 47);
+  }
+  /* ./../lib/standard//stream.nit:48 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___init();
+  /* ./../lib/standard//stream.nit:49 */
+  CALL_stream___IStream___append_line_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:50 */
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-val_t stream___IStream___read_all(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 53, LOCATE_stream___IStream___read_all};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable[2] = variable[3];
-  while (true) { /*while*/
-    variable[3] = variable[0];
-    variable[3] = ((stream___IStream___eof_t)CALL(variable[3],COLOR_stream___IStream___eof))(variable[3]) /*IStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) break; /* while*/
-    variable[4] = variable[0];
-    variable[4] = ((stream___IStream___read_char_t)CALL(variable[4],COLOR_stream___IStream___read_char))(variable[4]) /*IStream::read_char*/;
-    variable[3] = variable[4];
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      variable[4] = TAG_Char(UNTAG_Int( variable[3] /*c*/));
-      ((string___String___add_t)CALL( variable[2] /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable[2] /*s*/, variable[4]) /*String::add*/;
+val_t stream___IStream___read_all(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 53;
+  fra.me.meth = LOCATE_stream___IStream___read_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:56 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___init();
+  /* ./../lib/standard//stream.nit:57 */
+  while(1) {
+    REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//stream.nit:58 */
+      REGB0 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./../lib/standard//stream.nit:59 */
+      REGB1 = TAG_Int(0);
+      /* ./../lib/standard//kernel.nit:213 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+      /* ./../lib/standard//stream.nit:59 */
+      if (UNTAG_Bool(REGB1)) {
+        /* ./../lib/standard//kernel.nit:277 */
+        REGB0 = TAG_Char(UNTAG_Int(REGB0));
+        /* ./../lib/standard//stream.nit:59 */
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB0);
+      }
+    } else {
+      /* ./../lib/standard//stream.nit:57 */
+      goto label1;
     }
-    continue_4: while(0);
-  }
-  break_4: while(0);
-  variable[1] =  variable[2] /*s*/;
-  goto return_label3;
-  return_label3: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+  }
+  label1: while(0);
+  /* ./../lib/standard//stream.nit:61 */
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-void stream___IStream___append_line_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 64, LOCATE_stream___IStream___append_line_to};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable[4] = variable[0];
-    variable[4] = ((stream___IStream___read_char_t)CALL(variable[4],COLOR_stream___IStream___read_char))(variable[4]) /*IStream::read_char*/;
-    variable[3] = variable[4];
-    variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    variable[4] = TAG_Bool(( variable[3] /*x*/)==(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      variable[4] = variable[0];
-      variable[4] = ((stream___IStream___eof_t)CALL(variable[4],COLOR_stream___IStream___eof))(variable[4]) /*IStream::eof*/;
-      if (UNTAG_Bool(variable[4])) { /*if*/
-        goto return_label5;
+void stream___IStream___append_line_to(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 64;
+  fra.me.meth = LOCATE_stream___IStream___append_line_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//stream.nit:67 */
+  while(1) {
+    /* ./../lib/standard//stream.nit:68 */
+    REGB0 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./../lib/standard//stream.nit:69 */
+    REGB1 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+    /* ./../lib/standard//stream.nit:69 */
+    REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:207 */
+      REGB1 = TAG_Bool((REGB0)==(REGB1));
+      /* ./../lib/standard//stream.nit:69 */
+      REGB2 = REGB1;
+    }
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//stream.nit:70 */
+      REGB2 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+      if (UNTAG_Bool(REGB2)) {
+        goto label1;
+      }
+    } else {
+      /* ./../lib/standard//kernel.nit:277 */
+      REGB0 = TAG_Char(UNTAG_Int(REGB0));
+      /* ./../lib/standard//stream.nit:73 */
+      CALL_abstract_collection___Sequence___push(fra.me.REG[1])(fra.me.REG[1], REGB0);
+      /* ./../lib/standard//stream.nit:74 */
+      REGB2 = TAG_Char('\n');
+      REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        /* ./../lib/standard//kernel.nit:347 */
+        REGB2 = TAG_Bool((REGB0)==(REGB2));
+        /* ./../lib/standard//stream.nit:74 */
+        REGB1 = REGB2;
       }
-    } else { /*if*/
-      variable[5] = TAG_Char(UNTAG_Int( variable[3] /*x*/));
-      variable[4] = variable[5];
-      ((array___AbstractArray___push_t)CALL( variable[1] /*s*/,COLOR_abstract_collection___IndexedCollection___push))( variable[1] /*s*/,  variable[4] /*c*/) /*AbstractArray::push*/;
-      variable[5] = TAG_Bool(( variable[4] /*c*/)==( TAG_Char('\n')));
-      if (UNTAG_Bool(variable[5])) { /*if*/
-        goto return_label5;
+      if (UNTAG_Bool(REGB1)) {
+        goto label1;
       }
     }
-    continue_6: while(0);
   }
-  break_6: while(0);
-  return_label5: while(false);
-  tracehead = trace.prev;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t stream___IStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 79, LOCATE_stream___IStream___eof};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 79);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t stream___IStream___eof(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_stream___IStream___eof;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:79 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 79);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-void stream___OStream___write(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 86, LOCATE_stream___OStream___write};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 86);
-  nit_exit(1);
-  tracehead = trace.prev;
+void stream___OStream___write(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 86;
+  fra.me.meth = LOCATE_stream___OStream___write;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:86 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 86);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t stream___OStream___is_writable(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 89, LOCATE_stream___OStream___is_writable};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 89);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t stream___OStream___is_writable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 89;
+  fra.me.meth = LOCATE_stream___OStream___is_writable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:89 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 89);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t stream___BufferedIStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 96, LOCATE_stream___BufferedIStream___read_char};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[2] = ((stream___BufferedIStream___eof_t)CALL(variable[2],COLOR_stream___IStream___eof))(variable[2]) /*BufferedIStream::eof*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[2])))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___BufferedIStream___read_char, LOCATE_stream, 98); nit_exit(1);}
-  variable[2] = variable[0];
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[2]) /*BufferedIStream::_buffer_pos*/;
-  variable[3] = variable[0];
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[3]) /*BufferedIStream::_buffer*/;
-  variable[3] = ((array___AbstractArray___length_t)CALL(variable[3],COLOR_abstract_collection___Collection___length))(variable[3]) /*AbstractArray::length*/;
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  if (UNTAG_Bool(variable[2])) { /*if*/
-    variable[2] = variable[0];
-    ((stream___BufferedIStream___fill_buffer_t)CALL(variable[2],COLOR_stream___BufferedIStream___fill_buffer))(variable[2]) /*BufferedIStream::fill_buffer*/;
-  }
-  variable[2] = variable[0];
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[2]) /*BufferedIStream::_buffer_pos*/;
-  variable[3] = variable[0];
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[3]) /*BufferedIStream::_buffer*/;
-  variable[3] = ((array___AbstractArray___length_t)CALL(variable[3],COLOR_abstract_collection___Collection___length))(variable[3]) /*AbstractArray::length*/;
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  if (UNTAG_Bool(variable[2])) { /*if*/
-    variable[2] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    variable[1] = variable[2];
-    goto return_label7;
-  }
-  variable[3] = variable[0];
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[3]) /*BufferedIStream::_buffer*/;
-  variable[4] = variable[0];
-  variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/;
-  variable[3] = ((string___String_____bra_t)CALL(variable[3],COLOR_abstract_collection___Map_____bra))(variable[3], variable[4]) /*String::[]*/;
-  variable[2] = variable[3];
-  variable[3] = variable[0];
-  ATTR_stream___BufferedIStream____buffer_pos(variable[3]) /*BufferedIStream::_buffer_pos*/ = TAG_Int(UNTAG_Int(ATTR_stream___BufferedIStream____buffer_pos(variable[3]) /*BufferedIStream::_buffer_pos*/)+UNTAG_Int( TAG_Int(1)));
-  variable[3] = TAG_Int((unsigned char)UNTAG_Char( variable[2] /*c*/));
-  variable[1] = variable[3];
-  goto return_label7;
-  return_label7: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+val_t stream___BufferedIStream___read_char(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 96;
+  fra.me.meth = LOCATE_stream___BufferedIStream___read_char;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:98 */
+  REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_stream, 98);
+  }
+  /* ./../lib/standard//stream.nit:99 */
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 99);
+  }
+  REGB0 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  fra.me.REG[1] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_stream, 99);
+  }
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//stream.nit:99 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//stream.nit:100 */
+    CALL_stream___BufferedIStream___fill_buffer(fra.me.REG[0])(fra.me.REG[0]);
+  }
+  /* ./../lib/standard//stream.nit:102 */
+  REGB1 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 102);
+  }
+  REGB1 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  fra.me.REG[1] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_stream, 102);
+  }
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+  /* ./../lib/standard//stream.nit:102 */
+  if (UNTAG_Bool(REGB0)) {
+    /* ./../lib/standard//stream.nit:103 */
+    REGB0 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:216 */
+    REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+    /* ./../lib/standard//stream.nit:103 */
+    goto label1;
+  }
+  /* ./../lib/standard//stream.nit:105 */
+  fra.me.REG[1] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB1 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 105);
+  }
+  REGB1 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB2)) {
+    nit_abort("Reciever is null", NULL, LOCATE_stream, 105);
+  }
+  REGB1 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+  /* ./../lib/standard//stream.nit:106 */
+  REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  REGB3 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:215 */
+  REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+  /* ./../lib/standard//stream.nit:106 */
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB3;
+  /* ./../lib/standard//kernel.nit:382 */
+  REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
+  /* ./../lib/standard//stream.nit:107 */
+  REGB0 = REGB1;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-val_t stream___BufferedIStream___read(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 110, LOCATE_stream___BufferedIStream___read};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[4] = NEW_String_string___String___with_capacity( variable[1] /*i*/); /*new String*/
-  variable[3] = variable[4];
-  variable[5] = variable[0];
-  variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[5]) /*BufferedIStream::_buffer_pos*/;
-  variable[4] = variable[5];
-  variable[6] = variable[0];
-  variable[6] = ATTR_stream___BufferedIStream____buffer(variable[6]) /*BufferedIStream::_buffer*/;
-  variable[6] = ((array___AbstractArray___length_t)CALL(variable[6],COLOR_abstract_collection___Collection___length))(variable[6]) /*AbstractArray::length*/;
-  variable[5] = variable[6];
-  while (true) { /*while*/
-    variable[6] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable[6])) break; /* while*/
-    variable[6] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)>=UNTAG_Int( variable[5] /*k*/));
-    if (UNTAG_Bool(variable[6])) { /*if*/
-      variable[6] = variable[0];
-      ((stream___BufferedIStream___fill_buffer_t)CALL(variable[6],COLOR_stream___BufferedIStream___fill_buffer))(variable[6]) /*BufferedIStream::fill_buffer*/;
-      variable[6] = variable[0];
-      variable[6] = ((stream___BufferedIStream___eof_t)CALL(variable[6],COLOR_stream___IStream___eof))(variable[6]) /*BufferedIStream::eof*/;
-      if (UNTAG_Bool(variable[6])) { /*if*/
-        variable[2] =  variable[3] /*s*/;
-        goto return_label8;
+val_t stream___BufferedIStream___read(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t REGB4;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 110;
+  fra.me.meth = LOCATE_stream___BufferedIStream___read;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:112 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  /* ./../lib/standard//stream.nit:113 */
+  REGB1 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 113);
+  }
+  REGB1 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  /* ./../lib/standard//stream.nit:114 */
+  fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB2)) {
+    nit_abort("Reciever is null", NULL, LOCATE_stream, 114);
+  }
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+  /* ./../lib/standard//stream.nit:115 */
+  while(1) {
+    REGB3 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:214 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+    /* ./../lib/standard//stream.nit:115 */
+    if (UNTAG_Bool(REGB3)) {
+      /* ./../lib/standard//kernel.nit:213 */
+      REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:116 */
+      if (UNTAG_Bool(REGB3)) {
+        /* ./../lib/standard//stream.nit:117 */
+        CALL_stream___BufferedIStream___fill_buffer(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./../lib/standard//stream.nit:118 */
+        REGB3 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+        if (UNTAG_Bool(REGB3)) {
+          fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+          goto label1;
+        }
+        /* ./../lib/standard//stream.nit:119 */
+        REGB3 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 119);
+        }
+        REGB3 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+        REGB1 = REGB3;
+        /* ./../lib/standard//stream.nit:120 */
+        fra.me.REG[3] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          nit_abort("Reciever is null", NULL, LOCATE_stream, 120);
+        }
+        /* ./../lib/standard//collection//array.nit:23 */
+        REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+        }
+        REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+        /* ./../lib/standard//stream.nit:120 */
+        REGB2 = REGB3;
       }
-      variable[6] = variable[0];
-      variable[6] = ATTR_stream___BufferedIStream____buffer_pos(variable[6]) /*BufferedIStream::_buffer_pos*/;
-      variable[4] = variable[6] /*j=*/;
-      variable[6] = variable[0];
-      variable[6] = ATTR_stream___BufferedIStream____buffer(variable[6]) /*BufferedIStream::_buffer*/;
-      variable[6] = ((array___AbstractArray___length_t)CALL(variable[6],COLOR_abstract_collection___Collection___length))(variable[6]) /*AbstractArray::length*/;
-      variable[5] = variable[6] /*k=*/;
-    }
-    while (true) { /*while*/
-      variable[6] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)<UNTAG_Int( variable[5] /*k*/));
-      variable[7] = variable[6];
-      if (UNTAG_Bool(variable[7])) { /* and */
-        variable[7] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
+      /* ./../lib/standard//stream.nit:122 */
+      while(1) {
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+        /* ./../lib/standard//stream.nit:122 */
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Int(0);
+          /* ./../lib/standard//kernel.nit:214 */
+          REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+        } else {
+          /* ./../lib/standard//stream.nit:122 */
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        }
+        if (UNTAG_Bool(REGB3)) {
+          /* ./../lib/standard//stream.nit:123 */
+          fra.me.REG[3] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_stream, 123);
+          }
+          REGB3 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB1);
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB3);
+          /* ./../lib/standard//stream.nit:124 */
+          REGB3 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+          /* ./../lib/standard//stream.nit:124 */
+          REGB1 = REGB3;
+          /* ./../lib/standard//stream.nit:125 */
+          REGB3 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:217 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
+          /* ./../lib/standard//stream.nit:125 */
+          REGB0 = REGB3;
+        } else {
+          /* ./../lib/standard//stream.nit:122 */
+          goto label2;
+        }
       }
-      variable[6] = variable[7];
-      if (!UNTAG_Bool(variable[6])) break; /* while*/
-      variable[6] = variable[0];
-      variable[6] = ATTR_stream___BufferedIStream____buffer(variable[6]) /*BufferedIStream::_buffer*/;
-      variable[6] = ((string___String_____bra_t)CALL(variable[6],COLOR_abstract_collection___Map_____bra))(variable[6],  variable[4] /*j*/) /*String::[]*/;
-      ((string___String___add_t)CALL( variable[3] /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable[3] /*s*/, variable[6]) /*String::add*/;
-      variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( TAG_Int(1))) /*j*/;
-      variable[1] = TAG_Int(UNTAG_Int(variable[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
-      continue_10: while(0);
+      label2: while(0);
+    } else {
+      /* ./../lib/standard//stream.nit:115 */
+      goto label3;
     }
-    break_10: while(0);
-    continue_9: while(0);
-  }
-  break_9: while(0);
-  variable[6] = variable[0];
-  ATTR_stream___BufferedIStream____buffer_pos(variable[6]) /*BufferedIStream::_buffer_pos*/ =  variable[4] /*j*/;
-  variable[2] =  variable[3] /*s*/;
-  goto return_label8;
-  return_label8: while(false);
-  tracehead = trace.prev;
-  return variable[2];
+  }
+  label3: while(0);
+  /* ./../lib/standard//stream.nit:128 */
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB1;
+  /* ./../lib/standard//stream.nit:129 */
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t stream___BufferedIStream___read_all(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 132, LOCATE_stream___BufferedIStream___read_all};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable[2] = variable[3];
-  while (true) { /*while*/
-    variable[3] = variable[0];
-    variable[3] = ((stream___BufferedIStream___eof_t)CALL(variable[3],COLOR_stream___IStream___eof))(variable[3]) /*BufferedIStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) break; /* while*/
-    variable[4] = variable[0];
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/;
-    variable[3] = variable[4];
-    variable[5] = variable[0];
-    variable[5] = ATTR_stream___BufferedIStream____buffer(variable[5]) /*BufferedIStream::_buffer*/;
-    variable[5] = ((array___AbstractArray___length_t)CALL(variable[5],COLOR_abstract_collection___Collection___length))(variable[5]) /*AbstractArray::length*/;
-    variable[4] = variable[5];
-    while (true) { /*while*/
-      variable[5] = TAG_Bool(UNTAG_Int( variable[3] /*j*/)<UNTAG_Int( variable[4] /*k*/));
-      if (!UNTAG_Bool(variable[5])) break; /* while*/
-      variable[5] = variable[0];
-      variable[5] = ATTR_stream___BufferedIStream____buffer(variable[5]) /*BufferedIStream::_buffer*/;
-      variable[5] = ((string___String_____bra_t)CALL(variable[5],COLOR_abstract_collection___Map_____bra))(variable[5],  variable[3] /*j*/) /*String::[]*/;
-      ((string___String___add_t)CALL( variable[2] /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable[2] /*s*/, variable[5]) /*String::add*/;
-      variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1))) /*j*/;
-      continue_13: while(0);
+val_t stream___BufferedIStream___read_all(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 132;
+  fra.me.meth = LOCATE_stream___BufferedIStream___read_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:134 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___init();
+  /* ./../lib/standard//stream.nit:135 */
+  while(1) {
+    REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//stream.nit:136 */
+      REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 136);
+      }
+      REGB0 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+      /* ./../lib/standard//stream.nit:137 */
+      fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_stream, 137);
+      }
+      /* ./../lib/standard//collection//array.nit:23 */
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+      /* ./../lib/standard//stream.nit:138 */
+      while(1) {
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ./../lib/standard//stream.nit:138 */
+        if (UNTAG_Bool(REGB2)) {
+          /* ./../lib/standard//stream.nit:139 */
+          fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB2)) {
+            nit_abort("Reciever is null", NULL, LOCATE_stream, 139);
+          }
+          REGB2 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB2);
+          /* ./../lib/standard//stream.nit:140 */
+          REGB2 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+          /* ./../lib/standard//stream.nit:140 */
+          REGB0 = REGB2;
+        } else {
+          /* ./../lib/standard//stream.nit:138 */
+          goto label1;
+        }
+      }
+      label1: while(0);
+      /* ./../lib/standard//stream.nit:142 */
+      ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+      /* ./../lib/standard//stream.nit:143 */
+      CALL_stream___BufferedIStream___fill_buffer(fra.me.REG[0])(fra.me.REG[0]);
+    } else {
+      /* ./../lib/standard//stream.nit:135 */
+      goto label2;
     }
-    break_13: while(0);
-    variable[5] = variable[0];
-    ATTR_stream___BufferedIStream____buffer_pos(variable[5]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*j*/;
-    variable[5] = variable[0];
-    ((stream___BufferedIStream___fill_buffer_t)CALL(variable[5],COLOR_stream___BufferedIStream___fill_buffer))(variable[5]) /*BufferedIStream::fill_buffer*/;
-    continue_12: while(0);
-  }
-  break_12: while(0);
-  variable[1] =  variable[2] /*s*/;
-  goto return_label11;
-  return_label11: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+  }
+  label2: while(0);
+  /* ./../lib/standard//stream.nit:145 */
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-void stream___BufferedIStream___append_line_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 148, LOCATE_stream___BufferedIStream___append_line_to};
-  val_t variable[6];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable[4] = variable[0];
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/;
-    variable[3] = variable[4];
-    while (true) { /*while*/
-      variable[4] = variable[0];
-      variable[4] = ATTR_stream___BufferedIStream____buffer(variable[4]) /*BufferedIStream::_buffer*/;
-      variable[4] = ((array___AbstractArray___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*AbstractArray::length*/;
-      variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int(variable[4]));
-      variable[5] = variable[4];
-      if (UNTAG_Bool(variable[5])) { /* and */
-        variable[5] = variable[0];
-        variable[5] = ATTR_stream___BufferedIStream____buffer(variable[5]) /*BufferedIStream::_buffer*/;
-        variable[5] = ((string___String_____bra_t)CALL(variable[5],COLOR_abstract_collection___Map_____bra))(variable[5],  variable[3] /*i*/) /*String::[]*/;
-        variable[5] = TAG_Bool((variable[5])!=( TAG_Char('\n')));
+void stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 148;
+  fra.me.meth = LOCATE_stream___BufferedIStream___append_line_to;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//stream.nit:150 */
+  while(1) {
+    /* ./../lib/standard//stream.nit:152 */
+    REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 152);
+    }
+    REGB0 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+    /* ./../lib/standard//stream.nit:153 */
+    while(1) {
+      fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_stream, 153);
+      }
+      /* ./../lib/standard//collection//array.nit:23 */
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+      /* ./../lib/standard//kernel.nit:212 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+      /* ./../lib/standard//stream.nit:153 */
+      if (UNTAG_Bool(REGB1)) {
+        fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          nit_abort("Reciever is null", NULL, LOCATE_stream, 153);
+        }
+        REGB1 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+        REGB2 = TAG_Char('\n');
+        REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          /* ./../lib/standard//kernel.nit:347 */
+          REGB2 = TAG_Bool((REGB1)==(REGB2));
+          /* ./../lib/standard//stream.nit:153 */
+          REGB3 = REGB2;
+        }
+        REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+      } else {
+        REGB2 = TAG_Bool(false);
+        REGB3 = REGB2;
       }
-      variable[4] = variable[5];
-      if (!UNTAG_Bool(variable[4])) break; /* while*/
-      variable[3] = TAG_Int(UNTAG_Int(variable[3])+UNTAG_Int( TAG_Int(1))) /*i*/;
-      continue_16: while(0);
+      if (UNTAG_Bool(REGB3)) {
+        REGB3 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:215 */
+        REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+        /* ./../lib/standard//stream.nit:153 */
+        REGB0 = REGB3;
+      } else {
+        goto label1;
+      }
+    }
+    label1: while(0);
+    /* ./../lib/standard//stream.nit:156 */
+    REGB3 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 156);
     }
-    break_16: while(0);
-    variable[4] = variable[0];
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/;
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>UNTAG_Int(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      variable[4] = ((array___AbstractArray___length_t)CALL( variable[1] /*s*/,COLOR_abstract_collection___Collection___length))( variable[1] /*s*/) /*AbstractArray::length*/;
-      variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( variable[3] /*i*/));
-      variable[5] = variable[0];
-      variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[5]) /*BufferedIStream::_buffer_pos*/;
-      variable[4] = TAG_Int(UNTAG_Int(variable[4])-UNTAG_Int(variable[5]));
-      ((string___String___enlarge_t)CALL( variable[1] /*s*/,COLOR_array___AbstractArray___enlarge))( variable[1] /*s*/, variable[4]) /*String::enlarge*/;
-      variable[5] = variable[0];
-      variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[5]) /*BufferedIStream::_buffer_pos*/;
-      variable[4] = variable[5];
-      while (true) { /*while*/
-        variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)<UNTAG_Int( variable[3] /*i*/));
-        if (!UNTAG_Bool(variable[5])) break; /* while*/
-        variable[5] = variable[0];
-        variable[5] = ATTR_stream___BufferedIStream____buffer(variable[5]) /*BufferedIStream::_buffer*/;
-        variable[5] = ((string___String_____bra_t)CALL(variable[5],COLOR_abstract_collection___Map_____bra))(variable[5],  variable[4] /*j*/) /*String::[]*/;
-        ((string___String___add_t)CALL( variable[1] /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable[1] /*s*/, variable[5]) /*String::add*/;
-        variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( TAG_Int(1))) /*j*/;
-        continue_17: while(0);
+    REGB3 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+    /* ./../lib/standard//kernel.nit:214 */
+    REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+    /* ./../lib/standard//stream.nit:156 */
+    if (UNTAG_Bool(REGB3)) {
+      /* ./../lib/standard//collection//array.nit:23 */
+      REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+      }
+      REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
+      /* ./../lib/standard//stream.nit:158 */
+      REGB2 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 158);
       }
-      break_17: while(0);
+      REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+      /* ./../lib/standard//kernel.nit:217 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:158 */
+      CALL_array___AbstractArray___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB2);
+      /* ./../lib/standard//stream.nit:161 */
+      REGB2 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 161);
+      }
+      REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+      /* ./../lib/standard//stream.nit:162 */
+      while(1) {
+        /* ./../lib/standard//kernel.nit:212 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
+        /* ./../lib/standard//stream.nit:162 */
+        if (UNTAG_Bool(REGB3)) {
+          /* ./../lib/standard//stream.nit:163 */
+          fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+          REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          if (UNTAG_Bool(REGB3)) {
+            nit_abort("Reciever is null", NULL, LOCATE_stream, 163);
+          }
+          REGB3 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], REGB3);
+          /* ./../lib/standard//stream.nit:164 */
+          REGB3 = TAG_Int(1);
+          /* ./../lib/standard//kernel.nit:215 */
+          REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+          /* ./../lib/standard//stream.nit:164 */
+          REGB2 = REGB3;
+        } else {
+          /* ./../lib/standard//stream.nit:162 */
+          goto label2;
+        }
+      }
+      label2: while(0);
+    }
+    /* ./../lib/standard//stream.nit:168 */
+    fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+      nit_abort("Reciever is null", NULL, LOCATE_stream, 168);
+    }
+    /* ./../lib/standard//collection//array.nit:23 */
+    REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
     }
-    variable[4] = variable[0];
-    variable[4] = ATTR_stream___BufferedIStream____buffer(variable[4]) /*BufferedIStream::_buffer*/;
-    variable[4] = ((array___AbstractArray___length_t)CALL(variable[4],COLOR_abstract_collection___Collection___length))(variable[4]) /*AbstractArray::length*/;
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      variable[4] = variable[0];
-      variable[5] = TAG_Int(UNTAG_Int( variable[3] /*i*/)+UNTAG_Int( TAG_Int(1)));
-      ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/ = variable[5];
-      goto return_label14;
-    } else { /*if*/
-      variable[4] = variable[0];
-      ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*i*/;
-      variable[4] = variable[0];
-      variable[4] = ((stream___BufferedIStream___end_reached_t)CALL(variable[4],COLOR_stream___BufferedIStream___end_reached))(variable[4]) /*BufferedIStream::end_reached*/;
-      if (UNTAG_Bool(variable[4])) { /*if*/
-        goto return_label14;
-      } else { /*if*/
-        variable[4] = variable[0];
-        ((stream___BufferedIStream___fill_buffer_t)CALL(variable[4],COLOR_stream___BufferedIStream___fill_buffer))(variable[4]) /*BufferedIStream::fill_buffer*/;
+    REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+    /* ./../lib/standard//kernel.nit:212 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
+    /* ./../lib/standard//stream.nit:168 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//stream.nit:170 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:170 */
+      ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB2;
+      /* ./../lib/standard//stream.nit:171 */
+      goto label3;
+    } else {
+      /* ./../lib/standard//stream.nit:174 */
+      ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+      /* ./../lib/standard//stream.nit:175 */
+      REGB0 = CALL_stream___BufferedIStream___end_reached(fra.me.REG[0])(fra.me.REG[0]);
+      if (UNTAG_Bool(REGB0)) {
+        /* ./../lib/standard//stream.nit:176 */
+        goto label3;
+      } else {
+        /* ./../lib/standard//stream.nit:178 */
+        CALL_stream___BufferedIStream___fill_buffer(fra.me.REG[0])(fra.me.REG[0]);
       }
     }
-    continue_15: while(0);
   }
-  break_15: while(0);
-  return_label14: while(false);
-  tracehead = trace.prev;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t stream___BufferedIStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 184, LOCATE_stream___BufferedIStream___eof};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[2]) /*BufferedIStream::_buffer_pos*/;
-  variable[3] = variable[0];
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[3]) /*BufferedIStream::_buffer*/;
-  variable[3] = ((array___AbstractArray___length_t)CALL(variable[3],COLOR_abstract_collection___Collection___length))(variable[3]) /*AbstractArray::length*/;
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  variable[3] = variable[2];
-  if (UNTAG_Bool(variable[3])) { /* and */
-    variable[3] = variable[0];
-    variable[3] = ((stream___BufferedIStream___end_reached_t)CALL(variable[3],COLOR_stream___BufferedIStream___end_reached))(variable[3]) /*BufferedIStream::end_reached*/;
-  }
-  variable[2] = variable[3];
-  variable[1] = variable[2];
-  goto return_label18;
-  return_label18: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+val_t stream___BufferedIStream___eof(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 184;
+  fra.me.meth = LOCATE_stream___BufferedIStream___eof;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:184 */
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_stream, 184);
+  }
+  REGB0 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  fra.me.REG[1] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+    nit_abort("Reciever is null", NULL, LOCATE_stream, 184);
+  }
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  /* ./../lib/standard//kernel.nit:213 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//stream.nit:184 */
+  if (UNTAG_Bool(REGB1)) {
+    REGB1 = CALL_stream___BufferedIStream___end_reached(fra.me.REG[0])(fra.me.REG[0]);
+  } else {
+    REGB0 = TAG_Bool(false);
+    REGB1 = REGB0;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
 }
-void stream___BufferedIStream___fill_buffer(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 192, LOCATE_stream___BufferedIStream___fill_buffer};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 192);
-  nit_exit(1);
-  tracehead = trace.prev;
+void stream___BufferedIStream___fill_buffer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 192;
+  fra.me.meth = LOCATE_stream___BufferedIStream___fill_buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:192 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 192);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t stream___BufferedIStream___end_reached(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 195, LOCATE_stream___BufferedIStream___end_reached};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 195);
-  nit_exit(1);
-  tracehead = trace.prev;
+val_t stream___BufferedIStream___end_reached(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 195;
+  fra.me.meth = LOCATE_stream___BufferedIStream___end_reached;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//stream.nit:195 */
+  nit_abort("Deferred method called", NULL, LOCATE_stream, 195);
+  stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-void stream___BufferedIStream___prepare_buffer(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 198, LOCATE_stream___BufferedIStream___prepare_buffer};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[3] = variable[0];
-  variable[4] = NEW_String_string___String___with_capacity( variable[1] /*capacity*/); /*new String*/
-  ATTR_stream___BufferedIStream____buffer(variable[3]) /*BufferedIStream::_buffer*/ = variable[4];
-  variable[3] = variable[0];
-  ATTR_stream___BufferedIStream____buffer_pos(variable[3]) /*BufferedIStream::_buffer_pos*/ =  TAG_Int(0);
-  return_label19: while(false);
-  tracehead = trace.prev;
+void stream___BufferedIStream___prepare_buffer(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 198;
+  fra.me.meth = LOCATE_stream___BufferedIStream___prepare_buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:201 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:202 */
+  REGB0 = TAG_Int(0);
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
   return;
 }
-void stream___FDStream___close(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 218, LOCATE_stream___FDStream___close};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[2] = variable[0];
-  variable[3] = variable[0];
-  variable[3] = ATTR_stream___FDStream____fd(variable[3]) /*FDStream::_fd*/;
-  ((stream___FDStream___native_close_t)CALL(variable[2],COLOR_stream___FDStream___native_close))(variable[2], variable[3]) /*FDStream::native_close*/;
-  return_label20: while(false);
-  tracehead = trace.prev;
+void stream___FDStream___close(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 218;
+  fra.me.meth = LOCATE_stream___FDStream___close;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:218 */
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_stream, 218);
+  }
+  REGB0 = ATTR_stream___FDStream____fd(fra.me.REG[0]);
+  CALL_stream___FDStream___native_close(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  stack_frame_head = fra.me.prev;
   return;
 }
-val_t stream___FDStream___native_close(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 220, LOCATE_stream___FDStream___native_close};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return TAG_Int(stream_FDStream_FDStream_native_close_1( self, UNTAG_Int( param0)));
+val_t stream___FDStream___native_close(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 220;
+  fra.me.meth = LOCATE_stream___FDStream___native_close;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:220 */
+  REGB0 = TAG_Int(stream_FDStream_FDStream_native_close_1(fra.me.REG[0], UNTAG_Int(REGB0)));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-val_t stream___FDStream___native_read_char(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 221, LOCATE_stream___FDStream___native_read_char};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return TAG_Int(stream_FDStream_FDStream_native_read_char_1( self, UNTAG_Int( param0)));
+val_t stream___FDStream___native_read_char(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 221;
+  fra.me.meth = LOCATE_stream___FDStream___native_read_char;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:221 */
+  REGB0 = TAG_Int(stream_FDStream_FDStream_native_read_char_1(fra.me.REG[0], UNTAG_Int(REGB0)));
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-val_t stream___FDStream___native_read(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, NULL, 222, LOCATE_stream___FDStream___native_read};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return TAG_Int(stream_FDStream_FDStream_native_read_3( self, UNTAG_Int( param0), UNBOX_NativeString( param1), UNTAG_Int( param2)));
+val_t stream___FDStream___native_read(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 222;
+  fra.me.meth = LOCATE_stream___FDStream___native_read;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  REGB1 = p3;
+  /* ./../lib/standard//stream.nit:222 */
+  REGB1 = TAG_Int(stream_FDStream_FDStream_native_read_3(fra.me.REG[0], UNTAG_Int(REGB0), UNBOX_NativeString(fra.me.REG[1]), UNTAG_Int(REGB1)));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
 }
-val_t stream___FDStream___native_write(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, NULL, 223, LOCATE_stream___FDStream___native_write};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return TAG_Int(stream_FDStream_FDStream_native_write_3( self, UNTAG_Int( param0), UNBOX_NativeString( param1), UNTAG_Int( param2)));
+val_t stream___FDStream___native_write(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 223;
+  fra.me.meth = LOCATE_stream___FDStream___native_write;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  REGB1 = p3;
+  /* ./../lib/standard//stream.nit:223 */
+  REGB1 = TAG_Int(stream_FDStream_FDStream_native_write_3(fra.me.REG[0], UNTAG_Int(REGB0), UNBOX_NativeString(fra.me.REG[1]), UNTAG_Int(REGB1)));
+  stack_frame_head = fra.me.prev;
+  return REGB1;
 }
-void stream___FDStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 225, LOCATE_stream___FDStream___init};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDStream].i]) return;
-  variable[3] = variable[0];
-  ATTR_stream___FDStream____fd(variable[3]) /*FDStream::_fd*/ =  variable[1] /*fd*/;
-  return_label21: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDStream].i] = 1;
-  tracehead = trace.prev;
+void stream___FDStream___init(val_t p0, val_t p1, int* init_table){
+  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_FDStream].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos1]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_stream___FDStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:225 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_stream___IOS___init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  ATTR_stream___FDStream____fd(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos1] = 1;
   return;
 }
-val_t stream___FDIStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 233, LOCATE_stream___FDIStream___read_char};
-  val_t variable[5];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[3] = variable[0];
-  variable[4] = variable[0];
-  variable[4] = ATTR_stream___FDStream____fd(variable[4]) /*FDStream::_fd*/;
-  variable[3] = ((stream___FDStream___native_read_char_t)CALL(variable[3],COLOR_stream___FDStream___native_read_char))(variable[3], variable[4]) /*FDStream::native_read_char*/;
-  variable[2] = variable[3];
-  variable[3] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  variable[3] = TAG_Bool(( variable[2] /*nb*/)==(variable[3]));
-  if (UNTAG_Bool(variable[3])) { /*if*/
-    variable[3] = variable[0];
-    ATTR_stream___FDIStream____eof(variable[3]) /*FDIStream::_eof*/ =  TAG_Bool(true);
-  }
-  variable[1] =  variable[2] /*nb*/;
-  goto return_label22;
-  return_label22: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+val_t stream___FDIStream___eof(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 231;
+  fra.me.meth = LOCATE_stream___FDIStream___eof;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:231 */
+  REGB0 = TAG_Bool(ATTR_stream___FDIStream____eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_stream, 231);
+  }
+  REGB0 = ATTR_stream___FDIStream____eof(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-val_t stream___FDIStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 231, LOCATE_stream___FDIStream___eof};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return ATTR_stream___FDIStream____eof( self) /*FDIStream::_eof*/;
+val_t stream___FDIStream___read_char(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 233;
+  fra.me.meth = LOCATE_stream___FDIStream___read_char;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:235 */
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_stream, 235);
+  }
+  REGB0 = ATTR_stream___FDStream____fd(fra.me.REG[0]);
+  REGB0 = CALL_stream___FDStream___native_read_char(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  /* ./../lib/standard//stream.nit:236 */
+  REGB1 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:216 */
+  REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+  /* ./../lib/standard//stream.nit:236 */
+  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    /* ./../lib/standard//kernel.nit:207 */
+    REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./../lib/standard//stream.nit:236 */
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    REGB2 = TAG_Bool(true);
+    ATTR_stream___FDIStream____eof(fra.me.REG[0]) = REGB2;
+  }
+  /* ./../lib/standard//stream.nit:237 */
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-void stream___FDIStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 240, LOCATE_stream___FDIStream___init};
-  val_t variable[3];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIStream].i]) return;
-  ((stream___FDStream___init_t)CALL(variable[0],COLOR_stream___FDStream___init))(variable[0], variable[1], init_table /*YYY*/) /*FDStream::init*/;
-  return_label23: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIStream].i] = 1;
-  tracehead = trace.prev;
+void stream___FDIStream___init(val_t p0, val_t p1, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_FDIStream].i;
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 240;
+  fra.me.meth = LOCATE_stream___FDIStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:240 */
+  CALL_stream___FDStream___init(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
   return;
 }
-void stream___FDOStream___write(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, NULL, 248, LOCATE_stream___FDOStream___write};
-  val_t variable[8];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  variable[4] = variable[0];
-  variable[5] = variable[0];
-  variable[5] = ATTR_stream___FDStream____fd(variable[5]) /*FDStream::_fd*/;
-  variable[6] = ((string___String___to_cstring_t)CALL( variable[1] /*s*/,COLOR_string___String___to_cstring))( variable[1] /*s*/) /*String::to_cstring*/;
-  variable[7] = ((array___AbstractArray___length_t)CALL( variable[1] /*s*/,COLOR_abstract_collection___Collection___length))( variable[1] /*s*/) /*AbstractArray::length*/;
-  variable[4] = ((stream___FDStream___native_write_t)CALL(variable[4],COLOR_stream___FDStream___native_write))(variable[4], variable[5], variable[6], variable[7]) /*FDStream::native_write*/;
-  variable[3] = variable[4];
-  variable[4] = ((array___AbstractArray___length_t)CALL( variable[1] /*s*/,COLOR_abstract_collection___Collection___length))( variable[1] /*s*/) /*AbstractArray::length*/;
-  variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*nb*/)<UNTAG_Int(variable[4]));
-  if (UNTAG_Bool(variable[4])) { /*if*/
-    variable[4] = variable[0];
-    ATTR_stream___FDOStream____is_writable(variable[4]) /*FDOStream::_is_writable*/ =  TAG_Bool(false);
-  }
-  return_label24: while(false);
-  tracehead = trace.prev;
-  return;
+val_t stream___FDOStream___is_writable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 246;
+  fra.me.meth = LOCATE_stream___FDOStream___is_writable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:246 */
+  REGB0 = TAG_Bool(ATTR_stream___FDOStream____is_writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_writable", LOCATE_stream, 246);
+  }
+  REGB0 = ATTR_stream___FDOStream____is_writable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-val_t stream___FDOStream___is_writable(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 246, LOCATE_stream___FDOStream___is_writable};
-  val_t *variable = NULL;
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/;
+void stream___FDOStream___write(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 248;
+  fra.me.meth = LOCATE_stream___FDOStream___write;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//stream.nit:250 */
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_stream, 250);
+  }
+  REGB0 = ATTR_stream___FDStream____fd(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:250 */
+  REGB1 = CALL_stream___FDStream___native_write(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2], REGB1);
+  /* ./../lib/standard//collection//array.nit:23 */
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
+  }
+  REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  /* ./../lib/standard//kernel.nit:212 */
+  REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
+  /* ./../lib/standard//stream.nit:251 */
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(false);
+    ATTR_stream___FDOStream____is_writable(fra.me.REG[0]) = REGB0;
+  }
+  stack_frame_head = fra.me.prev;
+  return;
 }
-void stream___FDOStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 254, LOCATE_stream___FDOStream___init};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDOStream].i]) return;
-  ((stream___FDStream___init_t)CALL(variable[0],COLOR_stream___FDStream___init))(variable[0], variable[1], init_table /*YYY*/) /*FDStream::init*/;
-  variable[3] = variable[0];
-  ATTR_stream___FDOStream____is_writable(variable[3]) /*FDOStream::_is_writable*/ =  TAG_Bool(true);
-  return_label25: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDOStream].i] = 1;
-  tracehead = trace.prev;
+void stream___FDOStream___init(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_FDOStream].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos3]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 254;
+  fra.me.meth = LOCATE_stream___FDOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:254 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_stream___FDStream___init(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
+  /* ./../lib/standard//stream.nit:256 */
+  REGB0 = TAG_Bool(true);
+  ATTR_stream___FDOStream____is_writable(fra.me.REG[1]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
   return;
 }
-void stream___FDIOStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, NULL, 264, LOCATE_stream___FDIOStream___init};
-  val_t variable[4];
-  void **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  variable[0] =  self;
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIOStream].i]) return;
-  ((stream___FDIStream___init_t)CALL(variable[0],COLOR_stream___FDIStream___init))(variable[0], variable[1], init_table /*YYY*/) /*FDIStream::init*/;
-  ((stream___FDOStream___init_t)CALL(variable[0],COLOR_stream___FDOStream___init))(variable[0], variable[1], init_table /*YYY*/) /*FDOStream::init*/;
-  variable[3] = variable[0];
-  ATTR_stream___FDStream____fd(variable[3]) /*FDStream::_fd*/ =  variable[1] /*fd*/;
-  variable[3] = variable[0];
-  ATTR_stream___FDOStream____is_writable(variable[3]) /*FDOStream::_is_writable*/ =  TAG_Bool(true);
-  return_label26: while(false);
-  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIOStream].i] = 1;
-  tracehead = trace.prev;
+void stream___FDIOStream___init(val_t p0, val_t p1, int* init_table){
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_FDIOStream].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  if (init_table[itpos4]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_stream;
+  fra.me.line = 264;
+  fra.me.meth = LOCATE_stream___FDIOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//stream.nit:264 */
+  fra.me.REG[1] = fra.me.REG[0];
+  REGB1 = REGB0;
+  CALL_stream___FDIStream___init(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
+  CALL_stream___FDOStream___init(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
+  /* ./../lib/standard//stream.nit:266 */
+  ATTR_stream___FDStream____fd(fra.me.REG[1]) = REGB1;
+  /* ./../lib/standard//stream.nit:267 */
+  REGB1 = TAG_Bool(true);
+  ATTR_stream___FDOStream____is_writable(fra.me.REG[1]) = REGB1;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos4] = 1;
   return;
 }