Update c_src
[nit.git] / c_src / array._sep.c
index 057347d..23410d5 100644 (file)
@@ -1,21 +1,22 @@
 /* This C file is generated by NIT to compile module array. */
 #include "array._sep.h"
 void array___AbstractArray___enlarge(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___enlarge, 23};
+  struct trace_t trace = {NULL, LOCATE_array, 23, LOCATE_array___AbstractArray___enlarge};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "enlarge", LOCATE_array, 23);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_array, 23);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t array___AbstractArray___length(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___length, 25};
+  struct trace_t trace = {NULL, LOCATE_array, 25, LOCATE_array___AbstractArray___length};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
 }
 val_t array___AbstractArray___is_empty(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___is_empty, 28};
+  struct trace_t trace = {NULL, LOCATE_array, 28, LOCATE_array___AbstractArray___is_empty};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
@@ -26,7 +27,7 @@ val_t array___AbstractArray___is_empty(val_t  self) {
   return variable0;
 }
 void array___AbstractArray___push(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___push, 30};
+  struct trace_t trace = {NULL, LOCATE_array, 30, LOCATE_array___AbstractArray___push};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
@@ -35,13 +36,13 @@ void array___AbstractArray___push(val_t  self, val_t  param0) {
   return;
 }
 val_t array___AbstractArray___pop(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___pop, 32};
+  struct trace_t trace = {NULL, LOCATE_array, 32, LOCATE_array___AbstractArray___pop};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'not_empty' ", LOCATE_array___AbstractArray___pop, 34); nit_exit(1);}
-  variable1 = ((abstract_collection___IndexedCollection___last_t)CALL( self,COLOR_abstract_collection___IndexedCollection___last))( self) /*AbstractArray::last*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed", " 'not_empty' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___AbstractArray___pop, LOCATE_array, 34); nit_exit(1);}
+  variable1 = ((abstract_collection___IndexedCollection___last_t)CALL( self,COLOR_abstract_collection___IndexedCollection___last))( self) /*IndexedCollection::last*/;
   variable0 = variable1;
   ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = TAG_Int(UNTAG_Int(ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/)-UNTAG_Int( TAG_Int(1)));
   variable0 =  variable0 /*r*/;
@@ -51,7 +52,7 @@ val_t array___AbstractArray___pop(val_t  self) {
   return variable0;
 }
 val_t array___AbstractArray___shift(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___shift, 40};
+  struct trace_t trace = {NULL, LOCATE_array, 40, LOCATE_array___AbstractArray___shift};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -59,8 +60,8 @@ val_t array___AbstractArray___shift(val_t  self) {
     val_t variable4;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ((array___AbstractArray___is_empty_t)CALL( self,COLOR_abstract_collection___Collection___is_empty))( self) /*AbstractArray::is_empty*/;
-  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'not_empty' ", LOCATE_array___AbstractArray___shift, 42); nit_exit(1);}
-  variable1 = ((abstract_collection___IndexedCollection___first_t)CALL( self,COLOR_abstract_collection___Collection___first))( self) /*AbstractArray::first*/;
+  if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable0)))) { fprintf(stderr, "Assert%s failed", " 'not_empty' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___AbstractArray___shift, LOCATE_array, 42); nit_exit(1);}
+  variable1 = ((abstract_collection___IndexedCollection___first_t)CALL( self,COLOR_abstract_collection___Collection___first))( self) /*IndexedCollection::first*/;
   variable0 = variable1;
   variable1 =  TAG_Int(1);
   variable3 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
@@ -69,8 +70,8 @@ val_t array___AbstractArray___shift(val_t  self) {
     variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
     if (!UNTAG_Bool(variable3)) break; /* while*/
     variable3 = TAG_Int(UNTAG_Int( variable1 /*i*/)-UNTAG_Int( TAG_Int(1)));
-    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
-    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*Map::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*Map::[]=*/;
     variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*i*/;
     continue_4: while(0);
   }
@@ -84,7 +85,7 @@ val_t array___AbstractArray___shift(val_t  self) {
   return variable0;
 }
 void array___AbstractArray___unshift(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___unshift, 54};
+  struct trace_t trace = {NULL, LOCATE_array, 54, LOCATE_array___AbstractArray___unshift};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -98,18 +99,18 @@ void array___AbstractArray___unshift(val_t  self, val_t  param0) {
     variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable2)) break; /* while*/
     variable2 = TAG_Int(UNTAG_Int( variable1 /*i*/)+UNTAG_Int( TAG_Int(1)));
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
-    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2, variable3) /*AbstractArray::[]=*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*Map::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable2, variable3) /*Map::[]=*/;
     variable1 = TAG_Int(UNTAG_Int(variable1)-UNTAG_Int( TAG_Int(1))) /*i*/;
     continue_6: while(0);
   }
   break_6: while(0);
-  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  TAG_Int(0),  variable0 /*item*/) /*AbstractArray::[]=*/;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  TAG_Int(0),  variable0 /*item*/) /*Map::[]=*/;
   tracehead = trace.prev;
   return;
 }
 void array___AbstractArray___insert(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___insert, 64};
+  struct trace_t trace = {NULL, LOCATE_array, 64, LOCATE_array___AbstractArray___insert};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -124,30 +125,30 @@ void array___AbstractArray___insert(val_t  self, val_t  param0, val_t  param1) {
   variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( variable1 /*pos*/));
   variable3 = TAG_Int(UNTAG_Int( variable1 /*pos*/)+UNTAG_Int( TAG_Int(1)));
   ((array___AbstractArray___copy_to_t)CALL( self,COLOR_array___AbstractArray___copy_to))( self,  variable1 /*pos*/, variable2,  self, variable3) /*AbstractArray::copy_to*/;
-  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  variable1 /*pos*/,  variable0 /*item*/) /*AbstractArray::[]=*/;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self,  variable1 /*pos*/,  variable0 /*item*/) /*Map::[]=*/;
   tracehead = trace.prev;
   return;
 }
 void array___AbstractArray___add(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___add, 71};
+  struct trace_t trace = {NULL, LOCATE_array, 71, LOCATE_array___AbstractArray___add};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
-  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable1,  variable0 /*item*/) /*AbstractArray::[]=*/;
+  ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable1,  variable0 /*item*/) /*Map::[]=*/;
   tracehead = trace.prev;
   return;
 }
 void array___AbstractArray___clear(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___clear, 73};
+  struct trace_t trace = {NULL, LOCATE_array, 73, LOCATE_array___AbstractArray___clear};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  TAG_Int(0);
   tracehead = trace.prev;
   return;
 }
 val_t array___AbstractArray___has(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___has, 75};
+  struct trace_t trace = {NULL, LOCATE_array, 75, LOCATE_array___AbstractArray___has};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -160,7 +161,7 @@ val_t array___AbstractArray___has(val_t  self, val_t  param0) {
   while (true) { /*while*/
     variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
     if (!UNTAG_Bool(variable3)) break; /* while*/
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*Map::[]*/;
     variable3 = TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable3)) { /*if*/
       variable1 =  TAG_Bool(true);
@@ -177,7 +178,7 @@ val_t array___AbstractArray___has(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___has_only(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___has_only, 86};
+  struct trace_t trace = {NULL, LOCATE_array, 86, LOCATE_array___AbstractArray___has_only};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -190,7 +191,7 @@ val_t array___AbstractArray___has_only(val_t  self, val_t  param0) {
   while (true) { /*while*/
     variable3 = TAG_Bool(UNTAG_Int( variable1 /*i*/)<UNTAG_Int( variable2 /*l*/));
     if (!UNTAG_Bool(variable3)) break; /* while*/
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*AbstractArray::[]*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable1 /*i*/) /*Map::[]*/;
     variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable3)) { /*if*/
       variable1 =  TAG_Bool(false);
@@ -207,7 +208,7 @@ val_t array___AbstractArray___has_only(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___has_key(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___has_key, 97};
+  struct trace_t trace = {NULL, LOCATE_array, 97, LOCATE_array___AbstractArray___has_key};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -226,7 +227,7 @@ val_t array___AbstractArray___has_key(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___count(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___count, 99};
+  struct trace_t trace = {NULL, LOCATE_array, 99, LOCATE_array___AbstractArray___count};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -241,7 +242,7 @@ val_t array___AbstractArray___count(val_t  self, val_t  param0) {
   while (true) { /*while*/
     variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*l*/));
     if (!UNTAG_Bool(variable4)) break; /* while*/
-    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*Map::[]*/;
     variable4 = TAG_Bool((variable4 ==  variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*item*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable4)) { /*if*/
       variable1 = TAG_Int(UNTAG_Int(variable1)+UNTAG_Int( TAG_Int(1))) /*res*/;
@@ -257,7 +258,7 @@ val_t array___AbstractArray___count(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___index_of(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___index_of, 111};
+  struct trace_t trace = {NULL, LOCATE_array, 111, LOCATE_array___AbstractArray___index_of};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -269,7 +270,7 @@ val_t array___AbstractArray___index_of(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___last_index_of(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___last_index_of, 113};
+  struct trace_t trace = {NULL, LOCATE_array, 113, LOCATE_array___AbstractArray___last_index_of};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -283,7 +284,7 @@ val_t array___AbstractArray___last_index_of(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___index_of_from, 115};
+  struct trace_t trace = {NULL, LOCATE_array, 115, LOCATE_array___AbstractArray___index_of_from};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -298,7 +299,7 @@ val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  p
   while (true) { /*while*/
     variable4 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable3 /*len*/));
     if (!UNTAG_Bool(variable4)) break; /* while*/
-    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*Map::[]*/;
     variable4 = TAG_Bool((variable4 ==  variable0 /*item*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  variable0 /*item*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable4)) { /*if*/
       variable2 =  variable2 /*i*/;
@@ -316,7 +317,7 @@ val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  p
   return variable2;
 }
 val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___last_index_of_from, 128};
+  struct trace_t trace = {NULL, LOCATE_array, 128, LOCATE_array___AbstractArray___last_index_of_from};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -328,7 +329,7 @@ val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val
   while (true) { /*while*/
     variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)>=UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable3)) break; /* while*/
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*Map::[]*/;
     variable3 = TAG_Bool((variable3 ==  variable0 /*item*/) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  variable0 /*item*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable3)) { /*if*/
       variable2 =  variable2 /*i*/;
@@ -347,7 +348,7 @@ val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val
   return variable2;
 }
 val_t array___AbstractArray___reversed(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___reversed, 141};
+  struct trace_t trace = {NULL, LOCATE_array, 141, LOCATE_array___AbstractArray___reversed};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -360,8 +361,8 @@ val_t array___AbstractArray___reversed(val_t  self) {
     variable2 = TAG_Bool(UNTAG_Int( variable0 /*cmp*/)>UNTAG_Int( TAG_Int(0)));
     if (!UNTAG_Bool(variable2)) break; /* while*/
     variable0 = TAG_Int(UNTAG_Int(variable0)-UNTAG_Int( TAG_Int(1))) /*cmp*/;
-    variable2 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*cmp*/) /*AbstractArray::[]*/;
-    ((array___AbstractArray___add_t)CALL( variable1 /*result*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*result*/, variable2) /*Array::add*/;
+    variable2 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*cmp*/) /*Map::[]*/;
+    ((array___AbstractArray___add_t)CALL( variable1 /*result*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*result*/, variable2) /*AbstractArray::add*/;
     continue_24: while(0);
   }
   break_24: while(0);
@@ -372,7 +373,7 @@ val_t array___AbstractArray___reversed(val_t  self) {
   return variable0;
 }
 void array___AbstractArray___remove(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___remove, 152};
+  struct trace_t trace = {NULL, LOCATE_array, 152, LOCATE_array___AbstractArray___remove};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -383,7 +384,7 @@ void array___AbstractArray___remove(val_t  self, val_t  param0) {
   return;
 }
 void array___AbstractArray___remove_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___remove_all, 154};
+  struct trace_t trace = {NULL, LOCATE_array, 154, LOCATE_array___AbstractArray___remove_all};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -404,7 +405,7 @@ void array___AbstractArray___remove_all(val_t  self, val_t  param0) {
   return;
 }
 void array___AbstractArray___remove_at(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___remove_at, 163};
+  struct trace_t trace = {NULL, LOCATE_array, 163, LOCATE_array___AbstractArray___remove_at};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -427,8 +428,8 @@ void array___AbstractArray___remove_at(val_t  self, val_t  param0) {
       variable3 = TAG_Bool(UNTAG_Int( variable2 /*j*/)<UNTAG_Int( variable1 /*l*/));
       if (!UNTAG_Bool(variable3)) break; /* while*/
       variable3 = TAG_Int(UNTAG_Int( variable2 /*j*/)-UNTAG_Int( TAG_Int(1)));
-      variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*j*/) /*AbstractArray::[]*/;
-      ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*AbstractArray::[]=*/;
+      variable4 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*j*/) /*Map::[]*/;
+      ((abstract_collection___Map_____braeq_t)CALL( self,COLOR_abstract_collection___Map_____braeq))( self, variable3, variable4) /*Map::[]=*/;
       variable2 = TAG_Int(UNTAG_Int(variable2)+UNTAG_Int( TAG_Int(1))) /*j*/;
       continue_29: while(0);
     }
@@ -440,7 +441,7 @@ void array___AbstractArray___remove_at(val_t  self, val_t  param0) {
   return;
 }
 void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___copy_to, 176};
+  struct trace_t trace = {NULL, LOCATE_array, 176, LOCATE_array___AbstractArray___copy_to};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -460,8 +461,8 @@ void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1,
     variable4 = TAG_Int(UNTAG_Int(variable4)-UNTAG_Int( TAG_Int(1))) /*i*/;
     variable5 = TAG_Int(UNTAG_Int( variable3 /*new_start*/)+UNTAG_Int( variable4 /*i*/));
     variable6 = TAG_Int(UNTAG_Int( variable0 /*start*/)+UNTAG_Int( variable4 /*i*/));
-    variable6 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable6) /*AbstractArray::[]*/;
-    ((abstract_collection___Map_____braeq_t)CALL( variable2 /*dest*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*dest*/, variable5, variable6) /*AbstractArray::[]=*/;
+    variable6 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self, variable6) /*Map::[]*/;
+    ((abstract_collection___Map_____braeq_t)CALL( variable2 /*dest*/,COLOR_abstract_collection___Map_____braeq))( variable2 /*dest*/, variable5, variable6) /*Map::[]=*/;
     continue_31: while(0);
   }
   break_31: while(0);
@@ -469,7 +470,7 @@ void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1,
   return;
 }
 void array___AbstractArray___output(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___output, 186};
+  struct trace_t trace = {NULL, LOCATE_array, 186, LOCATE_array___AbstractArray___output};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -481,7 +482,7 @@ void array___AbstractArray___output(val_t  self) {
   while (true) { /*while*/
     variable2 = TAG_Bool(UNTAG_Int( variable0 /*i*/)<UNTAG_Int( variable1 /*l*/));
     if (!UNTAG_Bool(variable2)) break; /* while*/
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*i*/) /*AbstractArray::[]*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable0 /*i*/) /*Map::[]*/;
     variable2 = variable3;
     variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable2 /*e*/ ==  NIT_NULL /*null*/) || (( variable2 /*e*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*e*/,COLOR_kernel___Object_____eqeq))( variable2 /*e*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
     if (UNTAG_Bool(variable3)) { /*if*/
@@ -495,7 +496,7 @@ void array___AbstractArray___output(val_t  self) {
   return;
 }
 val_t array___AbstractArray___iterator(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray___iterator, 197};
+  struct trace_t trace = {NULL, LOCATE_array, 197, LOCATE_array___AbstractArray___iterator};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = NEW_array___ArrayIterator___init( self); /*new ArrayIterator[E]*/
@@ -505,7 +506,7 @@ val_t array___AbstractArray___iterator(val_t  self) {
   return variable0;
 }
 val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___AbstractArray_____eqeq, 199};
+  struct trace_t trace = {NULL, LOCATE_array, 199, LOCATE_array___AbstractArray_____eqeq};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -523,7 +524,7 @@ val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0) {
     goto return_label35;
   }
   variable1 = TAG_Bool(( variable0 /*o*/==NIT_NULL) || VAL_ISA( variable0 /*o*/, COLOR_AbstractArray, ID_AbstractArray)) /*cast AbstractArray[E]*/;
-  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_array___AbstractArray_____eqeq, 203); nit_exit(1);}
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___AbstractArray_____eqeq, LOCATE_array, 203); nit_exit(1);}
   variable2 = ((array___AbstractArray___length_t)CALL( self,COLOR_abstract_collection___Collection___length))( self) /*AbstractArray::length*/;
   variable1 = variable2;
   variable2 = ((array___AbstractArray___length_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Collection___length))( variable0 /*o*/) /*AbstractArray::length*/;
@@ -536,8 +537,8 @@ val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0) {
   while (true) { /*while*/
     variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*l*/));
     if (!UNTAG_Bool(variable3)) break; /* while*/
-    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*AbstractArray::[]*/;
-    variable4 = ((abstract_collection___Map_____bra_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Map_____bra))( variable0 /*o*/,  variable2 /*i*/) /*AbstractArray::[]*/;
+    variable3 = ((abstract_collection___Map_____bra_t)CALL( self,COLOR_abstract_collection___Map_____bra))( self,  variable2 /*i*/) /*Map::[]*/;
+    variable4 = ((abstract_collection___Map_____bra_t)CALL( variable0 /*o*/,COLOR_abstract_collection___Map_____bra))( variable0 /*o*/,  variable2 /*i*/) /*Map::[]*/;
     variable3 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable3 == variable4) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3,variable4)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3, variable4) /*Object::==*/)))))));
     if (UNTAG_Bool(variable3)) { /*if*/
       variable1 =  TAG_Bool(false);
@@ -554,7 +555,7 @@ val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___Array_____bra(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___Array_____bra, 227};
+  struct trace_t trace = {NULL, LOCATE_array, 227, LOCATE_array___Array_____bra};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -563,11 +564,11 @@ val_t array___Array_____bra(val_t  self, val_t  param0) {
   variable1 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
   variable2 = variable1;
   if (UNTAG_Bool(variable2)) { /* and */
-    variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    variable2 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
     variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable2));
   }
   variable1 = variable2;
-  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
   variable1 = ATTR_array___Array____items( self) /*Array::_items*/;
   variable1 = UNBOX_NativeArray(variable1)[UNTAG_Int( variable0 /*index*/)];
   goto return_label37;
@@ -576,7 +577,7 @@ val_t array___Array_____bra(val_t  self, val_t  param0) {
   return variable1;
 }
 void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___Array_____braeq, 233};
+  struct trace_t trace = {NULL, LOCATE_array, 233, LOCATE_array___Array_____braeq};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -587,23 +588,23 @@ void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1) {
   variable2 = TAG_Bool(UNTAG_Int( variable0 /*index*/)>=UNTAG_Int( TAG_Int(0)));
   variable3 = variable2;
   if (UNTAG_Bool(variable3)) { /* and */
-    variable3 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    variable3 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
     variable3 = TAG_Int(UNTAG_Int(variable3)+UNTAG_Int( TAG_Int(1)));
     variable3 = TAG_Bool(UNTAG_Int( variable0 /*index*/)<UNTAG_Int(variable3));
   }
   variable2 = variable3;
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____braeq, 235); nit_exit(1);}
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____braeq, LOCATE_array, 235); nit_exit(1);}
   variable2 = ATTR_array___Array____capacity( self) /*Array::_capacity*/;
   variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
   if (UNTAG_Bool(variable2)) { /*if*/
     variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
     ((array___Array___enlarge_t)CALL( self,COLOR_array___AbstractArray___enlarge))( self, variable2) /*Array::enlarge*/;
   }
-  variable2 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+  variable2 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
   variable2 = TAG_Bool(UNTAG_Int(variable2)<=UNTAG_Int( variable0 /*index*/));
   if (UNTAG_Bool(variable2)) { /*if*/
     variable2 = TAG_Int(UNTAG_Int( variable0 /*index*/)+UNTAG_Int( TAG_Int(1)));
-    ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable2;
+    ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable2;
   }
   variable2 = ATTR_array___Array____items( self) /*Array::_items*/;
   UNBOX_NativeArray(variable2)[UNTAG_Int( variable0 /*index*/)]= variable1 /*item*/;
@@ -611,7 +612,7 @@ void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1) {
   return;
 }
 void array___Array___enlarge(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___enlarge, 245};
+  struct trace_t trace = {NULL, LOCATE_array, 245, LOCATE_array___Array___enlarge};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -640,7 +641,7 @@ void array___Array___enlarge(val_t  self, val_t  param0) {
   variable3 = TAG_Bool(UNTAG_Int(variable3)>UNTAG_Int( TAG_Int(0)));
   if (UNTAG_Bool(variable3)) { /*if*/
     variable3 = ATTR_array___Array____items( self) /*Array::_items*/;
-    variable4 = ATTR_array___AbstractArray____length( self) /*Array::_length*/;
+    variable4 = ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/;
     (void)memcpy(UNBOX_NativeArray( variable2 /*a*/), UNBOX_NativeArray(variable3), UNTAG_Int(variable4)*sizeof(val_t));
   }
   ATTR_array___Array____items( self) /*Array::_items*/ =  variable2 /*a*/;
@@ -650,53 +651,53 @@ void array___Array___enlarge(val_t  self, val_t  param0) {
   return;
 }
 void array___Array___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___init, 256};
+  struct trace_t trace = {NULL, LOCATE_array, 256, LOCATE_array___Array___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
   ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  TAG_Int(0);
-  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  TAG_Int(0);
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  TAG_Int(0);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void array___Array___with(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___with, 263};
+  struct trace_t trace = {NULL, LOCATE_array, 263, LOCATE_array___Array___with};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   /* check if p<Array[E] with p:E */
-  if (( param0!=NIT_NULL) && !VAL_ISA( param0, COLOR_Array, ID_Array)) { fprintf(stderr, "Cast failled (%s: %d)\n", LOCATE_array___Array___init, 264); nit_exit(1); } /*cast Array[E]*/;
+  if (( param0!=NIT_NULL) && !VAL_ISA( param0, COLOR_Array, ID_Array)) { fprintf(stderr, "Cast failled"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array___init, LOCATE_array, 264); nit_exit(1); } /*cast Array[E]*/;
   variable0 =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
   variable1 = ATTR_array___Array____items( variable0 /*objects*/) /*Array::_items*/;
   ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
   variable1 = ATTR_array___Array____capacity( variable0 /*objects*/) /*Array::_capacity*/;
   ATTR_array___Array____capacity( self) /*Array::_capacity*/ = variable1;
-  variable1 = ((array___AbstractArray___length_t)CALL( variable0 /*objects*/,COLOR_abstract_collection___Collection___length))( variable0 /*objects*/) /*Array::length*/;
-  ATTR_array___AbstractArray____length( self) /*Array::_length*/ = variable1;
+  variable1 = ((array___AbstractArray___length_t)CALL( variable0 /*objects*/,COLOR_abstract_collection___Collection___length))( variable0 /*objects*/) /*AbstractArray::length*/;
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ = variable1;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void array___Array___with_capacity(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___with_capacity, 271};
+  struct trace_t trace = {NULL, LOCATE_array, 271, LOCATE_array___Array___with_capacity};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
   variable1 = TAG_Bool(UNTAG_Int( variable0 /*cap*/)>=UNTAG_Int( TAG_Int(0)));
-  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'positive' ", LOCATE_array___Array___with_capacity, 274); nit_exit(1);}
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", " 'positive' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array___with_capacity, LOCATE_array, 274); nit_exit(1);}
   variable1 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable0 /*cap*/) * sizeof(val_t))));
   ATTR_array___Array____items( self) /*Array::_items*/ = variable1;
   ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable0 /*cap*/;
-  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  TAG_Int(0);
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  TAG_Int(0);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___filled_with, 280};
+  struct trace_t trace = {NULL, LOCATE_array, 280, LOCATE_array___Array___filled_with};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -706,11 +707,11 @@ void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int*
   variable1 =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
   variable2 = TAG_Bool(UNTAG_Int( variable1 /*count*/)>=UNTAG_Int( TAG_Int(0)));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'positive' ", LOCATE_array___Array___filled_with, 283); nit_exit(1);}
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", " 'positive' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array___filled_with, LOCATE_array, 283); nit_exit(1);}
   variable2 = BOX_NativeArray((val_t*)malloc((UNTAG_Int( variable1 /*count*/) * sizeof(val_t))));
   ATTR_array___Array____items( self) /*Array::_items*/ = variable2;
   ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable1 /*count*/;
-  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  variable1 /*count*/;
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  variable1 /*count*/;
   variable2 =  TAG_Int(0);
   while (true) { /*while*/
     variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int( variable1 /*count*/));
@@ -725,7 +726,7 @@ void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int*
   return;
 }
 void array___Array___with_native(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___Array___with_native, 294};
+  struct trace_t trace = {NULL, LOCATE_array, 294, LOCATE_array___Array___with_native};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -734,29 +735,29 @@ void array___Array___with_native(val_t  self, val_t  param0, val_t  param1, int*
   variable1 =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i]) return;
   variable2 = TAG_Bool(UNTAG_Int( variable1 /*size*/)>=UNTAG_Int( TAG_Int(0)));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'positive' ", LOCATE_array___Array___with_native, 297); nit_exit(1);}
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", " 'positive' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array___with_native, LOCATE_array, 297); nit_exit(1);}
   ATTR_array___Array____items( self) /*Array::_items*/ =  variable0 /*nat*/;
   ATTR_array___Array____capacity( self) /*Array::_capacity*/ =  variable1 /*size*/;
-  ATTR_array___AbstractArray____length( self) /*Array::_length*/ =  variable1 /*size*/;
+  ATTR_array___AbstractArray____length( self) /*AbstractArray::_length*/ =  variable1 /*size*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Array].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t array___ArrayIterator___item(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___item, 313};
+  struct trace_t trace = {NULL, LOCATE_array, 313, LOCATE_array___ArrayIterator___item};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
   variable1 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
-  variable0 = ((abstract_collection___Map_____bra_t)CALL(variable0,COLOR_abstract_collection___Map_____bra))(variable0, variable1) /*AbstractArray::[]*/;
+  variable0 = ((abstract_collection___Map_____bra_t)CALL(variable0,COLOR_abstract_collection___Map_____bra))(variable0, variable1) /*Map::[]*/;
   goto return_label47;
   return_label47: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 void array___ArrayIterator___item__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___item__eq, 315};
+  struct trace_t trace = {NULL, LOCATE_array, 315, LOCATE_array___ArrayIterator___item__eq};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -764,12 +765,12 @@ void array___ArrayIterator___item__eq(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable1 = ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/;
   variable2 = ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
-  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*e*/) /*AbstractArray::[]=*/;
+  ((abstract_collection___Map_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1, variable2,  variable0 /*e*/) /*Map::[]=*/;
   tracehead = trace.prev;
   return;
 }
 val_t array___ArrayIterator___is_ok(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___is_ok, 317};
+  struct trace_t trace = {NULL, LOCATE_array, 317, LOCATE_array___ArrayIterator___is_ok};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -783,21 +784,21 @@ val_t array___ArrayIterator___is_ok(val_t  self) {
   return variable0;
 }
 void array___ArrayIterator___next(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___next, 319};
+  struct trace_t trace = {NULL, LOCATE_array, 319, LOCATE_array___ArrayIterator___next};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ = TAG_Int(UNTAG_Int(ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/)+UNTAG_Int( TAG_Int(1)));
   tracehead = trace.prev;
   return;
 }
 void array___ArrayIterator___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___init, 321};
+  struct trace_t trace = {NULL, LOCATE_array, 321, LOCATE_array___ArrayIterator___init};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i]) return;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*a*/ ==  NIT_NULL /*null*/) || (( variable0 /*a*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable0 /*a*/,COLOR_kernel___Object_____eqeq))( variable0 /*a*/,  NIT_NULL /*null*/) /*AbstractArray::==*/)))));
-  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'not_nil' ", LOCATE_array___ArrayIterator___init, 323); nit_exit(1);}
+  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*a*/ ==  NIT_NULL /*null*/) || (( variable0 /*a*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*a*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*a*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*a*/,COLOR_kernel___Object_____eqeq))( variable0 /*a*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", " 'not_nil' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___ArrayIterator___init, LOCATE_array, 323); nit_exit(1);}
   ATTR_array___ArrayIterator____array( self) /*ArrayIterator::_array*/ =  variable0 /*a*/;
   ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/ =  TAG_Int(0);
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayIterator].i] = 1;
@@ -805,85 +806,85 @@ void array___ArrayIterator___init(val_t  self, val_t  param0, int* init_table) {
   return;
 }
 val_t array___ArrayIterator___index(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayIterator___index, 328};
+  struct trace_t trace = {NULL, LOCATE_array, 328, LOCATE_array___ArrayIterator___index};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_array___ArrayIterator____index( self) /*ArrayIterator::_index*/;
 }
 val_t array___ArraySet___has(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___has, 340};
+  struct trace_t trace = {NULL, LOCATE_array, 340, LOCATE_array___ArraySet___has};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*Array::has*/;
+  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*AbstractArray::has*/;
   goto return_label52;
   return_label52: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 void array___ArraySet___add(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___add, 342};
+  struct trace_t trace = {NULL, LOCATE_array, 342, LOCATE_array___ArraySet___add};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*Array::has*/;
+  variable1 = ((array___AbstractArray___has_t)CALL(variable1,COLOR_abstract_collection___Collection___has))(variable1,  variable0 /*e*/) /*AbstractArray::has*/;
   if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { /*if*/
     variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-    ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*e*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*e*/) /*AbstractArray::add*/;
   }
   tracehead = trace.prev;
   return;
 }
 val_t array___ArraySet___is_empty(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___is_empty, 344};
+  struct trace_t trace = {NULL, LOCATE_array, 344, LOCATE_array___ArraySet___is_empty};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*AbstractArray::is_empty*/;
   goto return_label54;
   return_label54: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t array___ArraySet___length(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___length, 346};
+  struct trace_t trace = {NULL, LOCATE_array, 346, LOCATE_array___ArraySet___length};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*AbstractArray::length*/;
   goto return_label55;
   return_label55: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t array___ArraySet___first(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___first, 348};
+  struct trace_t trace = {NULL, LOCATE_array, 348, LOCATE_array___ArraySet___first};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*AbstractArray::length*/;
   variable0 = TAG_Bool(UNTAG_Int(variable0)>UNTAG_Int( TAG_Int(0)));
-  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_array___ArraySet___first, 350); nit_exit(1);}
+  if (!UNTAG_Bool(variable0)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___ArraySet___first, LOCATE_array, 350); nit_exit(1);}
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
+  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*IndexedCollection::first*/;
   goto return_label56;
   return_label56: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 void array___ArraySet___remove(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___remove, 354};
+  struct trace_t trace = {NULL, LOCATE_array, 354, LOCATE_array___ArraySet___remove};
   val_t variable0;
   val_t variable1;
   val_t variable2;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable2 = ((array___AbstractArray___index_of_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___index_of))(variable2,  variable0 /*item*/) /*Array::index_of*/;
+  variable2 = ((array___AbstractArray___index_of_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___index_of))(variable2,  variable0 /*item*/) /*AbstractArray::index_of*/;
   variable1 = variable2;
   variable2 = TAG_Bool(UNTAG_Int( variable1 /*i*/)>=UNTAG_Int( TAG_Int(0)));
   if (UNTAG_Bool(variable2)) { /*if*/
@@ -893,7 +894,7 @@ void array___ArraySet___remove(val_t  self, val_t  param0) {
   return;
 }
 void array___ArraySet___remove_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___remove_all, 360};
+  struct trace_t trace = {NULL, LOCATE_array, 360, LOCATE_array___ArraySet___remove_all};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
@@ -902,21 +903,21 @@ void array___ArraySet___remove_all(val_t  self, val_t  param0) {
   return;
 }
 void array___ArraySet___clear(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___clear, 362};
+  struct trace_t trace = {NULL, LOCATE_array, 362, LOCATE_array___ArraySet___clear};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
+  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*AbstractArray::clear*/;
   tracehead = trace.prev;
   return;
 }
 val_t array___ArraySet___iterator(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___iterator, 364};
+  struct trace_t trace = {NULL, LOCATE_array, 364, LOCATE_array___ArraySet___iterator};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
+  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*AbstractArray::iterator*/;
   variable1 = NEW_array___ArraySetIterator___init(variable0); /*new ArraySetIterator[E]*/
   variable0 = variable1;
   goto return_label60;
@@ -925,7 +926,7 @@ val_t array___ArraySet___iterator(val_t  self) {
   return variable0;
 }
 void array___ArraySet___enlarge(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___enlarge, 366};
+  struct trace_t trace = {NULL, LOCATE_array, 366, LOCATE_array___ArraySet___enlarge};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -936,7 +937,7 @@ void array___ArraySet___enlarge(val_t  self, val_t  param0) {
   return;
 }
 void array___ArraySet___remove_at(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___remove_at, 369};
+  struct trace_t trace = {NULL, LOCATE_array, 369, LOCATE_array___ArraySet___remove_at};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -944,15 +945,15 @@ void array___ArraySet___remove_at(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
   variable2 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
+  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*IndexedCollection::last*/;
   ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1,  variable0 /*i*/, variable2) /*Array::[]=*/;
   variable1 = ATTR_array___ArraySet____array( self) /*ArraySet::_array*/;
-  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
+  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*AbstractArray::pop*/;
   tracehead = trace.prev;
   return;
 }
 void array___ArraySet___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___init, 375};
+  struct trace_t trace = {NULL, LOCATE_array, 375, LOCATE_array___ArraySet___init};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArraySet].i]) return;
@@ -963,7 +964,7 @@ void array___ArraySet___init(val_t  self, int* init_table) {
   return;
 }
 void array___ArraySet___with_capacity(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySet___with_capacity, 378};
+  struct trace_t trace = {NULL, LOCATE_array, 378, LOCATE_array___ArraySet___with_capacity};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -976,7 +977,7 @@ void array___ArraySet___with_capacity(val_t  self, val_t  param0, int* init_tabl
   return;
 }
 val_t array___ArraySetIterator___is_ok(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySetIterator___is_ok, 386};
+  struct trace_t trace = {NULL, LOCATE_array, 386, LOCATE_array___ArraySetIterator___is_ok};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
@@ -987,7 +988,7 @@ val_t array___ArraySetIterator___is_ok(val_t  self) {
   return variable0;
 }
 void array___ArraySetIterator___next(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySetIterator___next, 388};
+  struct trace_t trace = {NULL, LOCATE_array, 388, LOCATE_array___ArraySetIterator___next};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
@@ -996,7 +997,7 @@ void array___ArraySetIterator___next(val_t  self) {
   return;
 }
 val_t array___ArraySetIterator___item(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySetIterator___item, 390};
+  struct trace_t trace = {NULL, LOCATE_array, 390, LOCATE_array___ArraySetIterator___item};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArraySetIterator____iter( self) /*ArraySetIterator::_iter*/;
@@ -1007,7 +1008,7 @@ val_t array___ArraySetIterator___item(val_t  self) {
   return variable0;
 }
 void array___ArraySetIterator___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___ArraySetIterator___init, 392};
+  struct trace_t trace = {NULL, LOCATE_array, 392, LOCATE_array___ArraySetIterator___init};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
@@ -1018,7 +1019,7 @@ void array___ArraySetIterator___init(val_t  self, val_t  param0, int* init_table
   return;
 }
 val_t array___ArrayMap_____bra(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap_____bra, 402};
+  struct trace_t trace = {NULL, LOCATE_array, 402, LOCATE_array___ArrayMap_____bra};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1037,11 +1038,11 @@ val_t array___ArrayMap_____bra(val_t  self, val_t  param0) {
     variable5 = variable4;
     if (UNTAG_Bool(variable5)) { /* and */
       variable5 = variable2;
-      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*AbstractArray::_length*/;
       variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
     }
     variable4 = variable5;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable4 = variable2;
     variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
     variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
@@ -1060,7 +1061,7 @@ val_t array___ArrayMap_____bra(val_t  self, val_t  param0) {
   return variable1;
 }
 void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap_____braeq, 413};
+  struct trace_t trace = {NULL, LOCATE_array, 413, LOCATE_array___ArrayMap_____braeq};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1081,11 +1082,11 @@ void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1) {
     variable6 = variable5;
     if (UNTAG_Bool(variable6)) { /* and */
       variable6 = variable3;
-      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*AbstractArray::_length*/;
       variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
     }
     variable5 = variable6;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable5 = variable3;
     variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
     variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
@@ -1095,14 +1096,14 @@ void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1) {
     ((abstract_collection___Couple___second__eq_t)CALL(variable3,COLOR_abstract_collection___Couple___second__eq))(variable3,  variable1 /*item*/) /*Couple::second=*/;
   } else { /*if*/
     variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-    variable4 = NEW_abstract_collection___Couple___init( variable0 /*key*/,  variable1 /*item*/); /*new Couple[K, E]*/
-    ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*Array::push*/;
+    variable4 = NEW_abstract_collection___Couple___init( variable0 /*key*/,  variable1 /*item*/); /*new Couple[F, S]*/
+    ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*AbstractArray::push*/;
   }
   tracehead = trace.prev;
   return;
 }
 val_t array___ArrayMap___has_key(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___has_key, 424};
+  struct trace_t trace = {NULL, LOCATE_array, 424, LOCATE_array___ArrayMap___has_key};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -1115,7 +1116,7 @@ val_t array___ArrayMap___has_key(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___ArrayMap___has(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___has, 427};
+  struct trace_t trace = {NULL, LOCATE_array, 427, LOCATE_array___ArrayMap___has};
   val_t variable0;
   val_t variable1;
     val_t variable2;
@@ -1123,7 +1124,7 @@ val_t array___ArrayMap___has(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*AbstractArray::iterator*/;
   while (true) { /*for*/
     variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable2)) break; /*for*/
@@ -1145,7 +1146,7 @@ val_t array___ArrayMap___has(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___ArrayMap___has_only(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___has_only, 434};
+  struct trace_t trace = {NULL, LOCATE_array, 434, LOCATE_array___ArrayMap___has_only};
   val_t variable0;
   val_t variable1;
     val_t variable2;
@@ -1153,7 +1154,7 @@ val_t array___ArrayMap___has_only(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*AbstractArray::iterator*/;
   while (true) { /*for*/
     variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable2)) break; /*for*/
@@ -1175,22 +1176,22 @@ val_t array___ArrayMap___has_only(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___ArrayMap___length(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___length, 441};
+  struct trace_t trace = {NULL, LOCATE_array, 441, LOCATE_array___ArrayMap___length};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
+  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*AbstractArray::length*/;
   goto return_label78;
   return_label78: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t array___ArrayMap___first(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___first, 444};
+  struct trace_t trace = {NULL, LOCATE_array, 444, LOCATE_array___ArrayMap___first};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*Array::first*/;
+  variable0 = ((abstract_collection___IndexedCollection___first_t)CALL(variable0,COLOR_abstract_collection___Collection___first))(variable0) /*IndexedCollection::first*/;
   variable0 = ((abstract_collection___Couple___first_t)CALL(variable0,COLOR_abstract_collection___Couple___first))(variable0) /*Couple::first*/;
   goto return_label79;
   return_label79: while(false);
@@ -1198,7 +1199,7 @@ val_t array___ArrayMap___first(val_t  self) {
   return variable0;
 }
 val_t array___ArrayMap___count(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___count, 446};
+  struct trace_t trace = {NULL, LOCATE_array, 446, LOCATE_array___ArrayMap___count};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1208,7 +1209,7 @@ val_t array___ArrayMap___count(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable1 =  TAG_Int(0);
   variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
+  variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*AbstractArray::iterator*/;
   while (true) { /*for*/
     variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
     if (!UNTAG_Bool(variable3)) break; /*for*/
@@ -1229,12 +1230,12 @@ val_t array___ArrayMap___count(val_t  self, val_t  param0) {
   return variable1;
 }
 val_t array___ArrayMap___iterator(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___iterator, 454};
+  struct trace_t trace = {NULL, LOCATE_array, 454, LOCATE_array___ArrayMap___iterator};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*Array::iterator*/;
+  variable0 = ((array___AbstractArray___iterator_t)CALL(variable0,COLOR_abstract_collection___Collection___iterator))(variable0) /*AbstractArray::iterator*/;
   variable1 = NEW_abstract_collection___CoupleMapIterator___init(variable0); /*new CoupleMapIterator[K, E]*/
   variable0 = variable1;
   goto return_label82;
@@ -1243,18 +1244,18 @@ val_t array___ArrayMap___iterator(val_t  self) {
   return variable0;
 }
 val_t array___ArrayMap___is_empty(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___is_empty, 456};
+  struct trace_t trace = {NULL, LOCATE_array, 456, LOCATE_array___ArrayMap___is_empty};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*Array::is_empty*/;
+  variable0 = ((array___AbstractArray___is_empty_t)CALL(variable0,COLOR_abstract_collection___Collection___is_empty))(variable0) /*AbstractArray::is_empty*/;
   goto return_label83;
   return_label83: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 void array___ArrayMap___remove(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___remove, 458};
+  struct trace_t trace = {NULL, LOCATE_array, 458, LOCATE_array___ArrayMap___remove};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1264,7 +1265,7 @@ void array___ArrayMap___remove(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
   variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
   variable1 = variable2;
   while (true) { /*while*/
@@ -1276,11 +1277,11 @@ void array___ArrayMap___remove(val_t  self, val_t  param0) {
     variable5 = variable4;
     if (UNTAG_Bool(variable5)) { /* and */
       variable5 = variable2;
-      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*AbstractArray::_length*/;
       variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
     }
     variable4 = variable5;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable4 = variable2;
     variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
     variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
@@ -1302,7 +1303,7 @@ void array___ArrayMap___remove(val_t  self, val_t  param0) {
   return;
 }
 void array___ArrayMap___remove_all(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___remove_all, 470};
+  struct trace_t trace = {NULL, LOCATE_array, 470, LOCATE_array___ArrayMap___remove_all};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1312,7 +1313,7 @@ void array___ArrayMap___remove_all(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
   variable2 = TAG_Int(UNTAG_Int(variable2)-UNTAG_Int( TAG_Int(1)));
   variable1 = variable2;
   while (true) { /*while*/
@@ -1324,11 +1325,11 @@ void array___ArrayMap___remove_all(val_t  self, val_t  param0) {
     variable5 = variable4;
     if (UNTAG_Bool(variable5)) { /* and */
       variable5 = variable2;
-      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*AbstractArray::_length*/;
       variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
     }
     variable4 = variable5;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable4 = variable2;
     variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
     variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
@@ -1348,7 +1349,7 @@ void array___ArrayMap___remove_all(val_t  self, val_t  param0) {
   return;
 }
 void array___ArrayMap___remove_at(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___remove_at, 481};
+  struct trace_t trace = {NULL, LOCATE_array, 481, LOCATE_array___ArrayMap___remove_at};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1364,16 +1365,16 @@ void array___ArrayMap___remove_at(val_t  self, val_t  param0) {
   return;
 }
 void array___ArrayMap___clear(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___clear, 487};
+  struct trace_t trace = {NULL, LOCATE_array, 487, LOCATE_array___ArrayMap___clear};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*Array::clear*/;
+  ((array___AbstractArray___clear_t)CALL(variable0,COLOR_abstract_collection___RemovableCollection___clear))(variable0) /*AbstractArray::clear*/;
   tracehead = trace.prev;
   return;
 }
 void array___ArrayMap___enlarge(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___enlarge, 489};
+  struct trace_t trace = {NULL, LOCATE_array, 489, LOCATE_array___ArrayMap___enlarge};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -1384,7 +1385,7 @@ void array___ArrayMap___enlarge(val_t  self, val_t  param0) {
   return;
 }
 val_t array___ArrayMap___couple_at(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___couple_at, 492};
+  struct trace_t trace = {NULL, LOCATE_array, 492, LOCATE_array___ArrayMap___couple_at};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1403,11 +1404,11 @@ val_t array___ArrayMap___couple_at(val_t  self, val_t  param0) {
     variable5 = variable4;
     if (UNTAG_Bool(variable5)) { /* and */
       variable5 = variable2;
-      variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+      variable5 = ATTR_array___AbstractArray____length(variable5) /*AbstractArray::_length*/;
       variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
     }
     variable4 = variable5;
-    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable4 = variable2;
     variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
     variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
@@ -1425,7 +1426,7 @@ val_t array___ArrayMap___couple_at(val_t  self, val_t  param0) {
   return variable1;
 }
 void array___ArrayMap___remove_at_index(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___remove_at_index, 505};
+  struct trace_t trace = {NULL, LOCATE_array, 505, LOCATE_array___ArrayMap___remove_at_index};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1433,15 +1434,15 @@ void array___ArrayMap___remove_at_index(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
   variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*Array::last*/;
+  variable2 = ((abstract_collection___IndexedCollection___last_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___last))(variable2) /*IndexedCollection::last*/;
   ((array___Array_____braeq_t)CALL(variable1,COLOR_abstract_collection___Map_____braeq))(variable1,  variable0 /*i*/, variable2) /*Array::[]=*/;
   variable1 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*Array::pop*/;
+  ((array___AbstractArray___pop_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___pop))(variable1) /*AbstractArray::pop*/;
   tracehead = trace.prev;
   return;
 }
 val_t array___ArrayMap___index(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___index, 515};
+  struct trace_t trace = {NULL, LOCATE_array, 515, LOCATE_array___ArrayMap___index};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1454,7 +1455,7 @@ val_t array___ArrayMap___index(val_t  self, val_t  param0) {
   variable2 = ATTR_array___ArrayMap____last_index( self) /*ArrayMap::_last_index*/;
   variable1 = variable2;
   variable2 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*Array::length*/;
+  variable2 = ((array___AbstractArray___length_t)CALL(variable2,COLOR_abstract_collection___Collection___length))(variable2) /*AbstractArray::length*/;
   variable2 = TAG_Bool(UNTAG_Int( variable1 /*l*/)<UNTAG_Int(variable2));
   variable3 = variable2;
   if (UNTAG_Bool(variable3)) { /* and */
@@ -1464,11 +1465,11 @@ val_t array___ArrayMap___index(val_t  self, val_t  param0) {
     variable6 = variable5;
     if (UNTAG_Bool(variable6)) { /* and */
       variable6 = variable3;
-      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*AbstractArray::_length*/;
       variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
     }
     variable5 = variable6;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable5 = variable3;
     variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
     variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
@@ -1486,7 +1487,7 @@ val_t array___ArrayMap___index(val_t  self, val_t  param0) {
   variable2 =  TAG_Int(0);
   while (true) { /*while*/
     variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
-    variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*Array::length*/;
+    variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*AbstractArray::length*/;
     variable3 = TAG_Bool(UNTAG_Int( variable2 /*i*/)<UNTAG_Int(variable3));
     if (!UNTAG_Bool(variable3)) break; /* while*/
     variable3 = ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/;
@@ -1495,11 +1496,11 @@ val_t array___ArrayMap___index(val_t  self, val_t  param0) {
     variable6 = variable5;
     if (UNTAG_Bool(variable6)) { /* and */
       variable6 = variable3;
-      variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+      variable6 = ATTR_array___AbstractArray____length(variable6) /*AbstractArray::_length*/;
       variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
     }
     variable5 = variable6;
-    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_array, 229); nit_exit(1);}
     variable5 = variable3;
     variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
     variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
@@ -1525,18 +1526,18 @@ val_t array___ArrayMap___index(val_t  self, val_t  param0) {
   return variable1;
 }
 void array___ArrayMap___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayMap___init, 533};
+  struct trace_t trace = {NULL, LOCATE_array, 533, LOCATE_array___ArrayMap___init};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i]) return;
-  variable0 = NEW_array___Array___init(); /*new Array[Couple[K, E]]*/
+  variable0 = NEW_array___Array___init(); /*new Array[E]*/
   ATTR_array___ArrayMap____items( self) /*ArrayMap::_items*/ = variable0;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ArrayMap].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t array___Iterator___to_a(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___Iterator___to_a, 543};
+  struct trace_t trace = {NULL, LOCATE_array, 543, LOCATE_array___Iterator___to_a};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -1546,7 +1547,7 @@ val_t array___Iterator___to_a(val_t  self) {
     variable1 = ((abstract_collection___Iterator___is_ok_t)CALL( self,COLOR_abstract_collection___Iterator___is_ok))( self) /*Iterator::is_ok*/;
     if (!UNTAG_Bool(variable1)) break; /* while*/
     variable1 = ((abstract_collection___Iterator___item_t)CALL( self,COLOR_abstract_collection___Iterator___item))( self) /*Iterator::item*/;
-    ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable0 /*res*/,COLOR_abstract_collection___SimpleCollection___add))( variable0 /*res*/, variable1) /*AbstractArray::add*/;
     ((abstract_collection___Iterator___next_t)CALL( self,COLOR_abstract_collection___Iterator___next))( self) /*Iterator::next*/;
     continue_102: while(0);
   }
@@ -1558,7 +1559,7 @@ val_t array___Iterator___to_a(val_t  self) {
   return variable0;
 }
 val_t array___Collection___to_a(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_array___Collection___to_a, 556};
+  struct trace_t trace = {NULL, LOCATE_array, 556, LOCATE_array___Collection___to_a};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ((abstract_collection___Collection___iterator_t)CALL( self,COLOR_abstract_collection___Collection___iterator))( self) /*Collection::iterator*/;
@@ -1569,26 +1570,26 @@ val_t array___Collection___to_a(val_t  self) {
   return variable0;
 }
 val_t array___ArrayCapable___calloc_array(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___ArrayCapable___calloc_array, 567};
+  struct trace_t trace = {NULL, LOCATE_array, 567, LOCATE_array___ArrayCapable___calloc_array};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return BOX_NativeArray((val_t*)malloc((UNTAG_Int( param0) * sizeof(val_t))));
 }
 val_t array___NativeArray_____bra(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_array___NativeArray_____bra, 573};
+  struct trace_t trace = {NULL, LOCATE_array, 573, LOCATE_array___NativeArray_____bra};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return UNBOX_NativeArray( self)[UNTAG_Int( param0)];
 }
 void array___NativeArray_____braeq(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___NativeArray_____braeq, 574};
+  struct trace_t trace = {NULL, LOCATE_array, 574, LOCATE_array___NativeArray_____braeq};
   trace.prev = tracehead; tracehead = &trace;
   UNBOX_NativeArray( self)[UNTAG_Int( param0)]= param1;
   tracehead = trace.prev;
   return;
 }
 void array___NativeArray___copy_to(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_array___NativeArray___copy_to, 575};
+  struct trace_t trace = {NULL, LOCATE_array, 575, LOCATE_array___NativeArray___copy_to};
   trace.prev = tracehead; tracehead = &trace;
   (void)memcpy(UNBOX_NativeArray( param0), UNBOX_NativeArray( self), UNTAG_Int( param1)*sizeof(val_t));
   tracehead = trace.prev;