use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / standard___collection___array._sep.c
diff --git a/c_src/standard___collection___array._sep.c b/c_src/standard___collection___array._sep.c
deleted file mode 100644 (file)
index 9ede4b2..0000000
+++ /dev/null
@@ -1,5793 +0,0 @@
-/* This C file is generated by NIT to compile module standard___collection___array. */
-#include "standard___collection___array._sep.h"
-static const char LOCATE_standard___collection___array___AbstractArrayRead___length[] = "array::AbstractArrayRead::(abstract_collection::Collection::length)";
-val_t standard___collection___array___AbstractArrayRead___length(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 24;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___is_empty[] = "array::AbstractArrayRead::(abstract_collection::Collection::is_empty)";
-val_t standard___collection___array___AbstractArrayRead___is_empty(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 26;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___is_empty;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:26 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 26);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ../lib/standard/collection/array.nit:26 */
-    REGB2 = REGB1;
-  }
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB2;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___has[] = "array::AbstractArrayRead::(abstract_collection::Collection::has)";
-val_t standard___collection___array___AbstractArrayRead___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 28;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___has;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:30 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:32 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:32 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:33 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(1);
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:34 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:34 */
-      REGB0 = REGB3;
-    } else {
-      /* ../lib/standard/collection/array.nit:32 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:36 */
-  REGB0 = TAG_Bool(0);
-  REGB2 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB2;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___has_only[] = "array::AbstractArrayRead::(abstract_collection::Collection::has_only)";
-val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 39;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___has_only;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:41 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:43 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:43 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:44 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(0);
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:45 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:45 */
-      REGB0 = REGB3;
-    } else {
-      /* ../lib/standard/collection/array.nit:43 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:47 */
-  REGB0 = TAG_Bool(1);
-  REGB2 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB2;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___count[] = "array::AbstractArrayRead::(abstract_collection::Collection::count)";
-val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t REGB4;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 50;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___count;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:52 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:53 */
-  REGB1 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:55 */
-  while(1) {
-    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:55 */
-    if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/collection/array.nit:56 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      REGB3 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB3 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB3 = REGB4;
-        }
-      }
-      if (UNTAG_Bool(REGB3)) {
-        REGB3 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:245 */
-        REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ../lib/standard/collection/array.nit:56 */
-        REGB0 = REGB3;
-      }
-      /* ../lib/standard/collection/array.nit:57 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:57 */
-      REGB1 = REGB3;
-    } else {
-      /* ../lib/standard/collection/array.nit:55 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:59 */
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___index_of[] = "array::AbstractArrayRead::(abstract_collection::SequenceRead::index_of)";
-val_t standard___collection___array___AbstractArrayRead___index_of(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 62;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___index_of;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:62 */
-  REGB0 = TAG_Int(0);
-  REGB0 = CALL_standard___collection___array___AbstractArrayRead___index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___last_index_of[] = "array::AbstractArrayRead::last_index_of";
-val_t standard___collection___array___AbstractArrayRead___last_index_of(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 64;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___last_index_of;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:66 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:66 */
-  REGB1 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB1);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___index_of_from[] = "array::AbstractArrayRead::index_of_from";
-val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 68;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___index_of_from;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:74 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:74 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:75 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/collection/array.nit:76 */
-        REGB2 = REGB0;
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:78 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:78 */
-      REGB0 = REGB3;
-    } else {
-      /* ../lib/standard/collection/array.nit:74 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:80 */
-  REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:246 */
-  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:80 */
-  REGB2 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB2;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___last_index_of_from[] = "array::AbstractArrayRead::last_index_of_from";
-val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 83;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___last_index_of_from;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:88 */
-  while(1) {
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:88 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:89 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB1)) {
-        /* ../lib/standard/collection/array.nit:90 */
-        REGB1 = REGB0;
-        goto label1;
-      } else {
-        /* ../lib/standard/collection/array.nit:92 */
-        REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:247 */
-        REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:92 */
-        REGB0 = REGB2;
-      }
-    } else {
-      /* ../lib/standard/collection/array.nit:88 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:95 */
-  REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:246 */
-  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:95 */
-  REGB1 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___reversed[] = "array::AbstractArrayRead::reversed";
-val_t standard___collection___array___AbstractArrayRead___reversed(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 98;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___reversed;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:103 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 103);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:104 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  /* ../lib/standard/collection/array.nit:105 */
-  while(1) {
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:244 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:105 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:106 */
-      REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:106 */
-      REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:107 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    } else {
-      /* ../lib/standard/collection/array.nit:105 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:109 */
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___copy_to[] = "array::AbstractArrayRead::copy_to";
-void standard___collection___array___AbstractArrayRead___copy_to(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t REGB4;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 112;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___copy_to;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  REGB1 = p2;
-  fra.me.REG[1] = p3;
-  REGB2 = p4;
-  /* ../lib/standard/collection/array.nit:122 */
-  while(1) {
-    REGB3 = TAG_Int(0);
-    REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB4)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:244 */
-    REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
-    /* ../lib/standard/collection/array.nit:122 */
-    if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/collection/array.nit:123 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:123 */
-      REGB1 = REGB3;
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-      REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:124 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB4);
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
-    } else {
-      /* ../lib/standard/collection/array.nit:122 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___output[] = "array::AbstractArrayRead::(kernel::Object::output)";
-void standard___collection___array___AbstractArrayRead___output(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 128;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___output;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:130 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:132 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:132 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:133 */
-      fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ../lib/standard/collection/array.nit:134 */
-      REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-          REGB2 = REGB3;
-        }
-      }
-      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 134);
-        }
-        CALL_standard___kernel___Object___output(fra.me.REG[1])(fra.me.REG[1]);
-      }
-      /* ../lib/standard/collection/array.nit:135 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:135 */
-      REGB0 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:132 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___iterator[] = "array::AbstractArrayRead::(abstract_collection::Collection::iterator)";
-val_t standard___collection___array___AbstractArrayRead___iterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 139;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___iterator;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:139 */
-  fra.me.REG[0] = NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead_____eqeq[] = "array::AbstractArrayRead::(kernel::Object::==)";
-val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t REGB4;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 141;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead_____eqeq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:144 */
-  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___AbstractArray, ID_standard___collection___array___AbstractArray)) /*cast AbstractArray[nullable Object]*/;
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(1);
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(0);
-    goto label1;
-  }
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:146 */
-  REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 146);
-  }
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:146 */
-  REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
-  if (UNTAG_Bool(REGB3)) {
-  } else {
-    /* ../lib/standard/kernel.nit:237 */
-    REGB2 = TAG_Bool((REGB2)==(REGB1));
-    /* ../lib/standard/collection/array.nit:146 */
-    REGB3 = REGB2;
-  }
-  REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
-  if (UNTAG_Bool(REGB3)) {
-    REGB3 = TAG_Bool(0);
-    REGB0 = REGB3;
-    goto label1;
-  }
-  /* ../lib/standard/collection/array.nit:147 */
-  REGB3 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:148 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:148 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:149 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
-      REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 149);
-      }
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
-      REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[3]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(0);
-          REGB2 = REGB4;
-        } else {
-          REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          REGB2 = REGB4;
-        }
-      }
-      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(0);
-        REGB0 = REGB2;
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:150 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:150 */
-      REGB3 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:148 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:152 */
-  REGB3 = TAG_Bool(1);
-  REGB0 = REGB3;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___AbstractArrayRead___init[] = "array::AbstractArrayRead::init";
-void standard___collection___array___AbstractArrayRead___init(val_t p0, int* init_table){
-  int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___AbstractArrayRead].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  if (init_table[itpos0]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos0] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___enlarge[] = "array::AbstractArray::enlarge";
-void standard___collection___array___AbstractArray___enlarge(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 161;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___enlarge;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  fra.me.nitni_local_ref_head = NULL;
-  /* ../lib/standard/collection/array.nit:161 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___array, 161);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___push[] = "array::AbstractArray::(abstract_collection::Sequence::push)";
-void standard___collection___array___AbstractArray___push(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 166;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___push;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:166 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___pop[] = "array::AbstractArray::(abstract_collection::Sequence::pop)";
-val_t standard___collection___array___AbstractArray___pop(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 168;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___pop;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:170 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___array, 170);
-  }
-  /* ../lib/standard/collection/array.nit:171 */
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:172 */
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:172 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
-  /* ../lib/standard/collection/array.nit:173 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___AbstractArray___shift[] = "array::AbstractArray::(abstract_collection::Sequence::shift)";
-val_t standard___collection___array___AbstractArray___shift(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 176;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___shift;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:178 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert '%s' failed", "not_empty", LOCATE_standard___collection___array, 178);
-  }
-  /* ../lib/standard/collection/array.nit:179 */
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:180 */
-  REGB0 = TAG_Int(1);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:182 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:182 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:183 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:183 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:184 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:184 */
-      REGB0 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:182 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:186 */
-  REGB0 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:186 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:187 */
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___AbstractArray___unshift[] = "array::AbstractArray::(abstract_collection::Sequence::unshift)";
-void standard___collection___array___AbstractArray___unshift(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 190;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___unshift;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:192 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:193 */
-  while(1) {
-    REGB0 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:244 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:193 */
-    if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:194 */
-      REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:194 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:195 */
-      REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:195 */
-      REGB1 = REGB0;
-    } else {
-      /* ../lib/standard/collection/array.nit:193 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:197 */
-  REGB1 = TAG_Int(0);
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___insert[] = "array::AbstractArray::insert";
-void standard___collection___array___AbstractArray___insert(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 200;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___insert;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:207 */
-  REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:245 */
-  REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ../lib/standard/collection/array.nit:207 */
-  CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:208 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:245 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:208 */
-  CALL_standard___collection___array___AbstractArrayRead___copy_to(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2, fra.me.REG[0], REGB1);
-  /* ../lib/standard/collection/array.nit:209 */
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___add[] = "array::AbstractArray::(abstract_collection::SimpleCollection::add)";
-void standard___collection___array___AbstractArray___add(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 212;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___add;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:212 */
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___clear[] = "array::AbstractArray::(abstract_collection::RemovableCollection::clear)";
-void standard___collection___array___AbstractArray___clear(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 214;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:214 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___remove[] = "array::AbstractArray::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___array___AbstractArray___remove(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 216;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:216 */
-  REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___remove_all[] = "array::AbstractArray::(abstract_collection::RemovableCollection::remove_all)";
-void standard___collection___array___AbstractArray___remove_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 218;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:220 */
-  REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:221 */
-  while(1) {
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:221 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:222 */
-      CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ../lib/standard/collection/array.nit:223 */
-      REGB1 = CALL_standard___collection___array___AbstractArrayRead___index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/collection/array.nit:221 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___remove_at[] = "array::AbstractArray::(abstract_collection::Sequence::remove_at)";
-void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 227;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove_at;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:230 */
-  REGB2 = TAG_Int(0);
-  REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB3)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-  /* ../lib/standard/collection/array.nit:230 */
-  if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  } else {
-    /* ../lib/standard/collection/array.nit:230 */
-    REGB3 = TAG_Bool(0);
-    REGB2 = REGB3;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:231 */
-    REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:232 */
-    while(1) {
-      REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:232 */
-      if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:233 */
-        REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:247 */
-        REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* ../lib/standard/collection/array.nit:233 */
-        fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
-        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-        /* ../lib/standard/collection/array.nit:234 */
-        REGB0 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:245 */
-        REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-        /* ../lib/standard/collection/array.nit:234 */
-        REGB2 = REGB0;
-      } else {
-        /* ../lib/standard/collection/array.nit:232 */
-        goto label1;
-      }
-    }
-    label1: while(0);
-    /* ../lib/standard/collection/array.nit:236 */
-    REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:247 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:236 */
-    ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___AbstractArray___swap_at[] = "array::AbstractArray::swap_at";
-void standard___collection___array___AbstractArray___swap_at(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 240;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArray___swap_at;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  REGB1 = p2;
-  /* ../lib/standard/collection/array.nit:247 */
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  /* ../lib/standard/collection/array.nit:248 */
-  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:249 */
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___iterate[] = "array::Array::(abstract_collection::Collection::iterate)";
-void standard___collection___array___Array___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  fun_t CREG[1];
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 267;
-  fra.me.meth = LOCATE_standard___collection___array___Array___iterate;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.closure_ctx = closctx_param;
-  fra.me.closure_funs = CREG;
-  fra.me.REG[0] = p0;
-  CREG[0] = clos_fun0;
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../lib/standard/collection/array.nit:24 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:274 */
-      ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, fra.me.REG[2]);
-      if (closctx_param->has_broke) {
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array_____bra[] = "array::Array::(abstract_collection::SequenceRead::[])";
-val_t standard___collection___array___Array_____bra(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 279;
-  fra.me.meth = LOCATE_standard___collection___array___Array_____bra;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:281 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:281 */
-  if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  } else {
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB2 = TAG_Bool(0);
-    REGB1 = REGB2;
-  }
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-  }
-  /* ../lib/standard/collection/array.nit:282 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-  }
-  /* ../lib/standard/collection/array.nit:725 */
-  fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:282 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___Array_____braeq[] = "array::Array::(abstract_collection::Sequence::[]=)";
-void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 285;
-  fra.me.meth = LOCATE_standard___collection___array___Array_____braeq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  fra.me.REG[1] = p2;
-  /* ../lib/standard/collection/array.nit:287 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:287 */
-  if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 287);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-    REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  } else {
-    /* ../lib/standard/collection/array.nit:287 */
-    REGB1 = TAG_Bool(0);
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 287);
-  }
-  /* ../lib/standard/collection/array.nit:288 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 288);
-  }
-  REGB2 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:241 */
-  REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:288 */
-  if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:289 */
-    REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:289 */
-    CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
-  }
-  /* ../lib/standard/collection/array.nit:291 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 291);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  REGB1 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:241 */
-  REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:291 */
-  if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:292 */
-    REGB2 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:292 */
-    ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
-  }
-  /* ../lib/standard/collection/array.nit:294 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 294);
-  }
-  /* ../lib/standard/collection/array.nit:726 */
-  ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___add[] = "array::Array::(abstract_collection::SimpleCollection::add)";
-void standard___collection___array___Array___add(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 297;
-  fra.me.meth = LOCATE_standard___collection___array___Array___add;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:299 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 299);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:300 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 300);
-  }
-  REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:241 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-  /* ../lib/standard/collection/array.nit:300 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:301 */
-    REGB1 = TAG_Int(1);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:301 */
-    CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
-  }
-  /* ../lib/standard/collection/array.nit:303 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:245 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:303 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
-  /* ../lib/standard/collection/array.nit:304 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 304);
-  }
-  /* ../lib/standard/collection/array.nit:726 */
-  ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___enlarge[] = "array::Array::(array::AbstractArray::enlarge)";
-void standard___collection___array___Array___enlarge(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 307;
-  fra.me.meth = LOCATE_standard___collection___array___Array___enlarge;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:309 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 309);
-  }
-  REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:241 */
-  REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:310 */
-  if (UNTAG_Bool(REGB2)) {
-    goto label1;
-  }
-  /* ../lib/standard/collection/array.nit:311 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:241 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:311 */
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:248 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:311 */
-      REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:311 */
-      REGB1 = REGB3;
-    } else {
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:719 */
-  fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB1), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:313 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 313);
-  }
-  REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  REGB3 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:244 */
-  REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
-  /* ../lib/standard/collection/array.nit:313 */
-  if (UNTAG_Bool(REGB3)) {
-    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-    REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 313);
-    }
-    REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 313);
-    }
-    /* ../lib/standard/collection/array.nit:727 */
-    (void)memcpy(((Nit_NativeArray )fra.me.REG[1])->val, ((Nit_NativeArray)fra.me.REG[2])->val, UNTAG_Int(REGB3)*sizeof(val_t));
-  }
-  /* ../lib/standard/collection/array.nit:314 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:315 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___init[] = "array::Array::init";
-void standard___collection___array___Array___init(val_t p0, int* init_table){
-  int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos1]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 318;
-  fra.me.meth = LOCATE_standard___collection___array___Array___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:321 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:322 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos1] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___from[] = "array::Array::from";
-void standard___collection___array___Array___from(val_t p0, val_t p1, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos2]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 325;
-  fra.me.meth = LOCATE_standard___collection___array___Array___from;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:327 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___array___Array___with_capacity(fra.me.REG[0])(fra.me.REG[0], REGB0, init_table);
-  /* ../lib/standard/collection/array.nit:328 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___with_items[] = "array::Array::with_items";
-void standard___collection___array___Array___with_items(val_t p0, val_t p1, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos3]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 331;
-  fra.me.meth = LOCATE_standard___collection___array___Array___with_items;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:331 */
-  fra.me.REG[2] = fra.me.REG[0];
-  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[E]*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 331);
-  }
-  /* ../lib/standard/collection/array.nit:334 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-  ATTR_standard___collection___array___Array____items(fra.me.REG[2]) = fra.me.REG[0];
-  /* ../lib/standard/collection/array.nit:335 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___Array____capacity(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 335);
-  }
-  REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[1]);
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[2]) = REGB0;
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:336 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___with_capacity[] = "array::Array::with_capacity";
-void standard___collection___array___Array___with_capacity(val_t p0, val_t p1, int* init_table){
-  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  if (init_table[itpos4]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 339;
-  fra.me.meth = LOCATE_standard___collection___array___Array___with_capacity;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:342 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:342 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 342);
-  }
-  /* ../lib/standard/collection/array.nit:719 */
-  fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:343 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:344 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:345 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos4] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___filled_with[] = "array::Array::filled_with";
-void standard___collection___array___Array___filled_with(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  if (init_table[itpos5]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 348;
-  fra.me.meth = LOCATE_standard___collection___array___Array___filled_with;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:351 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:351 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 351);
-  }
-  /* ../lib/standard/collection/array.nit:719 */
-  fra.me.REG[2] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ../lib/standard/collection/array.nit:352 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[2];
-  /* ../lib/standard/collection/array.nit:353 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:354 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:355 */
-  REGB1 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:356 */
-  while(1) {
-    REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:356 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:357 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:358 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:358 */
-      REGB1 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:356 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  init_table[itpos5] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___with_native[] = "array::Array::with_native";
-void standard___collection___array___Array___with_native(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___Array].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  if (init_table[itpos6]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 362;
-  fra.me.meth = LOCATE_standard___collection___array___Array___with_native;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:365 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:365 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "positive", LOCATE_standard___collection___array, 365);
-  }
-  /* ../lib/standard/collection/array.nit:366 */
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:367 */
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ../lib/standard/collection/array.nit:368 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos6] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Array___intern_items[] = "array::Array::intern_items";
-val_t standard___collection___array___Array___intern_items(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 374;
-  fra.me.meth = LOCATE_standard___collection___array___Array___intern_items;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:374 */
-  fra.me.REG[1] = fra.me.REG[0];
-  /* ../lib/standard/collection/array.nit:376 */
-  fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 376);
-  }
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___Array___sort[] = "array::Array::sort";
-void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  fun_t CREG[1];
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 381;
-  fra.me.meth = LOCATE_standard___collection___array___Array___sort;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.closure_ctx = closctx_param;
-  fra.me.closure_funs = CREG;
-  fra.me.REG[0] = p0;
-  CREG[0] = clos_fun0;
-  /* ../lib/standard/collection/array.nit:385 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:385 */
-  REGB2 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  CALL_standard___collection___array___Array___sub_sort(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2, (&(fra.me)), ((fun_t)OC_standard___collection___array___Array___sort_1));
-  switch ((&(fra.me))->has_broke) {
-    case 0: break;
-    case 1: (&(fra.me))->has_broke = 0; goto label3;
-  }
-  label3: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-  val_t OC_standard___collection___array___Array___sort_1(struct stack_frame_t *closctx, val_t p0, val_t p1){
-    struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-    val_t REGB0;
-    val_t tmp;
-    /* ../lib/standard/collection/array.nit:385 */
-    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-    fra.me.file = LOCATE_standard___collection___array;
-    fra.me.line = 385;
-    fra.me.meth = LOCATE_standard___collection___array___Array___sort;
-    fra.me.has_broke = 0;
-    fra.me.REG_size = 2;
-    fra.me.nitni_local_ref_head = NULL;
-    fra.me.REG[0] = NIT_NULL;
-    fra.me.REG[1] = NIT_NULL;
-    fra.me.REG[0] = p0;
-    fra.me.REG[1] = p1;
-    REGB0 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], fra.me.REG[1]);
-    if (closctx->closure_ctx->has_broke) {
-      closctx->has_broke = 1;
-      goto label2;
-    }
-    goto label2;
-    label2: while(0);
-    stack_frame_head = fra.me.prev;
-    return REGB0;
-  }
-static const char LOCATE_standard___collection___array___Array___sub_sort[] = "array::Array::sub_sort";
-void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t p2, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t REGB4;
-  val_t REGB5;
-  val_t REGB6;
-  fun_t CREG[1];
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 388;
-  fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.closure_ctx = closctx_param;
-  fra.me.closure_funs = CREG;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  REGB1 = p2;
-  CREG[0] = clos_fun0;
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:392 */
-  if (UNTAG_Bool(REGB2)) {
-    /* ../lib/standard/collection/array.nit:393 */
-    goto label1;
-  } else {
-    /* ../lib/standard/collection/array.nit:394 */
-    REGB2 = TAG_Int(7);
-    /* ../lib/standard/kernel.nit:245 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:394 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:279 */
-      fra.me.REG[1] = fra.me.REG[0];
-      REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB3 = TAG_Int(0);
-      REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB4)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:281 */
-      if (UNTAG_Bool(REGB3)) {
-        REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-        }
-        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB4)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-      } else {
-        /* ../lib/standard/collection/array.nit:281 */
-        REGB4 = TAG_Bool(0);
-        REGB3 = REGB4;
-      }
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-      }
-      /* ../lib/standard/collection/array.nit:282 */
-      fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-      REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:282 */
-      goto label2;
-      label2: while(0);
-      /* ../lib/standard/collection/array.nit:396 */
-      REGB2 = REGB0;
-      /* ../lib/standard/collection/array.nit:397 */
-      REGB3 = REGB1;
-      /* ../lib/standard/collection/array.nit:398 */
-      while(1) {
-        REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB4)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:244 */
-        REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:398 */
-        if (UNTAG_Bool(REGB4)) {
-          /* ../lib/standard/collection/array.nit:399 */
-          while(1) {
-            REGB4 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:241 */
-            REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:399 */
-            if (UNTAG_Bool(REGB4)) {
-              /* ../lib/standard/collection/array.nit:279 */
-              fra.me.REG[2] = fra.me.REG[0];
-              REGB4 = REGB2;
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB5 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:243 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:281 */
-              if (UNTAG_Bool(REGB5)) {
-               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB5)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-               }
-               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-               if (UNTAG_Bool(REGB6)) {
-               } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-               }
-               /* ../lib/standard/kernel.nit:242 */
-               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-              } else {
-               /* ../lib/standard/collection/array.nit:281 */
-               REGB6 = TAG_Bool(0);
-               REGB5 = REGB6;
-              }
-              if (UNTAG_Bool(REGB5)) {
-              } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-              }
-              /* ../lib/standard/collection/array.nit:282 */
-              fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-              REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-              if (UNTAG_Bool(REGB5)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-              }
-              /* ../lib/standard/collection/array.nit:725 */
-              fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ../lib/standard/collection/array.nit:282 */
-              goto label3;
-              label3: while(0);
-              /* ../lib/standard/collection/array.nit:399 */
-              REGB4 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[2], fra.me.REG[1]);
-              if (closctx_param->has_broke) {
-               goto label1;
-              }
-              REGB5 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:241 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5));
-            } else {
-              /* ../lib/standard/collection/array.nit:399 */
-              REGB4 = TAG_Bool(0);
-              REGB5 = REGB4;
-            }
-            if (UNTAG_Bool(REGB5)) {
-              REGB5 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:245 */
-              REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:399 */
-              REGB2 = REGB5;
-            } else {
-              goto label4;
-            }
-          }
-          label4: while(0);
-          /* ../lib/standard/collection/array.nit:400 */
-          while(1) {
-            REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB5)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:244 */
-            REGB5 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-            /* ../lib/standard/collection/array.nit:400 */
-            if (UNTAG_Bool(REGB5)) {
-              /* ../lib/standard/collection/array.nit:279 */
-              fra.me.REG[2] = fra.me.REG[0];
-              REGB5 = REGB3;
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB4 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:243 */
-              REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:281 */
-              if (UNTAG_Bool(REGB4)) {
-               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB4)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-               }
-               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
-               if (UNTAG_Bool(REGB6)) {
-               } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-               }
-               /* ../lib/standard/kernel.nit:242 */
-               REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
-              } else {
-               /* ../lib/standard/collection/array.nit:281 */
-               REGB6 = TAG_Bool(0);
-               REGB4 = REGB6;
-              }
-              if (UNTAG_Bool(REGB4)) {
-              } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-              }
-              /* ../lib/standard/collection/array.nit:282 */
-              fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-              REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-              if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-              }
-              /* ../lib/standard/collection/array.nit:725 */
-              fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-              /* ../lib/standard/collection/array.nit:282 */
-              goto label5;
-              label5: while(0);
-              /* ../lib/standard/collection/array.nit:400 */
-              REGB5 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[2], fra.me.REG[1]);
-              if (closctx_param->has_broke) {
-               goto label1;
-              }
-              REGB4 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:243 */
-              REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-            } else {
-              /* ../lib/standard/collection/array.nit:400 */
-              REGB5 = TAG_Bool(0);
-              REGB4 = REGB5;
-            }
-            if (UNTAG_Bool(REGB4)) {
-              REGB4 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:247 */
-              REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
-              /* ../lib/standard/collection/array.nit:400 */
-              REGB3 = REGB4;
-            } else {
-              goto label6;
-            }
-          }
-          label6: while(0);
-          REGB4 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-          if (UNTAG_Bool(REGB4)) {
-          } else {
-            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-          }
-          /* ../lib/standard/kernel.nit:244 */
-          REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:401 */
-          if (UNTAG_Bool(REGB4)) {
-            /* ../lib/standard/collection/array.nit:279 */
-            fra.me.REG[2] = fra.me.REG[0];
-            REGB4 = REGB2;
-            /* ../lib/standard/collection/array.nit:281 */
-            REGB5 = TAG_Int(0);
-            REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB6)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:243 */
-            REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:281 */
-            if (UNTAG_Bool(REGB5)) {
-              REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-              if (UNTAG_Bool(REGB5)) {
-              } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-              }
-              REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:242 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-            } else {
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB6 = TAG_Bool(0);
-              REGB5 = REGB6;
-            }
-            if (UNTAG_Bool(REGB5)) {
-            } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-            }
-            /* ../lib/standard/collection/array.nit:282 */
-            fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-            REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-            if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-            }
-            /* ../lib/standard/collection/array.nit:725 */
-            fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-            /* ../lib/standard/collection/array.nit:282 */
-            goto label7;
-            label7: while(0);
-            /* ../lib/standard/collection/array.nit:279 */
-            fra.me.REG[3] = fra.me.REG[0];
-            REGB4 = REGB3;
-            /* ../lib/standard/collection/array.nit:281 */
-            REGB5 = TAG_Int(0);
-            REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB6)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:243 */
-            REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:281 */
-            if (UNTAG_Bool(REGB5)) {
-              REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
-              if (UNTAG_Bool(REGB5)) {
-              } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-              }
-              REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:242 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-            } else {
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB6 = TAG_Bool(0);
-              REGB5 = REGB6;
-            }
-            if (UNTAG_Bool(REGB5)) {
-            } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-            }
-            /* ../lib/standard/collection/array.nit:282 */
-            fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-            REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-            if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-            }
-            /* ../lib/standard/collection/array.nit:725 */
-            fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-            /* ../lib/standard/collection/array.nit:282 */
-            goto label8;
-            label8: while(0);
-            /* ../lib/standard/collection/array.nit:403 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[3]);
-            /* ../lib/standard/collection/array.nit:404 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
-          }
-        } else {
-          /* ../lib/standard/collection/array.nit:398 */
-          goto label9;
-        }
-      }
-      label9: while(0);
-      /* ../lib/standard/collection/array.nit:407 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:279 */
-      fra.me.REG[2] = fra.me.REG[0];
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB4 = TAG_Int(0);
-      REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB5)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ../lib/standard/collection/array.nit:281 */
-      if (UNTAG_Bool(REGB4)) {
-        REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-        }
-        REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB5)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-      } else {
-        /* ../lib/standard/collection/array.nit:281 */
-        REGB5 = TAG_Bool(0);
-        REGB4 = REGB5;
-      }
-      if (UNTAG_Bool(REGB4)) {
-      } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-      }
-      /* ../lib/standard/collection/array.nit:282 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ../lib/standard/collection/array.nit:282 */
-      goto label10;
-      label10: while(0);
-      /* ../lib/standard/collection/array.nit:407 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:408 */
-      REGB3 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:408 */
-      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[1]);
-      /* ../lib/standard/collection/array.nit:409 */
-      REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      CALL_standard___collection___array___Array___sub_sort(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3, (&(fra.me)), ((fun_t)OC_standard___collection___array___Array___sub_sort_11));
-      switch ((&(fra.me))->has_broke) {
-        case 0: break;
-        case 1: (&(fra.me))->has_broke = 0; goto label1;
-      }
-      CALL_standard___collection___array___Array___sub_sort(fra.me.REG[0])(fra.me.REG[0], REGB2, REGB1, (&(fra.me)), ((fun_t)OC_standard___collection___array___Array___sub_sort_13));
-      switch ((&(fra.me))->has_broke) {
-        case 0: break;
-        case 1: (&(fra.me))->has_broke = 0; goto label1;
-      }
-    } else {
-      /* ../lib/standard/collection/array.nit:413 */
-      while(1) {
-        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB2)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:413 */
-        if (UNTAG_Bool(REGB2)) {
-          /* ../lib/standard/collection/array.nit:414 */
-          REGB2 = REGB0;
-          /* ../lib/standard/collection/array.nit:279 */
-          fra.me.REG[1] = fra.me.REG[0];
-          REGB3 = REGB0;
-          /* ../lib/standard/collection/array.nit:281 */
-          REGB4 = TAG_Int(0);
-          REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-          if (UNTAG_Bool(REGB5)) {
-          } else {
-            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-          }
-          /* ../lib/standard/kernel.nit:243 */
-          REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-          /* ../lib/standard/collection/array.nit:281 */
-          if (UNTAG_Bool(REGB4)) {
-            REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-            }
-            REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-            REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB5)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:242 */
-            REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-          } else {
-            /* ../lib/standard/collection/array.nit:281 */
-            REGB5 = TAG_Bool(0);
-            REGB4 = REGB5;
-          }
-          if (UNTAG_Bool(REGB4)) {
-          } else {
-            nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-          }
-          /* ../lib/standard/collection/array.nit:282 */
-          fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-          REGB4 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-          if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-          }
-          /* ../lib/standard/collection/array.nit:725 */
-          fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB3)];
-          /* ../lib/standard/collection/array.nit:282 */
-          goto label15;
-          label15: while(0);
-          /* ../lib/standard/collection/array.nit:416 */
-          REGB3 = REGB0;
-          /* ../lib/standard/collection/array.nit:417 */
-          while(1) {
-            REGB4 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:241 */
-            REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
-            /* ../lib/standard/collection/array.nit:417 */
-            if (UNTAG_Bool(REGB4)) {
-              /* ../lib/standard/collection/array.nit:279 */
-              fra.me.REG[2] = fra.me.REG[0];
-              REGB4 = REGB3;
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB5 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:243 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:281 */
-              if (UNTAG_Bool(REGB5)) {
-               REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB5)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-               }
-               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-               if (UNTAG_Bool(REGB6)) {
-               } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-               }
-               /* ../lib/standard/kernel.nit:242 */
-               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-              } else {
-               /* ../lib/standard/collection/array.nit:281 */
-               REGB6 = TAG_Bool(0);
-               REGB5 = REGB6;
-              }
-              if (UNTAG_Bool(REGB5)) {
-              } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-              }
-              /* ../lib/standard/collection/array.nit:282 */
-              fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-              REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-              if (UNTAG_Bool(REGB5)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-              }
-              /* ../lib/standard/collection/array.nit:725 */
-              fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ../lib/standard/collection/array.nit:282 */
-              goto label16;
-              label16: while(0);
-              /* ../lib/standard/collection/array.nit:418 */
-              REGB4 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(CREG[0]))(closctx_param, fra.me.REG[1], fra.me.REG[2]);
-              if (closctx_param->has_broke) {
-               goto label1;
-              }
-              REGB5 = TAG_Int(0);
-              REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB6)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:244 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:418 */
-              if (UNTAG_Bool(REGB5)) {
-               /* ../lib/standard/collection/array.nit:419 */
-               REGB2 = REGB3;
-               /* ../lib/standard/collection/array.nit:279 */
-               fra.me.REG[2] = fra.me.REG[0];
-               REGB5 = REGB3;
-               /* ../lib/standard/collection/array.nit:281 */
-               REGB4 = TAG_Int(0);
-               REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
-               if (UNTAG_Bool(REGB6)) {
-               } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-               }
-               /* ../lib/standard/kernel.nit:243 */
-               REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-               /* ../lib/standard/collection/array.nit:281 */
-               if (UNTAG_Bool(REGB4)) {
-               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB4)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-               }
-               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               REGB6 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
-               if (UNTAG_Bool(REGB6)) {
-               } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-               }
-               /* ../lib/standard/kernel.nit:242 */
-               REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
-               } else {
-               /* ../lib/standard/collection/array.nit:281 */
-               REGB6 = TAG_Bool(0);
-               REGB4 = REGB6;
-               }
-               if (UNTAG_Bool(REGB4)) {
-               } else {
-               nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-               }
-               /* ../lib/standard/collection/array.nit:282 */
-               fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-               REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-               }
-               /* ../lib/standard/collection/array.nit:725 */
-               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-               /* ../lib/standard/collection/array.nit:282 */
-               goto label17;
-               label17: while(0);
-               /* ../lib/standard/collection/array.nit:420 */
-               fra.me.REG[1] = fra.me.REG[2];
-              }
-              /* ../lib/standard/collection/array.nit:422 */
-              REGB5 = TAG_Int(1);
-              /* ../lib/standard/kernel.nit:245 */
-              REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-              /* ../lib/standard/collection/array.nit:422 */
-              REGB3 = REGB5;
-            } else {
-              /* ../lib/standard/collection/array.nit:417 */
-              goto label18;
-            }
-          }
-          label18: while(0);
-          /* ../lib/standard/collection/array.nit:424 */
-          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
-          if (UNTAG_Bool(REGB3)) {
-          } else {
-            /* ../lib/standard/kernel.nit:237 */
-            REGB5 = TAG_Bool((REGB2)==(REGB0));
-            /* ../lib/standard/collection/array.nit:424 */
-            REGB3 = REGB5;
-          }
-          REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
-          if (UNTAG_Bool(REGB3)) {
-            /* ../lib/standard/collection/array.nit:279 */
-            fra.me.REG[2] = fra.me.REG[0];
-            REGB3 = REGB0;
-            /* ../lib/standard/collection/array.nit:281 */
-            REGB5 = TAG_Int(0);
-            REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-            if (UNTAG_Bool(REGB4)) {
-            } else {
-              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-            }
-            /* ../lib/standard/kernel.nit:243 */
-            REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-            /* ../lib/standard/collection/array.nit:281 */
-            if (UNTAG_Bool(REGB5)) {
-              REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-              if (UNTAG_Bool(REGB5)) {
-              } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-              }
-              REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-              REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
-              if (UNTAG_Bool(REGB4)) {
-              } else {
-               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-              }
-              /* ../lib/standard/kernel.nit:242 */
-              REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
-            } else {
-              /* ../lib/standard/collection/array.nit:281 */
-              REGB4 = TAG_Bool(0);
-              REGB5 = REGB4;
-            }
-            if (UNTAG_Bool(REGB5)) {
-            } else {
-              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-            }
-            /* ../lib/standard/collection/array.nit:282 */
-            fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-            REGB5 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-            if (UNTAG_Bool(REGB5)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-            }
-            /* ../lib/standard/collection/array.nit:725 */
-            fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-            /* ../lib/standard/collection/array.nit:282 */
-            goto label19;
-            label19: while(0);
-            /* ../lib/standard/collection/array.nit:425 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
-            /* ../lib/standard/collection/array.nit:426 */
-            CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-          }
-          /* ../lib/standard/collection/array.nit:428 */
-          REGB2 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:245 */
-          REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-          /* ../lib/standard/collection/array.nit:428 */
-          REGB0 = REGB2;
-        } else {
-          /* ../lib/standard/collection/array.nit:413 */
-          goto label20;
-        }
-      }
-      label20: while(0);
-    }
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-      val_t OC_standard___collection___array___Array___sub_sort_11(struct stack_frame_t *closctx, val_t p0, val_t p1){
-        struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-        val_t REGB0;
-        val_t tmp;
-        /* ../lib/standard/collection/array.nit:409 */
-        fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-        fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 409;
-        fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
-        fra.me.has_broke = 0;
-        fra.me.REG_size = 2;
-        fra.me.nitni_local_ref_head = NULL;
-        fra.me.REG[0] = NIT_NULL;
-        fra.me.REG[1] = NIT_NULL;
-        fra.me.REG[0] = p0;
-        fra.me.REG[1] = p1;
-        REGB0 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], fra.me.REG[1]);
-        if (closctx->closure_ctx->has_broke) {
-          closctx->has_broke = 1;
-          goto label12;
-        }
-        goto label12;
-        label12: while(0);
-        stack_frame_head = fra.me.prev;
-        return REGB0;
-      }
-      val_t OC_standard___collection___array___Array___sub_sort_13(struct stack_frame_t *closctx, val_t p0, val_t p1){
-        struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-        val_t REGB0;
-        val_t tmp;
-        /* ../lib/standard/collection/array.nit:410 */
-        fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-        fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 410;
-        fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
-        fra.me.has_broke = 0;
-        fra.me.REG_size = 2;
-        fra.me.nitni_local_ref_head = NULL;
-        fra.me.REG[0] = NIT_NULL;
-        fra.me.REG[1] = NIT_NULL;
-        fra.me.REG[0] = p0;
-        fra.me.REG[1] = p1;
-        REGB0 = ((val_t (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], fra.me.REG[1]);
-        if (closctx->closure_ctx->has_broke) {
-          closctx->has_broke = 1;
-          goto label14;
-        }
-        goto label14;
-        label14: while(0);
-        stack_frame_head = fra.me.prev;
-        return REGB0;
-      }
-static const char LOCATE_standard___collection___array___ArrayIterator___item[] = "array::ArrayIterator::(abstract_collection::Iterator::item)";
-val_t standard___collection___array___ArrayIterator___item(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 438;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___item;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:438 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 438);
-  }
-  fra.me.REG[1] = ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]);
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 438);
-  }
-  REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___ArrayIterator___is_ok[] = "array::ArrayIterator::(abstract_collection::Iterator::is_ok)";
-val_t standard___collection___array___ArrayIterator___is_ok(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 442;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___is_ok;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:442 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 442);
-  }
-  REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 442);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:242 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:442 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___ArrayIterator___next[] = "array::ArrayIterator::(abstract_collection::Iterator::next)";
-void standard___collection___array___ArrayIterator___next(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 444;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___next;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:444 */
-  REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:245 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:444 */
-  ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB1;
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayIterator___init[] = "array::ArrayIterator::init";
-void standard___collection___array___ArrayIterator___init(val_t p0, val_t p1, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayIterator].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos7]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 446;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:448 */
-  ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ../lib/standard/collection/array.nit:449 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-  init_table[itpos7] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayIterator___index[] = "array::ArrayIterator::(abstract_collection::IndexedIterator::index)";
-val_t standard___collection___array___ArrayIterator___index(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 452;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___index;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:452 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 452);
-  }
-  REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArraySet___has[] = "array::ArraySet::(abstract_collection::Collection::has)";
-val_t standard___collection___array___ArraySet___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 465;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___has;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:465 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 465);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArraySet___add[] = "array::ArraySet::(abstract_collection::SimpleCollection::add)";
-void standard___collection___array___ArraySet___add(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 467;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___add;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:467 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 467);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 467);
-    }
-    fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___is_empty[] = "array::ArraySet::(abstract_collection::Collection::is_empty)";
-val_t standard___collection___array___ArraySet___is_empty(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 469;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___is_empty;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:469 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 469);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArraySet___length[] = "array::ArraySet::(abstract_collection::Collection::length)";
-val_t standard___collection___array___ArraySet___length(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 471;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:471 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 471);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:471 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArraySet___first[] = "array::ArraySet::(abstract_collection::Collection::first)";
-val_t standard___collection___array___ArraySet___first(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 473;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___first;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:475 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 475);
-  }
-  fra.me.REG[1] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:475 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:244 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:475 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___array, 475);
-  }
-  /* ../lib/standard/collection/array.nit:476 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 476);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArraySet___remove[] = "array::ArraySet::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___array___ArraySet___remove(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 479;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:481 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 481);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:482 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:482 */
-  if (UNTAG_Bool(REGB1)) {
-    CALL_standard___collection___array___ArraySet___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___remove_all[] = "array::ArraySet::(abstract_collection::RemovableCollection::remove_all)";
-void standard___collection___array___ArraySet___remove_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 485;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:485 */
-  CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___clear[] = "array::ArraySet::(abstract_collection::RemovableCollection::clear)";
-void standard___collection___array___ArraySet___clear(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 487;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:487 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 487);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___iterator[] = "array::ArraySet::(abstract_collection::Collection::iterator)";
-val_t standard___collection___array___ArraySet___iterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 489;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___iterator;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:489 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 489);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArraySet___enlarge[] = "array::ArraySet::enlarge";
-void standard___collection___array___ArraySet___enlarge(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 491;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___enlarge;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:492 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 492);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___remove_at[] = "array::ArraySet::remove_at";
-void standard___collection___array___ArraySet___remove_at(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 494;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_at;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:496 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 496);
-  }
-  fra.me.REG[1] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 496);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:497 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 497);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___init[] = "array::ArraySet::init";
-void standard___collection___array___ArraySet___init(val_t p0, int* init_table){
-  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArraySet].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  if (init_table[itpos8]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 500;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:501 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos8] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySet___with_capacity[] = "array::ArraySet::with_capacity";
-void standard___collection___array___ArraySet___with_capacity(val_t p0, val_t p1, int* init_table){
-  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArraySet].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  if (init_table[itpos9]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 503;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySet___with_capacity;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:504 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos9] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySetIterator___is_ok[] = "array::ArraySetIterator::(abstract_collection::Iterator::is_ok)";
-val_t standard___collection___array___ArraySetIterator___is_ok(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 511;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___is_ok;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:511 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 511);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArraySetIterator___next[] = "array::ArraySetIterator::(abstract_collection::Iterator::next)";
-void standard___collection___array___ArraySetIterator___next(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 513;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___next;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:513 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 513);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArraySetIterator___item[] = "array::ArraySetIterator::(abstract_collection::Iterator::item)";
-val_t standard___collection___array___ArraySetIterator___item(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 515;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___item;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:515 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 515);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArraySetIterator___init[] = "array::ArraySetIterator::init";
-void standard___collection___array___ArraySetIterator___init(val_t p0, val_t p1, int* init_table){
-  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArraySetIterator].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  if (init_table[itpos10]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 517;
-  fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:517 */
-  ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos10] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap_____bra[] = "array::ArrayMap::(abstract_collection::MapRead::[])";
-val_t standard___collection___array___ArrayMap_____bra(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 527;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____bra;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:530 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:531 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:531 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:532 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 532);
-    }
-    fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:281 */
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-      }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-      REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    } else {
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB2 = TAG_Bool(0);
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-    }
-    /* ../lib/standard/collection/array.nit:282 */
-    fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-    }
-    /* ../lib/standard/collection/array.nit:725 */
-    fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:282 */
-    goto label1;
-    label1: while(0);
-    /* ../lib/standard/collection/array.nit:532 */
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 532);
-    }
-    fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
-    goto label2;
-  } else {
-    /* ../lib/standard/collection/array.nit:534 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___array, 534);
-  }
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMap_____braeq[] = "array::ArrayMap::(abstract_collection::Map::[]=)";
-void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 538;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____braeq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* ../lib/standard/collection/array.nit:541 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:542 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:542 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:543 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 543);
-    }
-    fra.me.REG[3] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:281 */
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-      }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    } else {
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB2 = TAG_Bool(0);
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-    }
-    /* ../lib/standard/collection/array.nit:282 */
-    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-    }
-    /* ../lib/standard/collection/array.nit:725 */
-    fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:282 */
-    goto label1;
-    label1: while(0);
-    /* ../lib/standard/collection/array.nit:543 */
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 543);
-    }
-    CALL_standard___collection___abstract_collection___Couple___second__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  } else {
-    /* ../lib/standard/collection/array.nit:545 */
-    REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 545);
-    }
-    fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    fra.me.REG[2] = NEW_Couple_standard___collection___abstract_collection___Couple___init(fra.me.REG[1], fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___keys[] = "array::ArrayMap::(abstract_collection::MapRead::keys)";
-val_t standard___collection___array___ArrayMap___keys(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 549;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:549 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_standard___collection___array, 549);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMap___keys__eq[] = "array::ArrayMap::keys=";
-void standard___collection___array___ArrayMap___keys__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 549;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:549 */
-  ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___values[] = "array::ArrayMap::(abstract_collection::MapRead::values)";
-val_t standard___collection___array___ArrayMap___values(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 550;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:550 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@values", LOCATE_standard___collection___array, 550);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMap___values__eq[] = "array::ArrayMap::values=";
-void standard___collection___array___ArrayMap___values__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 550;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:550 */
-  ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___length[] = "array::ArrayMap::(abstract_collection::MapRead::length)";
-val_t standard___collection___array___ArrayMap___length(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 552;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:553 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 553);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:553 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___iterator[] = "array::ArrayMap::(abstract_collection::MapRead::iterator)";
-val_t standard___collection___array___ArrayMap___iterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 555;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___iterator;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:555 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 555);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMap___is_empty[] = "array::ArrayMap::(abstract_collection::MapRead::is_empty)";
-val_t standard___collection___array___ArrayMap___is_empty(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 557;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___is_empty;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:557 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 557);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___clear[] = "array::ArrayMap::(abstract_collection::Map::clear)";
-void standard___collection___array___ArrayMap___clear(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 559;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:559 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 559);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___enlarge[] = "array::ArrayMap::enlarge";
-void standard___collection___array___ArrayMap___enlarge(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 561;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___enlarge;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:562 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 562);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___couple_at[] = "array::ArrayMap::(abstract_collection::CoupleMap::couple_at)";
-val_t standard___collection___array___ArrayMap___couple_at(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 564;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___couple_at;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:566 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:567 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:567 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ../lib/standard/collection/array.nit:568 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 568);
-    }
-    fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB1 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:281 */
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-      }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-      REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    } else {
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB2 = TAG_Bool(0);
-      REGB1 = REGB2;
-    }
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-    }
-    /* ../lib/standard/collection/array.nit:282 */
-    fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-    }
-    /* ../lib/standard/collection/array.nit:725 */
-    fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ../lib/standard/collection/array.nit:282 */
-    goto label1;
-    label1: while(0);
-    /* ../lib/standard/collection/array.nit:568 */
-    goto label2;
-  } else {
-    /* ../lib/standard/collection/array.nit:570 */
-    fra.me.REG[0] = NIT_NULL;
-    goto label2;
-  }
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMap___remove_at_index[] = "array::ArrayMap::remove_at_index";
-void standard___collection___array___ArrayMap___remove_at_index(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 577;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove_at_index;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:580 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 580);
-  }
-  fra.me.REG[1] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 580);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:581 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 581);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___index[] = "array::ArrayMap::index";
-val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t REGB4;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 587;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___index;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:591 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_standard___collection___array, 591);
-  }
-  REGB0 = ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:592 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 592);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:242 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:592 */
-  if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 592);
-    }
-    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:279 */
-    REGB1 = REGB0;
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB2 = TAG_Int(0);
-    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:281 */
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-      }
-      REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    } else {
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB3 = TAG_Bool(0);
-      REGB2 = REGB3;
-    }
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-    }
-    /* ../lib/standard/collection/array.nit:282 */
-    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-    }
-    /* ../lib/standard/collection/array.nit:725 */
-    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-    /* ../lib/standard/collection/array.nit:282 */
-    goto label1;
-    label1: while(0);
-    /* ../lib/standard/collection/array.nit:592 */
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 592);
-    }
-    fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(0);
-        REGB1 = REGB2;
-      } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        REGB1 = REGB2;
-      }
-    }
-  } else {
-    REGB2 = TAG_Bool(0);
-    REGB1 = REGB2;
-  }
-  if (UNTAG_Bool(REGB1)) {
-    goto label2;
-  }
-  /* ../lib/standard/collection/array.nit:594 */
-  REGB1 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:595 */
-  while(1) {
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 595);
-    }
-    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ../lib/standard/collection/array.nit:24 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-    }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:595 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:596 */
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 596);
-      }
-      fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:279 */
-      REGB2 = REGB1;
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB3 = TAG_Int(0);
-      REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB4)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ../lib/standard/collection/array.nit:281 */
-      if (UNTAG_Bool(REGB3)) {
-        REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-        }
-        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB4)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-      } else {
-        /* ../lib/standard/collection/array.nit:281 */
-        REGB4 = TAG_Bool(0);
-        REGB3 = REGB4;
-      }
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-      }
-      /* ../lib/standard/collection/array.nit:282 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ../lib/standard/collection/array.nit:282 */
-      goto label3;
-      label3: while(0);
-      /* ../lib/standard/collection/array.nit:596 */
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 596);
-      }
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[2])(fra.me.REG[2]);
-      REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      if (UNTAG_Bool(REGB2)) {
-        /* ../lib/standard/collection/array.nit:597 */
-        ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB1;
-        /* ../lib/standard/collection/array.nit:598 */
-        REGB0 = REGB1;
-        goto label2;
-      }
-      /* ../lib/standard/collection/array.nit:600 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:600 */
-      REGB1 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:595 */
-      goto label4;
-    }
-  }
-  label4: while(0);
-  /* ../lib/standard/collection/array.nit:602 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:246 */
-  REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:602 */
-  REGB0 = REGB1;
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMap___init[] = "array::ArrayMap::init";
-void standard___collection___array___ArrayMap___init(val_t p0, int* init_table){
-  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMap].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  if (init_table[itpos11]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 605;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:608 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos11] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___map[] = "array::ArrayMapKeys::map";
-val_t standard___collection___array___ArrayMapKeys___map(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 614;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:614 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 614);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___map__eq[] = "array::ArrayMapKeys::map=";
-void standard___collection___array___ArrayMapKeys___map__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 614;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:614 */
-  ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___count[] = "array::ArrayMapKeys::(abstract_collection::Collection::count)";
-val_t standard___collection___array___ArrayMapKeys___count(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 616;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___count;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:616 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Int(1);
-    goto label1;
-  } else {
-    REGB1 = TAG_Int(0);
-    REGB0 = REGB1;
-    goto label1;
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___first[] = "array::ArrayMapKeys::(abstract_collection::Collection::first)";
-val_t standard___collection___array___ArrayMapKeys___first(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 617;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___first;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:617 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 617);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 617);
-  }
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___has[] = "array::ArrayMapKeys::(abstract_collection::Collection::has)";
-val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 618;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:618 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:618 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___has_only[] = "array::ArrayMapKeys::(abstract_collection::Collection::has_only)";
-val_t standard___collection___array___ArrayMapKeys___has_only(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 619;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has_only;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:619 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
-    REGB1 = TAG_Int(1);
-    REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      /* ../lib/standard/kernel.nit:237 */
-      REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ../lib/standard/collection/array.nit:619 */
-      REGB2 = REGB1;
-    }
-  } else {
-    REGB1 = TAG_Bool(0);
-    REGB2 = REGB1;
-  }
-  if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool(1);
-  } else {
-    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-    REGB2 = REGB1;
-  }
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB2;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___is_empty[] = "array::ArrayMapKeys::(abstract_collection::Collection::is_empty)";
-val_t standard___collection___array___ArrayMapKeys___is_empty(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 620;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___is_empty;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:620 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___length[] = "array::ArrayMapKeys::(abstract_collection::Collection::length)";
-val_t standard___collection___array___ArrayMapKeys___length(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 621;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:621 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___iterator[] = "array::ArrayMapKeys::(abstract_collection::Collection::iterator)";
-val_t standard___collection___array___ArrayMapKeys___iterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 622;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___iterator;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:622 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___clear[] = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::clear)";
-void standard___collection___array___ArrayMapKeys___clear(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 623;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:623 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Map___clear(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___remove[] = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___array___ArrayMapKeys___remove(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 624;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:626 */
-  fra.me.REG[2] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ../lib/standard/collection/array.nit:627 */
-  REGB1 = TAG_Int(0);
-  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-  }
-  /* ../lib/standard/kernel.nit:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:627 */
-  if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[0] = CALL_standard___collection___array___ArrayMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  }
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___remove_all[] = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::remove_all)";
-void standard___collection___array___ArrayMapKeys___remove_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 629;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:629 */
-  CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapKeys___init[] = "array::ArrayMapKeys::init";
-void standard___collection___array___ArrayMapKeys___init(val_t p0, val_t p1, int* init_table){
-  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMapKeys].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  if (init_table[itpos12]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos12] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___map[] = "array::ArrayMapValues::map";
-val_t standard___collection___array___ArrayMapValues___map(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 634;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:634 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 634);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___map__eq[] = "array::ArrayMapValues::map=";
-void standard___collection___array___ArrayMapValues___map__eq(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 634;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:634 */
-  ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___first[] = "array::ArrayMapValues::(abstract_collection::Collection::first)";
-val_t standard___collection___array___ArrayMapValues___first(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 636;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___first;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:636 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 636);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 636);
-  }
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___is_empty[] = "array::ArrayMapValues::(abstract_collection::Collection::is_empty)";
-val_t standard___collection___array___ArrayMapValues___is_empty(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 637;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___is_empty;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:637 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___length[] = "array::ArrayMapValues::(abstract_collection::Collection::length)";
-val_t standard___collection___array___ArrayMapValues___length(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 638;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:638 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___iterator[] = "array::ArrayMapValues::(abstract_collection::Collection::iterator)";
-val_t standard___collection___array___ArrayMapValues___iterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 639;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___iterator;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:639 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___has[] = "array::ArrayMapValues::(abstract_collection::Collection::has)";
-val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 641;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:644 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 644);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../lib/standard/collection/array.nit:24 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:644 */
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
-      REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(1);
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB0 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:645 */
-  REGB0 = TAG_Bool(0);
-  REGB1 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___has_only[] = "array::ArrayMapValues::(abstract_collection::Collection::has_only)";
-val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 648;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has_only;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:651 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 651);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../lib/standard/collection/array.nit:24 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:651 */
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
-      REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(0);
-        goto label1;
-      }
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB0 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ../lib/standard/collection/array.nit:652 */
-  REGB0 = TAG_Bool(1);
-  REGB1 = REGB0;
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___count[] = "array::ArrayMapValues::(abstract_collection::Collection::count)";
-val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 655;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___count;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:658 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:659 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 659);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB1 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB2)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 271);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../lib/standard/collection/array.nit:24 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-    }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB3)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-      /* ../lib/standard/collection/array.nit:659 */
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
-      REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(0);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:245 */
-        REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ../lib/standard/collection/array.nit:659 */
-        REGB0 = REGB2;
-      }
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB2 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB1 = REGB2;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:660 */
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___clear[] = "array::ArrayMapValues::(abstract_collection::RemovableCollection::clear)";
-void standard___collection___array___ArrayMapValues___clear(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 663;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:663 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Map___clear(fra.me.REG[0])(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___remove[] = "array::ArrayMapValues::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 665;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:667 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:668 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 668);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:668 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:669 */
-  while(1) {
-    REGB0 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:669 */
-    if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:670 */
-      REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 670);
-      }
-      fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:279 */
-      REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB2 = TAG_Int(0);
-      REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:281 */
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-        }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      } else {
-        /* ../lib/standard/collection/array.nit:281 */
-        REGB3 = TAG_Bool(0);
-        REGB2 = REGB3;
-      }
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-      }
-      /* ../lib/standard/collection/array.nit:282 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:282 */
-      goto label1;
-      label1: while(0);
-      /* ../lib/standard/collection/array.nit:670 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 670);
-      }
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
-      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB0 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB0 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:671 */
-        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
-        /* ../lib/standard/collection/array.nit:672 */
-        goto label2;
-      }
-      /* ../lib/standard/collection/array.nit:674 */
-      REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:674 */
-      REGB1 = REGB0;
-    } else {
-      /* ../lib/standard/collection/array.nit:669 */
-      goto label3;
-    }
-  }
-  label3: while(0);
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___remove_all[] = "array::ArrayMapValues::(abstract_collection::RemovableCollection::remove_all)";
-void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t REGB3;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 678;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove_all;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ../lib/standard/collection/array.nit:680 */
-  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:681 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 681);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:24 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
-  }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ../lib/standard/collection/array.nit:681 */
-  REGB1 = TAG_Int(1);
-  /* ../lib/standard/kernel.nit:247 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:682 */
-  while(1) {
-    REGB0 = TAG_Int(0);
-    REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:243 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ../lib/standard/collection/array.nit:682 */
-    if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:683 */
-      REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 683);
-      }
-      fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:279 */
-      REGB0 = REGB1;
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB2 = TAG_Int(0);
-      REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-      if (UNTAG_Bool(REGB3)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-      }
-      /* ../lib/standard/kernel.nit:243 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ../lib/standard/collection/array.nit:281 */
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-        } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 281);
-        }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-        }
-        /* ../lib/standard/kernel.nit:242 */
-        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      } else {
-        /* ../lib/standard/collection/array.nit:281 */
-        REGB3 = TAG_Bool(0);
-        REGB2 = REGB3;
-      }
-      if (UNTAG_Bool(REGB2)) {
-      } else {
-        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-      }
-      /* ../lib/standard/collection/array.nit:282 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 282);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ../lib/standard/collection/array.nit:282 */
-      goto label1;
-      label1: while(0);
-      /* ../lib/standard/collection/array.nit:683 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 683);
-      }
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
-      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(0);
-          REGB0 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB0 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB0)) {
-        /* ../lib/standard/collection/array.nit:684 */
-        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      }
-      /* ../lib/standard/collection/array.nit:686 */
-      REGB0 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:247 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ../lib/standard/collection/array.nit:686 */
-      REGB1 = REGB0;
-    } else {
-      /* ../lib/standard/collection/array.nit:682 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___ArrayMapValues___init[] = "array::ArrayMapValues::init";
-void standard___collection___array___ArrayMapValues___init(val_t p0, val_t p1, int* init_table){
-  int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMapValues].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  if (init_table[itpos13]) return;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  init_table[itpos13] = 1;
-  return;
-}
-static const char LOCATE_standard___collection___array___Iterator___to_a[] = "array::Iterator::to_a";
-val_t standard___collection___array___Iterator___to_a(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 695;
-  fra.me.meth = LOCATE_standard___collection___array___Iterator___to_a;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:698 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ../lib/standard/collection/array.nit:699 */
-  while(1) {
-    REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
-    if (UNTAG_Bool(REGB0)) {
-      /* ../lib/standard/collection/array.nit:700 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ../lib/standard/collection/array.nit:701 */
-      CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
-    } else {
-      /* ../lib/standard/collection/array.nit:699 */
-      goto label1;
-    }
-  }
-  label1: while(0);
-  /* ../lib/standard/collection/array.nit:703 */
-  goto label2;
-  label2: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-static const char LOCATE_standard___collection___array___Collection___to_a[] = "array::Collection::to_a";
-val_t standard___collection___array___Collection___to_a(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 708;
-  fra.me.meth = LOCATE_standard___collection___array___Collection___to_a;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ../lib/standard/collection/array.nit:711 */
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___collection___array___Iterator___to_a(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___ArrayCapable___calloc_array[] = "array::ArrayCapable::calloc_array";
-val_t standard___collection___array___ArrayCapable___calloc_array(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 719;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayCapable___calloc_array;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:719 */
-  fra.me.REG[0] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___NativeArray_____bra[] = "array::NativeArray::[]";
-val_t standard___collection___array___NativeArray_____bra(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 725;
-  fra.me.meth = LOCATE_standard___collection___array___NativeArray_____bra;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ../lib/standard/collection/array.nit:725 */
-  fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-static const char LOCATE_standard___collection___array___NativeArray_____braeq[] = "array::NativeArray::[]=";
-void standard___collection___array___NativeArray_____braeq(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 726;
-  fra.me.meth = LOCATE_standard___collection___array___NativeArray_____braeq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  fra.me.REG[1] = p2;
-  /* ../lib/standard/collection/array.nit:726 */
-  ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_standard___collection___array___NativeArray___copy_to[] = "array::NativeArray::copy_to";
-void standard___collection___array___NativeArray___copy_to(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 727;
-  fra.me.meth = LOCATE_standard___collection___array___NativeArray___copy_to;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.nitni_local_ref_head = NULL;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  REGB0 = p2;
-  /* ../lib/standard/collection/array.nit:727 */
-  (void)memcpy(((Nit_NativeArray )fra.me.REG[1])->val, ((Nit_NativeArray)fra.me.REG[0])->val, UNTAG_Int(REGB0)*sizeof(val_t));
-  stack_frame_head = fra.me.prev;
-  return;
-}