c_src: update
[nit.git] / c_src / stream._sep.c
index e498e67..59cd301 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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 20);
   nit_exit(1);
-  tracehead = trace.prev;
+  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;
-  struct WBT_ **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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 27);
   nit_exit(1);
-  tracehead = trace.prev;
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  /* Register variable[4]: Result */
-  variable[4] = NEW_Buffer_string___Buffer___with_capacity( variable[1] /*i*/) /*new Buffer*/;
-  variable[3] = variable[4];
-  while (true) { /*while*/
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
-    /* Ensure var variable[4]: Left 'and' operand*/
-    if (UNTAG_Bool(variable[4])) { /* and */
-      /* Register variable[4]: Result */
-      variable[4] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*IStream::eof*/;
-      variable[4] =  TAG_Bool(!UNTAG_Bool(variable[4]));
+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;
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  /* ./../lib/standard//stream.nit:34 */
+  while(1) {
+    REGB1 = TAG_Int(0);
+    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;
     }
-    /* Register variable[4]: Result */
-    if (!UNTAG_Bool(variable[4])) break; /* while*/
-    /* Register variable[4]: Local variable */
-    /* Register variable[5]: Result */
-    variable[5] = CALL_stream___IStream___read_char(variable[0])(variable[0]) /*IStream::read_char*/;
-    variable[4] = variable[5];
-    /* Register variable[5]: Result */
-    variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable[5])) { /*if*/
-      /* Register variable[5]: Result */
-      variable[5] = TAG_Char(UNTAG_Int( variable[4] /*c*/));
-      CALL_abstract_collection___SimpleCollection___add( variable[3] /*s*/)( variable[3] /*s*/, variable[5]) /*Buffer::add*/;
-      variable[1] = TAG_Int(UNTAG_Int(variable[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+      REGB2 = TAG_Int(0);
+      REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:36 */
+      if (UNTAG_Bool(REGB2)) {
+        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);
+        REGB1 = TAG_Int(1);
+        REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+        REGB0 = REGB1;
+      /* ./../lib/standard//stream.nit:38 */
+      }
+    } else {
+      /* ./../lib/standard//stream.nit:34 */
+      goto label1;
     }
-    continue_1: while(0);
-  }
-  break_1: while(0);
-  /* Register variable[4]: Result */
-  variable[4] = CALL_string___Object___to_s( variable[3] /*s*/)( variable[3] /*s*/) /*Buffer::to_s*/;
-  variable[2] = variable[4];
-  goto return_label0;
-  return_label0: while(false);
-  tracehead = trace.prev;
-  return variable[2];
+  }
+  label1: while(0);
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:41 */
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*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);}
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
-  variable[2] = variable[3];
-  CALL_stream___IStream___append_line_to(variable[0])(variable[0],  variable[2] /*s*/) /*IStream::append_line_to*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_string___Object___to_s( variable[2] /*s*/)( variable[2] /*s*/) /*Buffer::to_s*/;
-  variable[1] = variable[3];
-  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;
+  REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  /* ./../lib/standard//stream.nit:47 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Assert failed");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 47);
+    nit_exit(1);
+  }
+  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]);
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:50 */
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
-  variable[2] = variable[3];
-  while (true) { /*while*/
-    /* Register variable[3]: Result */
-    variable[3] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*IStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) break; /* while*/
-    /* Register variable[3]: Local variable */
-    /* Register variable[4]: Result */
-    variable[4] = CALL_stream___IStream___read_char(variable[0])(variable[0]) /*IStream::read_char*/;
-    variable[3] = variable[4];
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      /* Register variable[4]: Result */
-      variable[4] = TAG_Char(UNTAG_Int( variable[3] /*c*/));
-      CALL_abstract_collection___SimpleCollection___add( variable[2] /*s*/)( variable[2] /*s*/, variable[4]) /*Buffer::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;
+  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)) {
+      REGB0 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+      REGB1 = TAG_Int(0);
+      REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+      /* ./../lib/standard//stream.nit:59 */
+      if (UNTAG_Bool(REGB1)) {
+        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);
-  /* Register variable[3]: Result */
-  variable[3] = CALL_string___Object___to_s( variable[2] /*s*/)( variable[2] /*s*/) /*Buffer::to_s*/;
-  variable[1] = variable[3];
-  goto return_label3;
-  return_label3: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+  }
+  label1: while(0);
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:61 */
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    /* Register variable[3]: Local variable */
-    /* Register variable[4]: Result */
-    variable[4] = CALL_stream___IStream___read_char(variable[0])(variable[0]) /*IStream::read_char*/;
-    variable[3] = variable[4];
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Bool(( variable[3] /*x*/)==(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      /* Register variable[4]: Result */
-      variable[4] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*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) {
+    REGB0 = TAG_Bool(true);
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = CALL_stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
+      REGB1 = TAG_Int(1);
+      REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+      REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+      /* ./../lib/standard//stream.nit:69 */
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        REGB1 = TAG_Bool((REGB0)==(REGB1));
+        REGB2 = REGB1;
+      /* ./../lib/standard//stream.nit:69 */
       }
-    } else { /*if*/
-      /* Register variable[4]: Local variable */
-      /* Register variable[5]: Result */
-      variable[5] = TAG_Char(UNTAG_Int( variable[3] /*x*/));
-      variable[4] = variable[5];
-      CALL_abstract_collection___IndexedCollection___push( variable[1] /*s*/)( variable[1] /*s*/,  variable[4] /*c*/) /*AbstractArray::push*/;
-      /* Register variable[5]: Result */
-      variable[5] = TAG_Bool(( variable[4] /*c*/)==( TAG_Char('\n')));
-      if (UNTAG_Bool(variable[5])) { /*if*/
-        goto return_label5;
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./../lib/standard//stream.nit:70 */
+        if (UNTAG_Bool(REGB2)) {
+          goto label1;
+        }
+      } else {
+        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);
+        REGB2 = TAG_Char('\n');
+        REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
+        /* ./../lib/standard//stream.nit:74 */
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          REGB2 = TAG_Bool((REGB0)==(REGB2));
+          REGB1 = REGB2;
+        /* ./../lib/standard//stream.nit:74 */
+        }
+        if (UNTAG_Bool(REGB1)) {
+          goto label1;
+        }
       }
+    } else {
+      /* ./../lib/standard//stream.nit:67 */
+      goto label2;
     }
-    continue_6: while(0);
   }
-  break_6: while(0);
-  return_label5: while(false);
-  tracehead = trace.prev;
+  label2: while(0);
+  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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 79);
   nit_exit(1);
-  tracehead = trace.prev;
+  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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 86);
   nit_exit(1);
-  tracehead = trace.prev;
+  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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 89);
   nit_exit(1);
-  tracehead = trace.prev;
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*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);}
-  /* Register variable[2]: Result */
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
-  /* Register variable[2]: Result */
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  if (UNTAG_Bool(variable[2])) { /*if*/
-    CALL_stream___BufferedIStream___fill_buffer(variable[0])(variable[0]) /*BufferedIStream::fill_buffer*/;
-  }
-  /* Register variable[2]: Result */
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
-  /* Register variable[2]: Result */
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  if (UNTAG_Bool(variable[2])) { /*if*/
-    /* Register variable[2]: Result */
-    variable[2] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    variable[1] = variable[2];
-    goto return_label7;
-  }
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-  /* Register variable[4]: Result */
-  variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3], variable[4]) /*AbstractString::[]*/;
-  variable[2] = variable[3];
-  ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/ = TAG_Int(UNTAG_Int(ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/)+UNTAG_Int( TAG_Int(1)));
-  /* Register variable[3]: Result */
-  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;
+  REGB0 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  /* ./../lib/standard//stream.nit:98 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Assert failed");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 98);
+    nit_exit(1);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:99 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 99);
+    nit_exit(1);
+  }
+  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)) {
+    fprintf(stderr, "Reciever is null");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 99);
+    nit_exit(1);
+  }
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  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]);
+  }
+  REGB1 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:102 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 102);
+    nit_exit(1);
+  }
+  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)) {
+    fprintf(stderr, "Reciever is null");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 102);
+    nit_exit(1);
+  }
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+  /* ./../lib/standard//stream.nit:102 */
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Int(1);
+    REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+    /* ./../lib/standard//stream.nit:103 */
+    goto label1;
+  }
+  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);
+  /* ./../lib/standard//stream.nit:105 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 105);
+    nit_exit(1);
+  }
+  REGB1 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB2)) {
+    fprintf(stderr, "Reciever is null");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 105);
+    nit_exit(1);
+  }
+  REGB1 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+  REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  REGB3 = TAG_Int(1);
+  REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+  /* ./../lib/standard//stream.nit:106 */
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB3;
+  REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
+  REGB0 = REGB1;
+  /* ./../lib/standard//stream.nit:107 */
+  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[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  /* Register variable[4]: Result */
-  variable[4] = NEW_Buffer_string___Buffer___with_capacity( variable[1] /*i*/) /*new Buffer*/;
-  variable[3] = variable[4];
-  /* Register variable[4]: Local variable */
-  /* Register variable[5]: Result */
-  variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-  variable[4] = variable[5];
-  /* Register variable[5]: Local variable */
-  /* Register variable[6]: Result */
-  variable[6] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*AbstractArrayRead::length*/;
-  variable[5] = variable[6];
-  while (true) { /*while*/
-    /* Register variable[6]: Result */
-    variable[6] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable[6])) break; /* while*/
-    /* Register variable[6]: Result */
-    variable[6] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)>=UNTAG_Int( variable[5] /*k*/));
-    if (UNTAG_Bool(variable[6])) { /*if*/
-      CALL_stream___BufferedIStream___fill_buffer(variable[0])(variable[0]) /*BufferedIStream::fill_buffer*/;
-      /* Register variable[6]: Result */
-      variable[6] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*BufferedIStream::eof*/;
-      if (UNTAG_Bool(variable[6])) { /*if*/
-        /* Register variable[6]: Result */
-        variable[6] = CALL_string___Object___to_s( variable[3] /*s*/)( variable[3] /*s*/) /*Buffer::to_s*/;
-        variable[2] = variable[6];
-        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;
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  REGB1 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:113 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 113);
+    nit_exit(1);
+  }
+  REGB1 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+  fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+  REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  /* ./../lib/standard//stream.nit:114 */
+  if (UNTAG_Bool(REGB2)) {
+    fprintf(stderr, "Reciever is null");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 114);
+    nit_exit(1);
+  }
+  REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+  /* ./../lib/standard//stream.nit:115 */
+  while(1) {
+    REGB3 = TAG_Int(0);
+    REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+    /* ./../lib/standard//stream.nit:115 */
+    if (UNTAG_Bool(REGB3)) {
+      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]);
+        REGB3 = CALL_stream___IStream___eof(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./../lib/standard//stream.nit:118 */
+        if (UNTAG_Bool(REGB3)) {
+          fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+          goto label1;
+        }
+        REGB3 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+        /* ./../lib/standard//stream.nit:119 */
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 119);
+          nit_exit(1);
+        }
+        REGB3 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+        REGB1 = REGB3;
+        fra.me.REG[3] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        /* ./../lib/standard//stream.nit:120 */
+        if (UNTAG_Bool(REGB3)) {
+          fprintf(stderr, "Reciever is null");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 120);
+          nit_exit(1);
+        }
+        REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:23 */
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_length");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+          nit_exit(1);
+        }
+        REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
+        REGB2 = REGB3;
+      /* ./../lib/standard//stream.nit:120 */
       }
-      /* Register variable[6]: Result */
-      variable[6] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-      variable[4] = variable[6] /*j=*/;
-      /* Register variable[6]: Result */
-      variable[6] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-      /* Register variable[6]: Result */
-      variable[6] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*AbstractArrayRead::length*/;
-      variable[5] = variable[6] /*k=*/;
-    }
-    while (true) { /*while*/
-      /* Register variable[6]: Result */
-      variable[6] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)<UNTAG_Int( variable[5] /*k*/));
-      /* Ensure var variable[6]: Left 'and' operand*/
-      if (UNTAG_Bool(variable[6])) { /* and */
-        /* Register variable[6]: Result */
-        variable[6] = TAG_Bool(UNTAG_Int( variable[1] /*i*/)>UNTAG_Int( TAG_Int(0)));
+      /* ./../lib/standard//stream.nit:122 */
+      while(1) {
+        REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+        /* ./../lib/standard//stream.nit:122 */
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Int(0);
+          REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+        /* ./../lib/standard//stream.nit:122 */
+        } else {
+          REGB4 = TAG_Bool(false);
+          REGB3 = REGB4;
+        }
+        if (UNTAG_Bool(REGB3)) {
+          fra.me.REG[3] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+          REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          /* ./../lib/standard//stream.nit:123 */
+          if (UNTAG_Bool(REGB3)) {
+            fprintf(stderr, "Reciever is null");
+            fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 123);
+            nit_exit(1);
+          }
+          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);
+          REGB3 = TAG_Int(1);
+          REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
+          REGB1 = REGB3;
+          REGB3 = TAG_Int(1);
+          REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
+          REGB0 = REGB3;
+        /* ./../lib/standard//stream.nit:125 */
+        } else {
+          /* ./../lib/standard//stream.nit:122 */
+          goto label2;
+        }
       }
-      /* Register variable[6]: Result */
-      if (!UNTAG_Bool(variable[6])) break; /* while*/
-      /* Register variable[6]: Result */
-      variable[6] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-      /* Register variable[6]: Result */
-      variable[6] = CALL_abstract_collection___MapRead_____bra(variable[6])(variable[6],  variable[4] /*j*/) /*AbstractString::[]*/;
-      CALL_abstract_collection___SimpleCollection___add( variable[3] /*s*/)( variable[3] /*s*/, variable[6]) /*Buffer::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);
-  ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/ =  variable[4] /*j*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_string___Object___to_s( variable[3] /*s*/)( variable[3] /*s*/) /*Buffer::to_s*/;
-  variable[2] = variable[6];
-  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;
+  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];
+  /* ./../lib/standard//stream.nit:129 */
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
-  variable[2] = variable[3];
-  while (true) { /*while*/
-    /* Register variable[3]: Result */
-    variable[3] = CALL_stream___IStream___eof(variable[0])(variable[0]) /*BufferedIStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) break; /* while*/
-    /* Register variable[3]: Local variable */
-    /* Register variable[4]: Result */
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-    variable[3] = variable[4];
-    /* Register variable[4]: Local variable */
-    /* Register variable[5]: Result */
-    variable[5] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-    /* Register variable[5]: Result */
-    variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
-    variable[4] = variable[5];
-    while (true) { /*while*/
-      /* Register variable[5]: Result */
-      variable[5] = TAG_Bool(UNTAG_Int( variable[3] /*j*/)<UNTAG_Int( variable[4] /*k*/));
-      if (!UNTAG_Bool(variable[5])) break; /* while*/
-      /* Register variable[5]: Result */
-      variable[5] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-      /* Register variable[5]: Result */
-      variable[5] = CALL_abstract_collection___MapRead_____bra(variable[5])(variable[5],  variable[3] /*j*/) /*AbstractString::[]*/;
-      CALL_abstract_collection___SimpleCollection___add( variable[2] /*s*/)( variable[2] /*s*/, variable[5]) /*Buffer::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;
+  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)) {
+      REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      /* ./../lib/standard//stream.nit:136 */
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 136);
+        nit_exit(1);
+      }
+      REGB0 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+      fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./../lib/standard//stream.nit:137 */
+      if (UNTAG_Bool(REGB1)) {
+        fprintf(stderr, "Reciever is null");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 137);
+        nit_exit(1);
+      }
+      REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:23 */
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        fprintf(stderr, "Uninitialized attribute %s", "_length");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+        nit_exit(1);
+      }
+      REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+      /* ./../lib/standard//stream.nit:138 */
+      while(1) {
+        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+        /* ./../lib/standard//stream.nit:138 */
+        if (UNTAG_Bool(REGB2)) {
+          fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          /* ./../lib/standard//stream.nit:139 */
+          if (UNTAG_Bool(REGB2)) {
+            fprintf(stderr, "Reciever is null");
+            fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 139);
+            nit_exit(1);
+          }
+          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);
+          REGB2 = TAG_Int(1);
+          REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+          REGB0 = REGB2;
+        /* ./../lib/standard//stream.nit:140 */
+        } 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);
-    ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*j*/;
-    CALL_stream___BufferedIStream___fill_buffer(variable[0])(variable[0]) /*BufferedIStream::fill_buffer*/;
-    continue_12: while(0);
-  }
-  break_12: while(0);
-  /* Register variable[3]: Result */
-  variable[3] = CALL_string___Object___to_s( variable[2] /*s*/)( variable[2] /*s*/) /*Buffer::to_s*/;
-  variable[1] = variable[3];
-  goto return_label11;
-  return_label11: while(false);
-  tracehead = trace.prev;
-  return variable[1];
+  }
+  label2: while(0);
+  fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//stream.nit:145 */
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  while (true) { /*while*/
-    if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    /* Register variable[3]: Local variable */
-    /* Register variable[4]: Result */
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-    variable[3] = variable[4];
-    while (true) { /*while*/
-      /* Register variable[4]: Result */
-      variable[4] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-      /* Register variable[4]: Result */
-      variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArrayRead::length*/;
-      /* Register variable[4]: Result */
-      variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int(variable[4]));
-      /* Ensure var variable[4]: Left 'and' operand*/
-      if (UNTAG_Bool(variable[4])) { /* and */
-        /* Register variable[4]: Result */
-        variable[4] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-        /* Register variable[4]: Result */
-        variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4],  variable[3] /*i*/) /*AbstractString::[]*/;
-        /* Register variable[4]: Result */
-        variable[4] = TAG_Bool((variable[4])!=( 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) {
+    REGB0 = TAG_Bool(true);
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      /* ./../lib/standard//stream.nit:152 */
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 152);
+        nit_exit(1);
       }
-      /* Register variable[4]: Result */
-      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);
-    }
-    break_16: while(0);
-    /* Register variable[4]: Result */
-    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)>UNTAG_Int(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      /* Register variable[4]: Result */
-      variable[4] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( variable[1] /*s*/) /*AbstractArrayRead::length*/;
-      /* Register variable[4]: Result */
-      variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( variable[3] /*i*/));
-      /* Register variable[5]: Result */
-      variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-      /* Register variable[4]: Result */
-      variable[4] = TAG_Int(UNTAG_Int(variable[4])-UNTAG_Int(variable[5]));
-      CALL_array___AbstractArray___enlarge( variable[1] /*s*/)( variable[1] /*s*/, variable[4]) /*Buffer::enlarge*/;
-      /* Register variable[4]: Local variable */
-      /* Register variable[5]: Result */
-      variable[5] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-      variable[4] = variable[5];
-      while (true) { /*while*/
-        /* Register variable[5]: Result */
-        variable[5] = TAG_Bool(UNTAG_Int( variable[4] /*j*/)<UNTAG_Int( variable[3] /*i*/));
-        if (!UNTAG_Bool(variable[5])) break; /* while*/
-        /* Register variable[5]: Result */
-        variable[5] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-        /* Register variable[5]: Result */
-        variable[5] = CALL_abstract_collection___MapRead_____bra(variable[5])(variable[5],  variable[4] /*j*/) /*AbstractString::[]*/;
-        CALL_abstract_collection___SimpleCollection___add( variable[1] /*s*/)( variable[1] /*s*/, variable[5]) /*Buffer::add*/;
-        variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( TAG_Int(1))) /*j*/;
-        continue_17: while(0);
+      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)) {
+          fprintf(stderr, "Reciever is null");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 153);
+          nit_exit(1);
+        }
+        REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:23 */
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_length");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+          nit_exit(1);
+        }
+        REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+        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)) {
+            fprintf(stderr, "Reciever is null");
+            fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 153);
+            nit_exit(1);
+          }
+          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 {
+            REGB2 = TAG_Bool((REGB1)==(REGB2));
+            REGB3 = REGB2;
+          /* ./../lib/standard//stream.nit:153 */
+          }
+          REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
+        } else {
+          REGB2 = TAG_Bool(false);
+          REGB3 = REGB2;
+        }
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Int(1);
+          REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+          REGB0 = REGB3;
+        /* ./../lib/standard//stream.nit:153 */
+        } else {
+          goto label1;
+        }
       }
-      break_17: while(0);
-    }
-    /* Register variable[4]: Result */
-    variable[4] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-    /* Register variable[4]: Result */
-    variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArrayRead::length*/;
-    /* Register variable[4]: Result */
-    variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*i*/)<UNTAG_Int(variable[4]));
-    if (UNTAG_Bool(variable[4])) { /*if*/
-      /* Register variable[4]: Result */
-      variable[4] = TAG_Int(UNTAG_Int( variable[3] /*i*/)+UNTAG_Int( TAG_Int(1)));
-      ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/ = variable[4];
-      goto return_label14;
-    } else { /*if*/
-      ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*i*/;
-      /* Register variable[4]: Result */
-      variable[4] = CALL_stream___BufferedIStream___end_reached(variable[0])(variable[0]) /*BufferedIStream::end_reached*/;
-      if (UNTAG_Bool(variable[4])) { /*if*/
-        goto return_label14;
-      } else { /*if*/
-        CALL_stream___BufferedIStream___fill_buffer(variable[0])(variable[0]) /*BufferedIStream::fill_buffer*/;
+      label1: while(0);
+      REGB3 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+      /* ./../lib/standard//stream.nit:156 */
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 156);
+        nit_exit(1);
+      }
+      REGB3 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+      REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
+      /* ./../lib/standard//stream.nit:156 */
+      if (UNTAG_Bool(REGB3)) {
+        REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:23 */
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_length");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+          nit_exit(1);
+        }
+        REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+        REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
+        REGB2 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+        /* ./../lib/standard//stream.nit:158 */
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 158);
+          nit_exit(1);
+        }
+        REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+        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);
+        REGB2 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+        /* ./../lib/standard//stream.nit:161 */
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+          fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 161);
+          nit_exit(1);
+        }
+        REGB2 = ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
+        /* ./../lib/standard//stream.nit:162 */
+        while(1) {
+          REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
+          /* ./../lib/standard//stream.nit:162 */
+          if (UNTAG_Bool(REGB3)) {
+            fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+            REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+            /* ./../lib/standard//stream.nit:163 */
+            if (UNTAG_Bool(REGB3)) {
+              fprintf(stderr, "Reciever is null");
+              fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 163);
+              nit_exit(1);
+            }
+            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);
+            REGB3 = TAG_Int(1);
+            REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+            REGB2 = REGB3;
+          /* ./../lib/standard//stream.nit:164 */
+          } else {
+            /* ./../lib/standard//stream.nit:162 */
+            goto label2;
+          }
+        }
+        label2: while(0);
       }
+      fra.me.REG[2] = ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]);
+      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./../lib/standard//stream.nit:168 */
+      if (UNTAG_Bool(REGB2)) {
+        fprintf(stderr, "Reciever is null");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 168);
+        nit_exit(1);
+      }
+      REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:23 */
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        fprintf(stderr, "Uninitialized attribute %s", "_length");
+        fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+        nit_exit(1);
+      }
+      REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[2]);
+      REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
+      /* ./../lib/standard//stream.nit:168 */
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = TAG_Int(1);
+        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;
+        REGB0 = CALL_stream___BufferedIStream___end_reached(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./../lib/standard//stream.nit:175 */
+        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]);
+        }
+      }
+    } else {
+      /* ./../lib/standard//stream.nit:150 */
+      goto label4;
     }
-    continue_15: while(0);
   }
-  break_15: while(0);
-  return_label14: while(false);
-  tracehead = trace.prev;
+  label4: while(0);
+  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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*BufferedIStream::_buffer_pos*/;
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_abstract_collection___Collection___length(variable[3])(variable[3]) /*AbstractArrayRead::length*/;
-  /* Register variable[2]: Result */
-  variable[2] = TAG_Bool(UNTAG_Int(variable[2])>=UNTAG_Int(variable[3]));
-  /* Ensure var variable[2]: Left 'and' operand*/
-  if (UNTAG_Bool(variable[2])) { /* and */
-    /* Register variable[2]: Result */
-    variable[2] = CALL_stream___BufferedIStream___end_reached(variable[0])(variable[0]) /*BufferedIStream::end_reached*/;
-  }
-  /* Register variable[2]: Result */
-  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;
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:184 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_buffer_pos");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 184);
+    nit_exit(1);
+  }
+  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)) {
+    fprintf(stderr, "Reciever is null");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 184);
+    nit_exit(1);
+  }
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 192);
   nit_exit(1);
-  tracehead = trace.prev;
+  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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
+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 */
   fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 195);
   nit_exit(1);
-  tracehead = trace.prev;
+  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[4];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Result */
-  variable[3] = NEW_Buffer_string___Buffer___with_capacity( variable[1] /*capacity*/) /*new Buffer*/;
-  ATTR_stream___BufferedIStream____buffer(variable[0]) /*BufferedIStream::_buffer*/ = variable[3];
-  ATTR_stream___BufferedIStream____buffer_pos(variable[0]) /*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;
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___with_capacity(REGB0);
+  /* ./../lib/standard//stream.nit:201 */
+  ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//stream.nit:202 */
+  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[3];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Result */
-  variable[2] = ATTR_stream___FDStream____fd(variable[0]) /*FDStream::_fd*/;
-  CALL_stream___FDStream___native_close(variable[0])(variable[0], variable[2]) /*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;
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:218 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_fd");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 218);
+    nit_exit(1);
+  }
+  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;
-  struct WBT_ **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;
+  REGB0 = TAG_Int(stream_FDStream_FDStream_native_close_1(fra.me.REG[0], UNTAG_Int(REGB0)));
+  /* ./../lib/standard//stream.nit:220 */
+  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;
-  struct WBT_ **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;
+  REGB0 = TAG_Int(stream_FDStream_FDStream_native_read_char_1(fra.me.REG[0], UNTAG_Int(REGB0)));
+  /* ./../lib/standard//stream.nit:221 */
+  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;
-  struct WBT_ **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;
+  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)));
+  /* ./../lib/standard//stream.nit:222 */
+  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;
-  struct WBT_ **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;
+  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)));
+  /* ./../lib/standard//stream.nit:223 */
+  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[3];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDStream].i]) return;
-  /* Register variable[2]: Method return value and escape marker */
-  ATTR_stream___FDStream____fd(variable[0]) /*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;
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/standard//stream.nit:225 */
+  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[4];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Method return value and escape marker */
-  /* Register variable[2]: Local variable */
-  /* Register variable[3]: Result */
-  variable[3] = ATTR_stream___FDStream____fd(variable[0]) /*FDStream::_fd*/;
-  /* Register variable[3]: Result */
-  variable[3] = CALL_stream___FDStream___native_read_char(variable[0])(variable[0], variable[3]) /*FDStream::native_read_char*/;
-  variable[2] = variable[3];
-  /* Register variable[3]: Result */
-  variable[3] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  /* Register variable[3]: Result */
-  variable[3] = TAG_Bool(( variable[2] /*nb*/)==(variable[3]));
-  if (UNTAG_Bool(variable[3])) { /*if*/
-    ATTR_stream___FDIStream____eof(variable[0]) /*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___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;
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:235 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_fd");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 235);
+    nit_exit(1);
+  }
+  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);
+  REGB1 = TAG_Int(1);
+  REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+  /* ./../lib/standard//stream.nit:236 */
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    REGB1 = TAG_Bool((REGB0)==(REGB1));
+    REGB2 = REGB1;
+  /* ./../lib/standard//stream.nit:236 */
+  }
+  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;
 }
-val_t stream___FDIStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, NULL, 231, LOCATE_stream___FDIStream___eof};
-  val_t *variable = NULL;
-  struct WBT_ **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___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;
+  REGB0 = TAG_Bool(ATTR_stream___FDIStream____eof(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:231 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_eof");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 231);
+    nit_exit(1);
+  }
+  REGB0 = ATTR_stream___FDIStream____eof(fra.me.REG[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];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIStream].i]) return;
-  /* Register variable[2]: Method return value and escape marker */
-  CALL_stream___FDStream___init(variable[0])(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[7];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  /* Register variable[2]: Method return value and escape marker */
-  /* Register variable[3]: Local variable */
-  /* Register variable[4]: Result */
-  variable[4] = ATTR_stream___FDStream____fd(variable[0]) /*FDStream::_fd*/;
-  /* Register variable[5]: Result */
-  variable[5] = CALL_string___String___to_cstring( variable[1] /*s*/)( variable[1] /*s*/) /*String::to_cstring*/;
-  /* Register variable[6]: Result */
-  variable[6] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( variable[1] /*s*/) /*AbstractArrayRead::length*/;
-  /* Register variable[4]: Result */
-  variable[4] = CALL_stream___FDStream___native_write(variable[0])(variable[0], variable[4], variable[5], variable[6]) /*FDStream::native_write*/;
-  variable[3] = variable[4];
-  /* Register variable[4]: Result */
-  variable[4] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( variable[1] /*s*/) /*AbstractArrayRead::length*/;
-  /* Register variable[4]: Result */
-  variable[4] = TAG_Bool(UNTAG_Int( variable[3] /*nb*/)<UNTAG_Int(variable[4]));
-  if (UNTAG_Bool(variable[4])) { /*if*/
-    ATTR_stream___FDOStream____is_writable(variable[0]) /*FDOStream::_is_writable*/ =  TAG_Bool(false);
-  }
-  return_label24: while(false);
-  tracehead = trace.prev;
+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;
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:250 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_fd");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 250);
+    nit_exit(1);
+  }
+  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]);
+  REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  REGB1 = CALL_stream___FDStream___native_write(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2], REGB1);
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:23 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_length");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
+    nit_exit(1);
+  }
+  REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
+  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;
 }
-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;
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  tracehead = trace.prev;
-  return ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/;
+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;
+  REGB0 = TAG_Bool(ATTR_stream___FDOStream____is_writable(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//stream.nit:246 */
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    fprintf(stderr, "Uninitialized attribute %s", "_is_writable");
+    fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 246);
+    nit_exit(1);
+  }
+  REGB0 = ATTR_stream___FDOStream____is_writable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
 }
-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[3];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDOStream].i]) return;
-  /* Register variable[2]: Method return value and escape marker */
-  CALL_stream___FDStream___init(variable[0])(variable[0], variable[1], init_table /*YYY*/) /*FDStream::init*/;
-  ATTR_stream___FDOStream____is_writable(variable[0]) /*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;
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/standard//stream.nit:254 */
+  CALL_stream___FDStream___init(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
+  REGB0 = TAG_Bool(true);
+  /* ./../lib/standard//stream.nit:256 */
+  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[3];
-  struct WBT_ **closurevariable = NULL;
-  trace.prev = tracehead; tracehead = &trace;
-  trace.file = LOCATE_stream;
-  /* Register variable[0]: Local variable */
-  variable[0] =  self;
-  /* Register variable[1]: Local variable */
-  variable[1] =  param0;
-  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIOStream].i]) return;
-  /* Register variable[2]: Method return value and escape marker */
-  CALL_stream___FDIStream___init(variable[0])(variable[0], variable[1], init_table /*YYY*/) /*FDIStream::init*/;
-  CALL_stream___FDOStream___init(variable[0])(variable[0], variable[1], init_table /*YYY*/) /*FDOStream::init*/;
-  ATTR_stream___FDStream____fd(variable[0]) /*FDStream::_fd*/ =  variable[1] /*fd*/;
-  ATTR_stream___FDOStream____is_writable(variable[0]) /*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;
+  fra.me.REG[1] = fra.me.REG[0];
+  REGB1 = REGB0;
+  /* ./../lib/standard//stream.nit:264 */
+  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;
+  REGB1 = TAG_Bool(true);
+  /* ./../lib/standard//stream.nit:267 */
+  ATTR_stream___FDOStream____is_writable(fra.me.REG[1]) = REGB1;
+  stack_frame_head = fra.me.prev;
+  init_table[itpos4] = 1;
   return;
 }