-#define ID_AbstractArray SFT_array[0]
-#define COLOR_AbstractArray SFT_array[1]
-#define COLOR_array___AbstractArray____length SFT_array[2]
-#define INIT_TABLE_POS_AbstractArray SFT_array[3]
-#define COLOR_array___AbstractArray___enlarge SFT_array[4]
-#define COLOR_array___AbstractArray___insert SFT_array[5]
-#define COLOR_array___AbstractArray___last_index_of SFT_array[6]
-#define COLOR_array___AbstractArray___index_of_from SFT_array[7]
-#define COLOR_array___AbstractArray___last_index_of_from SFT_array[8]
-#define COLOR_array___AbstractArray___reversed SFT_array[9]
-#define COLOR_array___AbstractArray___copy_to SFT_array[10]
-#define COLOR_array___AbstractArray___init SFT_array[11]
-#define ID_Array SFT_array[12]
-#define COLOR_Array SFT_array[13]
-#define COLOR_array___Array____items SFT_array[14]
-#define COLOR_array___Array____capacity SFT_array[15]
-#define INIT_TABLE_POS_Array SFT_array[16]
-#define COLOR_array___Array___init SFT_array[17]
-#define COLOR_array___Array___with SFT_array[18]
-#define COLOR_array___Array___with_capacity SFT_array[19]
-#define COLOR_array___Array___filled_with SFT_array[20]
-#define COLOR_array___Array___with_native SFT_array[21]
-#define ID_ArrayIterator SFT_array[22]
-#define COLOR_ArrayIterator SFT_array[23]
-#define COLOR_array___ArrayIterator____index SFT_array[24]
-#define COLOR_array___ArrayIterator____array SFT_array[25]
-#define INIT_TABLE_POS_ArrayIterator SFT_array[26]
-#define COLOR_array___ArrayIterator___init SFT_array[27]
-#define ID_ArraySet SFT_array[28]
-#define COLOR_ArraySet SFT_array[29]
-#define COLOR_array___ArraySet____array SFT_array[30]
-#define INIT_TABLE_POS_ArraySet SFT_array[31]
-#define COLOR_array___ArraySet___enlarge SFT_array[32]
-#define COLOR_array___ArraySet___remove_at SFT_array[33]
-#define COLOR_array___ArraySet___init SFT_array[34]
-#define COLOR_array___ArraySet___with_capacity SFT_array[35]
-#define ID_ArraySetIterator SFT_array[36]
-#define COLOR_ArraySetIterator SFT_array[37]
-#define COLOR_array___ArraySetIterator____iter SFT_array[38]
-#define INIT_TABLE_POS_ArraySetIterator SFT_array[39]
-#define COLOR_array___ArraySetIterator___init SFT_array[40]
-#define ID_ArrayMap SFT_array[41]
-#define COLOR_ArrayMap SFT_array[42]
-#define COLOR_array___ArrayMap____items SFT_array[43]
-#define COLOR_array___ArrayMap____last_index SFT_array[44]
-#define INIT_TABLE_POS_ArrayMap SFT_array[45]
-#define COLOR_array___ArrayMap___enlarge SFT_array[46]
-#define COLOR_array___ArrayMap___remove_at_index SFT_array[47]
-#define COLOR_array___ArrayMap___index SFT_array[48]
-#define COLOR_array___ArrayMap___init SFT_array[49]
-#define COLOR_array___Iterator___to_a SFT_array[50]
-#define COLOR_array___Collection___to_a SFT_array[51]
-#define ID_ArrayCapable SFT_array[52]
-#define COLOR_ArrayCapable SFT_array[53]
-#define INIT_TABLE_POS_ArrayCapable SFT_array[54]
-#define COLOR_array___ArrayCapable___calloc_array SFT_array[55]
-#define ID_NativeArray SFT_array[56]
-#define COLOR_NativeArray SFT_array[57]
-#define INIT_TABLE_POS_NativeArray SFT_array[58]
-#define COLOR_array___NativeArray_____bra SFT_array[59]
-#define COLOR_array___NativeArray_____braeq SFT_array[60]
-#define COLOR_array___NativeArray___copy_to SFT_array[61]
-typedef void (* array___AbstractArray___enlarge_t)(val_t self, val_t param0);
-void array___AbstractArray___enlarge(val_t self, val_t param0);
-#define LOCATE_array___AbstractArray___enlarge "array::AbstractArray::enlarge"
-#define ATTR_array___AbstractArray____length(recv) ATTR(recv, COLOR_array___AbstractArray____length)
-typedef val_t (* array___AbstractArray___length_t)(val_t self);
-val_t array___AbstractArray___length(val_t self);
-#define LOCATE_array___AbstractArray___length "array::AbstractArray::(abstract_collection::Collection::length)"
-typedef val_t (* array___AbstractArray___is_empty_t)(val_t self);
-val_t array___AbstractArray___is_empty(val_t self);
-#define LOCATE_array___AbstractArray___is_empty "array::AbstractArray::(abstract_collection::Collection::is_empty)"
-typedef void (* array___AbstractArray___push_t)(val_t self, val_t param0);
-void array___AbstractArray___push(val_t self, val_t param0);
-#define LOCATE_array___AbstractArray___push "array::AbstractArray::(abstract_collection::IndexedCollection::push)"
-typedef val_t (* array___AbstractArray___pop_t)(val_t self);
-val_t array___AbstractArray___pop(val_t self);
-#define LOCATE_array___AbstractArray___pop "array::AbstractArray::(abstract_collection::IndexedCollection::pop)"
-typedef val_t (* array___AbstractArray___shift_t)(val_t self);
-val_t array___AbstractArray___shift(val_t self);
-#define LOCATE_array___AbstractArray___shift "array::AbstractArray::(abstract_collection::IndexedCollection::shift)"
-typedef void (* array___AbstractArray___unshift_t)(val_t self, val_t param0);
-void array___AbstractArray___unshift(val_t self, val_t param0);
-#define LOCATE_array___AbstractArray___unshift "array::AbstractArray::(abstract_collection::IndexedCollection::unshift)"
-typedef void (* array___AbstractArray___insert_t)(val_t self, val_t param0, val_t param1);
-void array___AbstractArray___insert(val_t self, val_t param0, val_t param1);
-#define LOCATE_array___AbstractArray___insert "array::AbstractArray::insert"
-typedef void (* array___AbstractArray___add_t)(val_t self, val_t param0);
-void array___AbstractArray___add(val_t self, val_t param0);
-#define LOCATE_array___AbstractArray___add "array::AbstractArray::(abstract_collection::SimpleCollection::add)"
-typedef void (* array___AbstractArray___clear_t)(val_t self);
-void array___AbstractArray___clear(val_t self);
+#define ID_AbstractArrayRead (SFT_array[0])
+#define COLOR_AbstractArrayRead (SFT_array[1])
+#define ATTR_array___AbstractArrayRead____length(recv) ATTR(recv, (SFT_array[2] + 0))
+#define INIT_TABLE_POS_AbstractArrayRead (SFT_array[3] + 0)
+#define CALL_array___AbstractArrayRead___last_index_of(recv) ((array___AbstractArrayRead___last_index_of_t)CALL((recv), (SFT_array[3] + 1)))
+#define CALL_array___AbstractArrayRead___index_of_from(recv) ((array___AbstractArrayRead___index_of_from_t)CALL((recv), (SFT_array[3] + 2)))
+#define CALL_array___AbstractArrayRead___last_index_of_from(recv) ((array___AbstractArrayRead___last_index_of_from_t)CALL((recv), (SFT_array[3] + 3)))
+#define CALL_array___AbstractArrayRead___reversed(recv) ((array___AbstractArrayRead___reversed_t)CALL((recv), (SFT_array[3] + 4)))
+#define CALL_array___AbstractArrayRead___copy_to(recv) ((array___AbstractArrayRead___copy_to_t)CALL((recv), (SFT_array[3] + 5)))
+#define CALL_array___AbstractArrayRead___init(recv) ((array___AbstractArrayRead___init_t)CALL((recv), (SFT_array[3] + 6)))
+#define ID_AbstractArray (SFT_array[4])
+#define COLOR_AbstractArray (SFT_array[5])
+#define INIT_TABLE_POS_AbstractArray (SFT_array[6] + 0)
+#define CALL_array___AbstractArray___enlarge(recv) ((array___AbstractArray___enlarge_t)CALL((recv), (SFT_array[6] + 1)))
+#define CALL_array___AbstractArray___insert(recv) ((array___AbstractArray___insert_t)CALL((recv), (SFT_array[6] + 2)))
+#define ID_Array (SFT_array[7])
+#define COLOR_Array (SFT_array[8])
+#define ATTR_array___Array____items(recv) ATTR(recv, (SFT_array[9] + 0))
+#define ATTR_array___Array____capacity(recv) ATTR(recv, (SFT_array[9] + 1))
+#define INIT_TABLE_POS_Array (SFT_array[10] + 0)
+#define CALL_array___Array___init(recv) ((array___Array___init_t)CALL((recv), (SFT_array[10] + 1)))
+#define CALL_array___Array___with_items(recv) ((array___Array___with_items_t)CALL((recv), (SFT_array[10] + 2)))
+#define CALL_array___Array___with_capacity(recv) ((array___Array___with_capacity_t)CALL((recv), (SFT_array[10] + 3)))
+#define CALL_array___Array___filled_with(recv) ((array___Array___filled_with_t)CALL((recv), (SFT_array[10] + 4)))
+#define CALL_array___Array___with_native(recv) ((array___Array___with_native_t)CALL((recv), (SFT_array[10] + 5)))
+#define CALL_array___Array___intern_items(recv) ((array___Array___intern_items_t)CALL((recv), (SFT_array[10] + 6)))
+#define ID_ArrayIterator (SFT_array[11])
+#define COLOR_ArrayIterator (SFT_array[12])
+#define ATTR_array___ArrayIterator____index(recv) ATTR(recv, (SFT_array[13] + 0))
+#define ATTR_array___ArrayIterator____array(recv) ATTR(recv, (SFT_array[13] + 1))
+#define INIT_TABLE_POS_ArrayIterator (SFT_array[14] + 0)
+#define CALL_array___ArrayIterator___init(recv) ((array___ArrayIterator___init_t)CALL((recv), (SFT_array[14] + 1)))
+#define ID_ArraySet (SFT_array[15])
+#define COLOR_ArraySet (SFT_array[16])
+#define ATTR_array___ArraySet____array(recv) ATTR(recv, (SFT_array[17] + 0))
+#define INIT_TABLE_POS_ArraySet (SFT_array[18] + 0)
+#define CALL_array___ArraySet___enlarge(recv) ((array___ArraySet___enlarge_t)CALL((recv), (SFT_array[18] + 1)))
+#define CALL_array___ArraySet___remove_at(recv) ((array___ArraySet___remove_at_t)CALL((recv), (SFT_array[18] + 2)))
+#define CALL_array___ArraySet___init(recv) ((array___ArraySet___init_t)CALL((recv), (SFT_array[18] + 3)))
+#define CALL_array___ArraySet___with_capacity(recv) ((array___ArraySet___with_capacity_t)CALL((recv), (SFT_array[18] + 4)))
+#define ID_ArraySetIterator (SFT_array[19])
+#define COLOR_ArraySetIterator (SFT_array[20])
+#define ATTR_array___ArraySetIterator____iter(recv) ATTR(recv, (SFT_array[21] + 0))
+#define INIT_TABLE_POS_ArraySetIterator (SFT_array[22] + 0)
+#define CALL_array___ArraySetIterator___init(recv) ((array___ArraySetIterator___init_t)CALL((recv), (SFT_array[22] + 1)))
+#define ID_ArrayMap (SFT_array[23])
+#define COLOR_ArrayMap (SFT_array[24])
+#define ATTR_array___ArrayMap____items(recv) ATTR(recv, (SFT_array[25] + 0))
+#define ATTR_array___ArrayMap____last_index(recv) ATTR(recv, (SFT_array[25] + 1))
+#define INIT_TABLE_POS_ArrayMap (SFT_array[26] + 0)
+#define CALL_array___ArrayMap___enlarge(recv) ((array___ArrayMap___enlarge_t)CALL((recv), (SFT_array[26] + 1)))
+#define CALL_array___ArrayMap___remove_at_index(recv) ((array___ArrayMap___remove_at_index_t)CALL((recv), (SFT_array[26] + 2)))
+#define CALL_array___ArrayMap___index(recv) ((array___ArrayMap___index_t)CALL((recv), (SFT_array[26] + 3)))
+#define CALL_array___ArrayMap___init(recv) ((array___ArrayMap___init_t)CALL((recv), (SFT_array[26] + 4)))
+#define CALL_array___Iterator___to_a(recv) ((array___Iterator___to_a_t)CALL((recv), (SFT_array[27] + 0)))
+#define CALL_array___Collection___to_a(recv) ((array___Collection___to_a_t)CALL((recv), (SFT_array[28] + 0)))
+#define ID_ArrayCapable (SFT_array[29])
+#define COLOR_ArrayCapable (SFT_array[30])
+#define INIT_TABLE_POS_ArrayCapable (SFT_array[31] + 0)
+#define CALL_array___ArrayCapable___calloc_array(recv) ((array___ArrayCapable___calloc_array_t)CALL((recv), (SFT_array[31] + 1)))
+#define ID_NativeArray (SFT_array[32])
+#define COLOR_NativeArray (SFT_array[33])
+#define INIT_TABLE_POS_NativeArray (SFT_array[34] + 0)
+#define CALL_array___NativeArray_____bra(recv) ((array___NativeArray_____bra_t)CALL((recv), (SFT_array[34] + 1)))
+#define CALL_array___NativeArray_____braeq(recv) ((array___NativeArray_____braeq_t)CALL((recv), (SFT_array[34] + 2)))
+#define CALL_array___NativeArray___copy_to(recv) ((array___NativeArray___copy_to_t)CALL((recv), (SFT_array[34] + 3)))
+#define LOCATE_array___AbstractArrayRead_____eqeq "array::AbstractArrayRead::(kernel::Object::==)"
+val_t array___AbstractArrayRead_____eqeq(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead_____eqeq_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___output "array::AbstractArrayRead::(kernel::Object::output)"
+void array___AbstractArrayRead___output(val_t p0);
+typedef void (*array___AbstractArrayRead___output_t)(val_t p0);
+#define LOCATE_array___AbstractArrayRead___iterator "array::AbstractArrayRead::(abstract_collection::Collection::iterator)"
+val_t array___AbstractArrayRead___iterator(val_t p0);
+typedef val_t (*array___AbstractArrayRead___iterator_t)(val_t p0);
+#define LOCATE_array___AbstractArrayRead___is_empty "array::AbstractArrayRead::(abstract_collection::Collection::is_empty)"
+val_t array___AbstractArrayRead___is_empty(val_t p0);
+typedef val_t (*array___AbstractArrayRead___is_empty_t)(val_t p0);
+#define LOCATE_array___AbstractArrayRead___length "array::AbstractArrayRead::(abstract_collection::Collection::length)"
+val_t array___AbstractArrayRead___length(val_t p0);
+typedef val_t (*array___AbstractArrayRead___length_t)(val_t p0);
+#define LOCATE_array___AbstractArrayRead___has "array::AbstractArrayRead::(abstract_collection::Collection::has)"
+val_t array___AbstractArrayRead___has(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___has_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___has_only "array::AbstractArrayRead::(abstract_collection::Collection::has_only)"
+val_t array___AbstractArrayRead___has_only(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___has_only_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___count "array::AbstractArrayRead::(abstract_collection::Collection::count)"
+val_t array___AbstractArrayRead___count(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___count_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___has_key "array::AbstractArrayRead::(abstract_collection::MapRead::has_key)"
+val_t array___AbstractArrayRead___has_key(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___has_key_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___index_of "array::AbstractArrayRead::(abstract_collection::SequenceRead::index_of)"
+val_t array___AbstractArrayRead___index_of(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___index_of_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___last_index_of "array::AbstractArrayRead::last_index_of"
+val_t array___AbstractArrayRead___last_index_of(val_t p0, val_t p1);
+typedef val_t (*array___AbstractArrayRead___last_index_of_t)(val_t p0, val_t p1);
+#define LOCATE_array___AbstractArrayRead___index_of_from "array::AbstractArrayRead::index_of_from"
+val_t array___AbstractArrayRead___index_of_from(val_t p0, val_t p1, val_t p2);
+typedef val_t (*array___AbstractArrayRead___index_of_from_t)(val_t p0, val_t p1, val_t p2);
+#define LOCATE_array___AbstractArrayRead___last_index_of_from "array::AbstractArrayRead::last_index_of_from"
+val_t array___AbstractArrayRead___last_index_of_from(val_t p0, val_t p1, val_t p2);
+typedef val_t (*array___AbstractArrayRead___last_index_of_from_t)(val_t p0, val_t p1, val_t p2);
+#define LOCATE_array___AbstractArrayRead___reversed "array::AbstractArrayRead::reversed"
+val_t array___AbstractArrayRead___reversed(val_t p0);
+typedef val_t (*array___AbstractArrayRead___reversed_t)(val_t p0);
+#define LOCATE_array___AbstractArrayRead___copy_to "array::AbstractArrayRead::copy_to"
+void array___AbstractArrayRead___copy_to(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef void (*array___AbstractArrayRead___copy_to_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+#define LOCATE_array___AbstractArrayRead___init "array::AbstractArrayRead::init"
+void array___AbstractArrayRead___init(val_t p0, int* init_table);
+typedef void (*array___AbstractArrayRead___init_t)(val_t p0, int* init_table);
+val_t NEW_AbstractArrayRead_array___AbstractArrayRead___init();
+val_t NEW_AbstractArray_array___AbstractArrayRead___init();