new c_src
[nit.git] / c_src / stream._sep.c
index 9684b28..8ab0baf 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, LOCATE_stream, 20, LOCATE_stream___IOS___close};
+  struct trace_t trace = {NULL, NULL, 20, LOCATE_stream___IOS___close};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 20);
   nit_exit(1);
   tracehead = trace.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;
+  return;
+}
 val_t stream___IStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 27, LOCATE_stream___IStream___read_char};
+  struct trace_t trace = {NULL, NULL, 27, LOCATE_stream___IStream___read_char};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
   fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 27);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t stream___IStream___read(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 30, LOCATE_stream___IStream___read};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
+  struct trace_t trace = {NULL, NULL, 30, LOCATE_stream___IStream___read};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = NEW_string___String___with_capacity( variable0 /*i*/); /*new String*/
-  variable1 = variable2;
+  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*/
-    variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>UNTAG_Int( TAG_Int(0)));
-    variable3 = variable2;
-    if (UNTAG_Bool(variable3)) { /* and */
-      variable3 = ((stream___IStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*IStream::eof*/;
-      variable3 =  TAG_Bool(!UNTAG_Bool(variable3));
+    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] = CALL_stream___IStream___eof(variable[5])(variable[5]) /*IStream::eof*/;
+      variable[5] =  TAG_Bool(!UNTAG_Bool(variable[5]));
     }
-    variable2 = variable3;
-    if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable3 = ((stream___IStream___read_char_t)CALL( self,COLOR_stream___IStream___read_char))( self) /*IStream::read_char*/;
-    variable2 = variable3;
-    variable3 = TAG_Bool(UNTAG_Int( variable2 /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable3)) { /*if*/
-      variable3 = TAG_Char(UNTAG_Int( variable2 /*c*/));
-      ((string___String___add_t)CALL( variable1 /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*s*/, variable3) /*String::add*/;
-      variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*i*/;
+    variable[4] = variable[5];
+    if (!UNTAG_Bool(variable[4])) break; /* while*/
+    variable[5] = variable[0];
+    variable[5] = CALL_stream___IStream___read_char(variable[5])(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*/));
+      CALL_abstract_collection___SimpleCollection___add( variable[3] /*s*/)( variable[3] /*s*/, variable[5]) /*String::add*/;
+      variable[1] = TAG_Int(UNTAG_Int(variable[1])-UNTAG_Int( TAG_Int(1))) /*i*/;
     }
     continue_1: while(0);
   }
   break_1: while(0);
-  variable1 =  variable1 /*s*/;
+  variable[2] =  variable[3] /*s*/;
   goto return_label0;
   return_label0: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 val_t stream___IStream___read_line(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 44, LOCATE_stream___IStream___read_line};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 44, LOCATE_stream___IStream___read_line};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = ((stream___IStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*IStream::eof*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___IStream___read_line, LOCATE_stream, 47); nit_exit(1);}
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable0 = variable1;
-  ((stream___IStream___append_line_to_t)CALL( self,COLOR_stream___IStream___append_line_to))( self,  variable0 /*s*/) /*IStream::append_line_to*/;
-  variable0 =  variable0 /*s*/;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[2] = variable[0];
+  variable[2] = CALL_stream___IStream___eof(variable[2])(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];
+  CALL_stream___IStream___append_line_to(variable[3])(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 variable0;
+  return variable[1];
 }
 val_t stream___IStream___read_all(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 53, LOCATE_stream___IStream___read_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
+  struct trace_t trace = {NULL, NULL, 53, LOCATE_stream___IStream___read_all};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable0 = variable1;
+  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*/
-    variable1 = ((stream___IStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*IStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) break; /* while*/
-    variable2 = ((stream___IStream___read_char_t)CALL( self,COLOR_stream___IStream___read_char))( self) /*IStream::read_char*/;
-    variable1 = variable2;
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*c*/)>=UNTAG_Int( TAG_Int(0)));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      variable2 = TAG_Char(UNTAG_Int( variable1 /*c*/));
-      ((string___String___add_t)CALL( variable0 /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*s*/, variable2) /*String::add*/;
+    variable[3] = variable[0];
+    variable[3] = CALL_stream___IStream___eof(variable[3])(variable[3]) /*IStream::eof*/;
+    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) break; /* while*/
+    variable[4] = variable[0];
+    variable[4] = CALL_stream___IStream___read_char(variable[4])(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*/));
+      CALL_abstract_collection___SimpleCollection___add( variable[2] /*s*/)( variable[2] /*s*/, variable[4]) /*String::add*/;
     }
     continue_4: while(0);
   }
   break_4: while(0);
-  variable0 =  variable0 /*s*/;
+  variable[1] =  variable[2] /*s*/;
   goto return_label3;
   return_label3: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 void stream___IStream___append_line_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 64, LOCATE_stream___IStream___append_line_to};
-  val_t variable0;
-    val_t variable1;
-    val_t variable2;
-      val_t variable3;
+  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;
-  variable0 =  param0;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[1] =  param0;
   while (true) { /*while*/
     if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable2 = ((stream___IStream___read_char_t)CALL( self,COLOR_stream___IStream___read_char))( self) /*IStream::read_char*/;
-    variable1 = variable2;
-    variable2 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    variable2 = TAG_Bool(( variable1 /*x*/)==(variable2));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      variable2 = ((stream___IStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*IStream::eof*/;
-      if (UNTAG_Bool(variable2)) { /*if*/
+    variable[4] = variable[0];
+    variable[4] = CALL_stream___IStream___read_char(variable[4])(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] = CALL_stream___IStream___eof(variable[4])(variable[4]) /*IStream::eof*/;
+      if (UNTAG_Bool(variable[4])) { /*if*/
         goto return_label5;
       }
     } else { /*if*/
-      variable3 = TAG_Char(UNTAG_Int( variable1 /*x*/));
-      variable2 = variable3;
-      ((array___AbstractArray___push_t)CALL( variable0 /*s*/,COLOR_abstract_collection___IndexedCollection___push))( variable0 /*s*/,  variable2 /*c*/) /*AbstractArray::push*/;
-      variable3 = TAG_Bool(( variable2 /*c*/)==( TAG_Char('\n')));
-      if (UNTAG_Bool(variable3)) { /*if*/
+      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*/;
+      variable[5] = TAG_Bool(( variable[4] /*c*/)==( TAG_Char('\n')));
+      if (UNTAG_Bool(variable[5])) { /*if*/
         goto return_label5;
       }
     }
@@ -133,228 +159,272 @@ void stream___IStream___append_line_to(val_t  self, val_t  param0) {
   return;
 }
 val_t stream___IStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 79, LOCATE_stream___IStream___eof};
+  struct trace_t trace = {NULL, NULL, 79, LOCATE_stream___IStream___eof};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___IStream___append_line_to, LOCATE_stream, 79);
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 79);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 void stream___OStream___write(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 86, LOCATE_stream___OStream___write};
+  struct trace_t trace = {NULL, NULL, 86, LOCATE_stream___OStream___write};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___IStream___append_line_to, LOCATE_stream, 86);
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 86);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t stream___OStream___is_writable(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 89, LOCATE_stream___OStream___is_writable};
+  struct trace_t trace = {NULL, NULL, 89, LOCATE_stream___OStream___is_writable};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___IStream___append_line_to, LOCATE_stream, 89);
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 89);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t stream___BufferedIStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 96, LOCATE_stream___BufferedIStream___read_char};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 96, LOCATE_stream___BufferedIStream___read_char};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = ((stream___BufferedIStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*BufferedIStream::eof*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___BufferedIStream___read_char, LOCATE_stream, 98); nit_exit(1);}
-  variable0 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-  variable1 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-  variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
-  variable0 = TAG_Bool(UNTAG_Int(variable0)>=UNTAG_Int(variable1));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    ((stream___BufferedIStream___fill_buffer_t)CALL( self,COLOR_stream___BufferedIStream___fill_buffer))( self) /*BufferedIStream::fill_buffer*/;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[2] = variable[0];
+  variable[2] = CALL_stream___IStream___eof(variable[2])(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] = CALL_abstract_collection___Collection___length(variable[3])(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];
+    CALL_stream___BufferedIStream___fill_buffer(variable[2])(variable[2]) /*BufferedIStream::fill_buffer*/;
   }
-  variable0 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-  variable1 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-  variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
-  variable0 = TAG_Bool(UNTAG_Int(variable0)>=UNTAG_Int(variable1));
-  if (UNTAG_Bool(variable0)) { /*if*/
-    variable0 = TAG_Int(-UNTAG_Int( TAG_Int(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] = CALL_abstract_collection___Collection___length(variable[3])(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;
   }
-  variable1 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-  variable2 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-  variable1 = ((string___String_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1, variable2) /*String::[]*/;
-  variable0 = variable1;
-  ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ = TAG_Int(UNTAG_Int(ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/)+UNTAG_Int( TAG_Int(1)));
-  variable1 = TAG_Int((unsigned char)UNTAG_Char( variable0 /*c*/));
-  variable0 = variable1;
+  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] = CALL_abstract_collection___Map_____bra(variable[3])(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 variable0;
+  return variable[1];
 }
 val_t stream___BufferedIStream___read(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 110, LOCATE_stream___BufferedIStream___read};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-      val_t variable5;
+  struct trace_t trace = {NULL, NULL, 110, LOCATE_stream___BufferedIStream___read};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = NEW_string___String___with_capacity( variable0 /*i*/); /*new String*/
-  variable1 = variable2;
-  variable3 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-  variable2 = variable3;
-  variable4 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-  variable4 = ((array___AbstractArray___length_t)CALL(variable4,COLOR_abstract_collection___Collection___length))(variable4) /*AbstractArray::length*/;
-  variable3 = variable4;
+  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] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*AbstractArray::length*/;
+  variable[5] = variable[6];
   while (true) { /*while*/
-    variable4 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>UNTAG_Int( TAG_Int(0)));
-    if (!UNTAG_Bool(variable4)) break; /* while*/
-    variable4 = TAG_Bool(UNTAG_Int( variable2 /*j*/)>=UNTAG_Int( variable3 /*k*/));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      ((stream___BufferedIStream___fill_buffer_t)CALL( self,COLOR_stream___BufferedIStream___fill_buffer))( self) /*BufferedIStream::fill_buffer*/;
-      variable4 = ((stream___BufferedIStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*BufferedIStream::eof*/;
-      if (UNTAG_Bool(variable4)) { /*if*/
-        variable1 =  variable1 /*s*/;
+    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];
+      CALL_stream___BufferedIStream___fill_buffer(variable[6])(variable[6]) /*BufferedIStream::fill_buffer*/;
+      variable[6] = variable[0];
+      variable[6] = CALL_stream___IStream___eof(variable[6])(variable[6]) /*BufferedIStream::eof*/;
+      if (UNTAG_Bool(variable[6])) { /*if*/
+        variable[2] =  variable[3] /*s*/;
         goto return_label8;
       }
-      variable4 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-      variable2 = variable4 /*j=*/;
-      variable4 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-      variable4 = ((array___AbstractArray___length_t)CALL(variable4,COLOR_abstract_collection___Collection___length))(variable4) /*AbstractArray::length*/;
-      variable3 = variable4 /*k=*/;
+      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] = CALL_abstract_collection___Collection___length(variable[6])(variable[6]) /*AbstractArray::length*/;
+      variable[5] = variable[6] /*k=*/;
     }
     while (true) { /*while*/
-      variable4 = TAG_Bool(UNTAG_Int( variable2 /*j*/)<UNTAG_Int( variable3 /*k*/));
-      variable5 = variable4;
-      if (UNTAG_Bool(variable5)) { /* and */
-        variable5 = TAG_Bool(UNTAG_Int( variable0 /*i*/)>UNTAG_Int( TAG_Int(0)));
+      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)));
       }
-      variable4 = variable5;
-      if (!UNTAG_Bool(variable4)) break; /* while*/
-      variable4 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-      variable4 = ((string___String_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4,  variable2 /*j*/) /*String::[]*/;
-      ((string___String___add_t)CALL( variable1 /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*s*/, variable4) /*String::add*/;
-      variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*j*/;
-      variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*i*/;
+      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] = CALL_abstract_collection___Map_____bra(variable[6])(variable[6],  variable[4] /*j*/) /*String::[]*/;
+      CALL_abstract_collection___SimpleCollection___add( variable[3] /*s*/)( 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);
     }
     break_10: while(0);
     continue_9: while(0);
   }
   break_9: while(0);
-  ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ =  variable2 /*j*/;
-  variable1 =  variable1 /*s*/;
+  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 variable1;
+  return variable[2];
 }
 val_t stream___BufferedIStream___read_all(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 132, LOCATE_stream___BufferedIStream___read_all};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
+  struct trace_t trace = {NULL, NULL, 132, LOCATE_stream___BufferedIStream___read_all};
+  val_t variable[6];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable0 = variable1;
+  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*/
-    variable1 = ((stream___BufferedIStream___eof_t)CALL( self,COLOR_stream___IStream___eof))( self) /*BufferedIStream::eof*/;
-    if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) break; /* while*/
-    variable2 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-    variable1 = variable2;
-    variable3 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-    variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*AbstractArray::length*/;
-    variable2 = variable3;
+    variable[3] = variable[0];
+    variable[3] = CALL_stream___IStream___eof(variable[3])(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] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArray::length*/;
+    variable[4] = variable[5];
     while (true) { /*while*/
-      variable3 = TAG_Bool(UNTAG_Int( variable1 /*j*/)<UNTAG_Int( variable2 /*k*/));
-      if (!UNTAG_Bool(variable3)) break; /* while*/
-      variable3 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-      variable3 = ((string___String_____bra_t)CALL(variable3,COLOR_abstract_collection___Map_____bra))(variable3,  variable1 /*j*/) /*String::[]*/;
-      ((string___String___add_t)CALL( variable0 /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*s*/, variable3) /*String::add*/;
-      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*j*/;
+      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] = CALL_abstract_collection___Map_____bra(variable[5])(variable[5],  variable[3] /*j*/) /*String::[]*/;
+      CALL_abstract_collection___SimpleCollection___add( variable[2] /*s*/)( 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);
     }
     break_13: while(0);
-    ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ =  variable1 /*j*/;
-    ((stream___BufferedIStream___fill_buffer_t)CALL( self,COLOR_stream___BufferedIStream___fill_buffer))( self) /*BufferedIStream::fill_buffer*/;
+    variable[5] = variable[0];
+    ATTR_stream___BufferedIStream____buffer_pos(variable[5]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*j*/;
+    variable[5] = variable[0];
+    CALL_stream___BufferedIStream___fill_buffer(variable[5])(variable[5]) /*BufferedIStream::fill_buffer*/;
     continue_12: while(0);
   }
   break_12: while(0);
-  variable0 =  variable0 /*s*/;
+  variable[1] =  variable[2] /*s*/;
   goto return_label11;
   return_label11: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 void stream___BufferedIStream___append_line_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 148, LOCATE_stream___BufferedIStream___append_line_to};
-  val_t variable0;
-    val_t variable1;
-    val_t variable2;
-      val_t variable3;
+  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;
-  variable0 =  param0;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[1] =  param0;
   while (true) { /*while*/
     if (!UNTAG_Bool( TAG_Bool(true))) break; /* while*/
-    variable2 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-    variable1 = variable2;
+    variable[4] = variable[0];
+    variable[4] = ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/;
+    variable[3] = variable[4];
     while (true) { /*while*/
-      variable2 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-      variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
-      variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int(variable2));
-      variable3 = variable2;
-      if (UNTAG_Bool(variable3)) { /* and */
-        variable3 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-        variable3 = ((string___String_____bra_t)CALL(variable3,COLOR_abstract_collection___Map_____bra))(variable3,  variable1 /*i*/) /*String::[]*/;
-        variable3 = TAG_Bool((variable3)!=( TAG_Char('\n')));
+      variable[4] = variable[0];
+      variable[4] = ATTR_stream___BufferedIStream____buffer(variable[4]) /*BufferedIStream::_buffer*/;
+      variable[4] = CALL_abstract_collection___Collection___length(variable[4])(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] = CALL_abstract_collection___Map_____bra(variable[5])(variable[5],  variable[3] /*i*/) /*String::[]*/;
+        variable[5] = TAG_Bool((variable[5])!=( TAG_Char('\n')));
       }
-      variable2 = variable3;
-      if (!UNTAG_Bool(variable2)) break; /* while*/
-      variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
+      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);
     }
     break_16: while(0);
-    variable2 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>UNTAG_Int(variable2));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
-      variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( variable1 /*i*/));
-      variable3 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-      variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int(variable3));
-      ((string___String___enlarge_t)CALL( variable0 /*s*/,COLOR_array___AbstractArray___enlarge))( variable0 /*s*/, variable2) /*String::enlarge*/;
-      variable3 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-      variable2 = variable3;
+    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] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( 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]));
+      CALL_array___AbstractArray___enlarge( variable[1] /*s*/)( 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*/
-        variable3 = TAG_Bool(UNTAG_Int( variable2 /*j*/)<UNTAG_Int( variable1 /*i*/));
-        if (!UNTAG_Bool(variable3)) break; /* while*/
-        variable3 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-        variable3 = ((string___String_____bra_t)CALL(variable3,COLOR_abstract_collection___Map_____bra))(variable3,  variable2 /*j*/) /*String::[]*/;
-        ((string___String___add_t)CALL( variable0 /*s*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*s*/, variable3) /*String::add*/;
-        variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*j*/;
+        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] = CALL_abstract_collection___Map_____bra(variable[5])(variable[5],  variable[4] /*j*/) /*String::[]*/;
+        CALL_abstract_collection___SimpleCollection___add( variable[1] /*s*/)( 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);
       }
       break_17: while(0);
     }
-    variable2 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-    variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
-    variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int(variable2));
-    if (UNTAG_Bool(variable2)) { /*if*/
-      variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)+UNTAG_Int( TAG_Int(1)));
-      ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ = variable2;
+    variable[4] = variable[0];
+    variable[4] = ATTR_stream___BufferedIStream____buffer(variable[4]) /*BufferedIStream::_buffer*/;
+    variable[4] = CALL_abstract_collection___Collection___length(variable[4])(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*/
-      ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ =  variable1 /*i*/;
-      variable2 = ((stream___BufferedIStream___end_reached_t)CALL( self,COLOR_stream___BufferedIStream___end_reached))( self) /*BufferedIStream::end_reached*/;
-      if (UNTAG_Bool(variable2)) { /*if*/
+      variable[4] = variable[0];
+      ATTR_stream___BufferedIStream____buffer_pos(variable[4]) /*BufferedIStream::_buffer_pos*/ =  variable[3] /*i*/;
+      variable[4] = variable[0];
+      variable[4] = CALL_stream___BufferedIStream___end_reached(variable[4])(variable[4]) /*BufferedIStream::end_reached*/;
+      if (UNTAG_Bool(variable[4])) { /*if*/
         goto return_label14;
       } else { /*if*/
-        ((stream___BufferedIStream___fill_buffer_t)CALL( self,COLOR_stream___BufferedIStream___fill_buffer))( self) /*BufferedIStream::fill_buffer*/;
+        variable[4] = variable[0];
+        CALL_stream___BufferedIStream___fill_buffer(variable[4])(variable[4]) /*BufferedIStream::fill_buffer*/;
       }
     }
     continue_15: while(0);
@@ -365,185 +435,254 @@ void stream___BufferedIStream___append_line_to(val_t  self, val_t  param0) {
   return;
 }
 val_t stream___BufferedIStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 184, LOCATE_stream___BufferedIStream___eof};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 184, LOCATE_stream___BufferedIStream___eof};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/;
-  variable1 = ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/;
-  variable1 = ((array___AbstractArray___length_t)CALL(variable1,COLOR_abstract_collection___Collection___length))(variable1) /*AbstractArray::length*/;
-  variable0 = TAG_Bool(UNTAG_Int(variable0)>=UNTAG_Int(variable1));
-  variable1 = variable0;
-  if (UNTAG_Bool(variable1)) { /* and */
-    variable1 = ((stream___BufferedIStream___end_reached_t)CALL( self,COLOR_stream___BufferedIStream___end_reached))( self) /*BufferedIStream::end_reached*/;
+  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] = CALL_abstract_collection___Collection___length(variable[3])(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] = CALL_stream___BufferedIStream___end_reached(variable[3])(variable[3]) /*BufferedIStream::end_reached*/;
   }
-  variable0 = variable1;
+  variable[2] = variable[3];
+  variable[1] = variable[2];
   goto return_label18;
   return_label18: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 void stream___BufferedIStream___fill_buffer(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 192, LOCATE_stream___BufferedIStream___fill_buffer};
+  struct trace_t trace = {NULL, NULL, 192, LOCATE_stream___BufferedIStream___fill_buffer};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___BufferedIStream___eof, LOCATE_stream, 192);
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 192);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t stream___BufferedIStream___end_reached(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 195, LOCATE_stream___BufferedIStream___end_reached};
+  struct trace_t trace = {NULL, NULL, 195, LOCATE_stream___BufferedIStream___end_reached};
+  val_t *variable = NULL;
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called");
-  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_stream___BufferedIStream___eof, LOCATE_stream, 195);
+  trace.file = LOCATE_stream;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_stream, 195);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 void stream___BufferedIStream___prepare_buffer(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 198, LOCATE_stream___BufferedIStream___prepare_buffer};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 198, LOCATE_stream___BufferedIStream___prepare_buffer};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___with_capacity( variable0 /*capacity*/); /*new String*/
-  ATTR_stream___BufferedIStream____buffer( self) /*BufferedIStream::_buffer*/ = variable1;
-  ATTR_stream___BufferedIStream____buffer_pos( self) /*BufferedIStream::_buffer_pos*/ =  TAG_Int(0);
+  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;
   return;
 }
 void stream___FDStream___close(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 218, LOCATE_stream___FDStream___close};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 218, LOCATE_stream___FDStream___close};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_stream___FDStream____fd( self) /*FDStream::_fd*/;
-  ((stream___FDStream___native_close_t)CALL( self,COLOR_stream___FDStream___native_close))( self, variable0) /*FDStream::native_close*/;
+  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*/;
+  CALL_stream___FDStream___native_close(variable[2])(variable[2], variable[3]) /*FDStream::native_close*/;
+  return_label20: while(false);
   tracehead = trace.prev;
   return;
 }
 val_t stream___FDStream___native_close(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 220, LOCATE_stream___FDStream___native_close};
+  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_read_char(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 221, LOCATE_stream___FDStream___native_read_char};
+  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(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, LOCATE_stream, 222, LOCATE_stream___FDStream___native_read};
+  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_write(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, LOCATE_stream, 223, LOCATE_stream___FDStream___native_write};
+  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)));
 }
 void stream___FDStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_stream, 225, LOCATE_stream___FDStream___init};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 225, LOCATE_stream___FDStream___init};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDStream].i]) return;
-  ATTR_stream___FDStream____fd( self) /*FDStream::_fd*/ =  variable0 /*fd*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDStream].i] = 1;
+  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;
   return;
 }
-val_t stream___FDIStream___eof(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 231, LOCATE_stream___FDIStream___eof};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return ATTR_stream___FDIStream____eof( self) /*FDIStream::_eof*/;
-}
 val_t stream___FDIStream___read_char(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 233, LOCATE_stream___FDIStream___read_char};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 233, LOCATE_stream___FDIStream___read_char};
+  val_t variable[5];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable1 = ATTR_stream___FDStream____fd( self) /*FDStream::_fd*/;
-  variable1 = ((stream___FDStream___native_read_char_t)CALL( self,COLOR_stream___FDStream___native_read_char))( self, variable1) /*FDStream::native_read_char*/;
-  variable0 = variable1;
-  variable1 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  variable1 = TAG_Bool(( variable0 /*nb*/)==(variable1));
-  if (UNTAG_Bool(variable1)) { /*if*/
-    ATTR_stream___FDIStream____eof( self) /*FDIStream::_eof*/ =  TAG_Bool(true);
+  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] = CALL_stream___FDStream___native_read_char(variable[3])(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);
   }
-  variable0 =  variable0 /*nb*/;
+  variable[1] =  variable[2] /*nb*/;
   goto return_label22;
   return_label22: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
-void stream___FDIStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_stream, 240, LOCATE_stream___FDIStream___init};
-  val_t variable0;
+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;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDIStream].i]) return;
-  ((stream___FDStream___init_t)CALL( self,COLOR_stream___FDStream___init))( self,  param0, init_table /*YYY*/) /*FDStream::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDIStream].i] = 1;
+  trace.file = LOCATE_stream;
   tracehead = trace.prev;
-  return;
+  return ATTR_stream___FDIStream____eof( self) /*FDIStream::_eof*/;
 }
-val_t stream___FDOStream___is_writable(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_stream, 246, LOCATE_stream___FDOStream___is_writable};
+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;
+  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;
-  return ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/;
+  return;
 }
 void stream___FDOStream___write(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_stream, 248, LOCATE_stream___FDOStream___write};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
+  struct trace_t trace = {NULL, NULL, 248, LOCATE_stream___FDOStream___write};
+  val_t variable[8];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = ATTR_stream___FDStream____fd( self) /*FDStream::_fd*/;
-  variable3 = ((string___String___to_cstring_t)CALL( variable0 /*s*/,COLOR_string___String___to_cstring))( variable0 /*s*/) /*String::to_cstring*/;
-  variable4 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
-  variable2 = ((stream___FDStream___native_write_t)CALL( self,COLOR_stream___FDStream___native_write))( self, variable2, variable3, variable4) /*FDStream::native_write*/;
-  variable1 = variable2;
-  variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*s*/,COLOR_abstract_collection___Collection___length))( variable0 /*s*/) /*AbstractArray::length*/;
-  variable2 = TAG_Bool(UNTAG_Int( variable1 /*nb*/)<UNTAG_Int(variable2));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/ =  TAG_Bool(false);
+  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] = CALL_string___String___to_cstring( variable[1] /*s*/)( variable[1] /*s*/) /*String::to_cstring*/;
+  variable[7] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( variable[1] /*s*/) /*AbstractArray::length*/;
+  variable[4] = CALL_stream___FDStream___native_write(variable[4])(variable[4], variable[5], variable[6], variable[7]) /*FDStream::native_write*/;
+  variable[3] = variable[4];
+  variable[4] = CALL_abstract_collection___Collection___length( variable[1] /*s*/)( 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  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___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_stream, 254, LOCATE_stream___FDOStream___init};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 254, LOCATE_stream___FDOStream___init};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDOStream].i]) return;
-  ((stream___FDStream___init_t)CALL( self,COLOR_stream___FDStream___init))( self,  param0, init_table /*YYY*/) /*FDStream::init*/;
-  ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/ =  TAG_Bool(true);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDOStream].i] = 1;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDOStream].i]) return;
+  CALL_stream___FDStream___init(variable[0])(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;
   return;
 }
 void stream___FDIOStream___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_stream, 265, LOCATE_stream___FDIOStream___init};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 264, LOCATE_stream___FDIOStream___init};
+  val_t variable[4];
+  void **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDIOStream].i]) return;
-  ((stream___FDIStream___init_t)CALL( self,COLOR_stream___FDIStream___init))( self,  param0, init_table /*YYY*/) /*FDIStream::init*/;
-  ((stream___FDOStream___init_t)CALL( self,COLOR_stream___FDOStream___init))( self,  param0, init_table /*YYY*/) /*FDOStream::init*/;
-  ATTR_stream___FDStream____fd( self) /*FDStream::_fd*/ =  variable0 /*fd*/;
-  ATTR_stream___FDOStream____is_writable( self) /*FDOStream::_is_writable*/ =  TAG_Bool(true);
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_FDIOStream].i] = 1;
+  trace.file = LOCATE_stream;
+  variable[0] =  self;
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_FDIOStream].i]) return;
+  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*/;
+  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;
   return;
 }