text:
/* 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;
}