update NOTICE and LICENSE
[nit.git] / c_src / array._sep.h
index 0ec2326..fb5ad23 100644 (file)
@@ -4,6 +4,8 @@
 #include "abstract_collection._sep.h"
 #include <nit_common.h>
 
+extern const classtable_elt_t VFT_AbstractArrayRead[];
+
 extern const classtable_elt_t VFT_AbstractArray[];
 
 extern const classtable_elt_t VFT_Array[];
@@ -19,335 +21,356 @@ extern const classtable_elt_t VFT_ArrayMap[];
 extern const classtable_elt_t VFT_ArrayCapable[];
 
 extern const classtable_elt_t VFT_NativeArray[];
-struct TBOX_NativeArray { const classtable_elt_t * vft; val_t * val;};
-val_t BOX_NativeArray(val_t * val);
-#define UNBOX_NativeArray(x) (((struct TBOX_NativeArray *)(VAL2OBJ(x)))->val)
 extern const char *LOCATE_array;
 extern const int SFT_array[];
-#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 ID_Array SFT_array[11]
-#define COLOR_Array SFT_array[12]
-#define COLOR_array___Array____items SFT_array[13]
-#define COLOR_array___Array____capacity SFT_array[14]
-#define INIT_TABLE_POS_Array SFT_array[15]
-#define COLOR_array___Array___init SFT_array[16]
-#define COLOR_array___Array___with SFT_array[17]
-#define COLOR_array___Array___with_capacity SFT_array[18]
-#define COLOR_array___Array___filled_with SFT_array[19]
-#define COLOR_array___Array___with_native SFT_array[20]
-#define ID_ArrayIterator SFT_array[21]
-#define COLOR_ArrayIterator SFT_array[22]
-#define COLOR_array___ArrayIterator____index SFT_array[23]
-#define COLOR_array___ArrayIterator____array SFT_array[24]
-#define INIT_TABLE_POS_ArrayIterator SFT_array[25]
-#define COLOR_array___ArrayIterator___init SFT_array[26]
-#define ID_ArraySet SFT_array[27]
-#define COLOR_ArraySet SFT_array[28]
-#define COLOR_array___ArraySet____array SFT_array[29]
-#define INIT_TABLE_POS_ArraySet SFT_array[30]
-#define COLOR_array___ArraySet___enlarge SFT_array[31]
-#define COLOR_array___ArraySet___remove_at SFT_array[32]
-#define COLOR_array___ArraySet___init SFT_array[33]
-#define COLOR_array___ArraySet___with_capacity SFT_array[34]
-#define ID_ArraySetIterator SFT_array[35]
-#define COLOR_ArraySetIterator SFT_array[36]
-#define COLOR_array___ArraySetIterator____iter SFT_array[37]
-#define INIT_TABLE_POS_ArraySetIterator SFT_array[38]
-#define COLOR_array___ArraySetIterator___init SFT_array[39]
-#define ID_ArrayMap SFT_array[40]
-#define COLOR_ArrayMap SFT_array[41]
-#define COLOR_array___ArrayMap____items SFT_array[42]
-#define COLOR_array___ArrayMap____last_index SFT_array[43]
-#define INIT_TABLE_POS_ArrayMap SFT_array[44]
-#define COLOR_array___ArrayMap___enlarge SFT_array[45]
-#define COLOR_array___ArrayMap___remove_at_index SFT_array[46]
-#define COLOR_array___ArrayMap___index SFT_array[47]
-#define COLOR_array___ArrayMap___init SFT_array[48]
-#define COLOR_array___Iterator___to_a SFT_array[49]
-#define COLOR_array___Collection___to_a SFT_array[50]
-#define ID_ArrayCapable SFT_array[51]
-#define COLOR_ArrayCapable SFT_array[52]
-#define INIT_TABLE_POS_ArrayCapable SFT_array[53]
-#define COLOR_array___ArrayCapable___calloc_array SFT_array[54]
-#define ID_NativeArray SFT_array[55]
-#define COLOR_NativeArray SFT_array[56]
-#define INIT_TABLE_POS_NativeArray SFT_array[57]
-#define COLOR_array___NativeArray_____bra SFT_array[58]
-#define COLOR_array___NativeArray_____braeq SFT_array[59]
-#define COLOR_array___NativeArray___copy_to SFT_array[60]
-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 LOCATE_array___AbstractArray___clear "array::AbstractArray::(abstract_collection::RemovableCollection::clear)"
-typedef val_t (* array___AbstractArray___has_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___has(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___has "array::AbstractArray::(abstract_collection::Collection::has)"
-typedef val_t (* array___AbstractArray___has_only_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___has_only(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___has_only "array::AbstractArray::(abstract_collection::Collection::has_only)"
-typedef val_t (* array___AbstractArray___has_key_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___has_key(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___has_key "array::AbstractArray::(abstract_collection::Map::has_key)"
-typedef val_t (* array___AbstractArray___count_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___count(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___count "array::AbstractArray::(abstract_collection::Collection::count)"
-typedef val_t (* array___AbstractArray___index_of_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___index_of(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___index_of "array::AbstractArray::(abstract_collection::IndexedCollection::index_of)"
-typedef val_t (* array___AbstractArray___last_index_of_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray___last_index_of(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___last_index_of "array::AbstractArray::last_index_of"
-typedef val_t (* array___AbstractArray___index_of_from_t)(val_t  self, val_t  param0, val_t  param1);
-val_t array___AbstractArray___index_of_from(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___AbstractArray___index_of_from "array::AbstractArray::index_of_from"
-typedef val_t (* array___AbstractArray___last_index_of_from_t)(val_t  self, val_t  param0, val_t  param1);
-val_t array___AbstractArray___last_index_of_from(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___AbstractArray___last_index_of_from "array::AbstractArray::last_index_of_from"
-typedef val_t (* array___AbstractArray___reversed_t)(val_t  self);
-val_t array___AbstractArray___reversed(val_t  self);
-#define LOCATE_array___AbstractArray___reversed "array::AbstractArray::reversed"
-typedef void (* array___AbstractArray___remove_t)(val_t  self, val_t  param0);
-void array___AbstractArray___remove(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___remove "array::AbstractArray::(abstract_collection::RemovableCollection::remove)"
-typedef void (* array___AbstractArray___remove_all_t)(val_t  self, val_t  param0);
-void array___AbstractArray___remove_all(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___remove_all "array::AbstractArray::(abstract_collection::RemovableCollection::remove_all)"
-typedef void (* array___AbstractArray___remove_at_t)(val_t  self, val_t  param0);
-void array___AbstractArray___remove_at(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray___remove_at "array::AbstractArray::(abstract_collection::Map::remove_at)"
-typedef void (* array___AbstractArray___copy_to_t)(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3);
-void array___AbstractArray___copy_to(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3);
-#define LOCATE_array___AbstractArray___copy_to "array::AbstractArray::copy_to"
-typedef void (* array___AbstractArray___output_t)(val_t  self);
-void array___AbstractArray___output(val_t  self);
-#define LOCATE_array___AbstractArray___output "array::AbstractArray::(kernel::Object::output)"
-typedef val_t (* array___AbstractArray___iterator_t)(val_t  self);
-val_t array___AbstractArray___iterator(val_t  self);
-#define LOCATE_array___AbstractArray___iterator "array::AbstractArray::(abstract_collection::Collection::iterator)"
-typedef val_t (* array___AbstractArray_____eqeq_t)(val_t  self, val_t  param0);
-val_t array___AbstractArray_____eqeq(val_t  self, val_t  param0);
-#define LOCATE_array___AbstractArray_____eqeq "array::AbstractArray::(kernel::Object::==)"
-typedef val_t (* array___Array_____bra_t)(val_t  self, val_t  param0);
-val_t array___Array_____bra(val_t  self, val_t  param0);
-#define LOCATE_array___Array_____bra "array::Array::(abstract_collection::Map::[])"
-typedef void (* array___Array_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
-void array___Array_____braeq(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___Array_____braeq "array::Array::(abstract_collection::Map::[]=)"
-typedef void (* array___Array___enlarge_t)(val_t  self, val_t  param0);
-void array___Array___enlarge(val_t  self, val_t  param0);
-#define LOCATE_array___Array___enlarge "array::Array::(array::AbstractArray::enlarge)"
-typedef void (* array___Array___init_t)(val_t  self, int* init_table);
-void array___Array___init(val_t  self, int* init_table);
-val_t NEW_array___Array___init();
-#define LOCATE_array___Array___init "array::Array::init"
-typedef void (* array___Array___with_t)(val_t  self, val_t  param0, int* init_table);
-void array___Array___with(val_t  self, val_t  param0, int* init_table);
-val_t NEW_array___Array___with(val_t  param0);
-#define LOCATE_array___Array___with "array::Array::with"
-typedef void (* array___Array___with_capacity_t)(val_t  self, val_t  param0, int* init_table);
-void array___Array___with_capacity(val_t  self, val_t  param0, int* init_table);
-val_t NEW_array___Array___with_capacity(val_t  param0);
-#define LOCATE_array___Array___with_capacity "array::Array::with_capacity"
-typedef void (* array___Array___filled_with_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
-void array___Array___filled_with(val_t  self, val_t  param0, val_t  param1, int* init_table);
-val_t NEW_array___Array___filled_with(val_t  param0, val_t  param1);
-#define LOCATE_array___Array___filled_with "array::Array::filled_with"
-typedef void (* array___Array___with_native_t)(val_t  self, val_t  param0, val_t  param1, int* init_table);
-void array___Array___with_native(val_t  self, val_t  param0, val_t  param1, int* init_table);
-val_t NEW_array___Array___with_native(val_t  param0, val_t  param1);
-#define LOCATE_array___Array___with_native "array::Array::with_native"
-#define ATTR_array___Array____items(recv) ATTR(recv, COLOR_array___Array____items)
-#define ATTR_array___Array____capacity(recv) ATTR(recv, COLOR_array___Array____capacity)
-typedef val_t (* array___ArrayIterator___item_t)(val_t  self);
-val_t array___ArrayIterator___item(val_t  self);
-#define LOCATE_array___ArrayIterator___item "array::ArrayIterator::(abstract_collection::Iterator::item)"
-typedef void (* array___ArrayIterator___item__eq_t)(val_t  self, val_t  param0);
-void array___ArrayIterator___item__eq(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayIterator___item__eq "array::ArrayIterator::(abstract_collection::MapIterator::item=)"
-typedef val_t (* array___ArrayIterator___is_ok_t)(val_t  self);
-val_t array___ArrayIterator___is_ok(val_t  self);
-#define LOCATE_array___ArrayIterator___is_ok "array::ArrayIterator::(abstract_collection::Iterator::is_ok)"
-typedef void (* array___ArrayIterator___next_t)(val_t  self);
-void array___ArrayIterator___next(val_t  self);
-#define LOCATE_array___ArrayIterator___next "array::ArrayIterator::(abstract_collection::Iterator::next)"
-typedef void (* array___ArrayIterator___init_t)(val_t  self, val_t  param0, int* init_table);
-void array___ArrayIterator___init(val_t  self, val_t  param0, int* init_table);
-val_t NEW_array___ArrayIterator___init(val_t  param0);
-#define LOCATE_array___ArrayIterator___init "array::ArrayIterator::init"
-#define ATTR_array___ArrayIterator____index(recv) ATTR(recv, COLOR_array___ArrayIterator____index)
-typedef val_t (* array___ArrayIterator___index_t)(val_t  self);
-val_t array___ArrayIterator___index(val_t  self);
-#define LOCATE_array___ArrayIterator___index "array::ArrayIterator::(abstract_collection::IndexedIterator::index)"
-#define ATTR_array___ArrayIterator____array(recv) ATTR(recv, COLOR_array___ArrayIterator____array)
-#define ATTR_array___ArraySet____array(recv) ATTR(recv, COLOR_array___ArraySet____array)
-typedef val_t (* array___ArraySet___has_t)(val_t  self, val_t  param0);
-val_t array___ArraySet___has(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___has "array::ArraySet::(abstract_collection::Collection::has)"
-typedef void (* array___ArraySet___add_t)(val_t  self, val_t  param0);
-void array___ArraySet___add(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___add "array::ArraySet::(abstract_collection::SimpleCollection::add)"
-typedef val_t (* array___ArraySet___is_empty_t)(val_t  self);
-val_t array___ArraySet___is_empty(val_t  self);
-#define LOCATE_array___ArraySet___is_empty "array::ArraySet::(abstract_collection::Collection::is_empty)"
-typedef val_t (* array___ArraySet___length_t)(val_t  self);
-val_t array___ArraySet___length(val_t  self);
-#define LOCATE_array___ArraySet___length "array::ArraySet::(abstract_collection::Collection::length)"
-typedef val_t (* array___ArraySet___first_t)(val_t  self);
-val_t array___ArraySet___first(val_t  self);
-#define LOCATE_array___ArraySet___first "array::ArraySet::(abstract_collection::Collection::first)"
-typedef void (* array___ArraySet___remove_t)(val_t  self, val_t  param0);
-void array___ArraySet___remove(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___remove "array::ArraySet::(abstract_collection::RemovableCollection::remove)"
-typedef void (* array___ArraySet___remove_all_t)(val_t  self, val_t  param0);
-void array___ArraySet___remove_all(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___remove_all "array::ArraySet::(abstract_collection::RemovableCollection::remove_all)"
-typedef void (* array___ArraySet___clear_t)(val_t  self);
-void array___ArraySet___clear(val_t  self);
-#define LOCATE_array___ArraySet___clear "array::ArraySet::(abstract_collection::RemovableCollection::clear)"
-typedef val_t (* array___ArraySet___iterator_t)(val_t  self);
-val_t array___ArraySet___iterator(val_t  self);
-#define LOCATE_array___ArraySet___iterator "array::ArraySet::(abstract_collection::Collection::iterator)"
-typedef void (* array___ArraySet___enlarge_t)(val_t  self, val_t  param0);
-void array___ArraySet___enlarge(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___enlarge "array::ArraySet::enlarge"
-typedef void (* array___ArraySet___remove_at_t)(val_t  self, val_t  param0);
-void array___ArraySet___remove_at(val_t  self, val_t  param0);
-#define LOCATE_array___ArraySet___remove_at "array::ArraySet::remove_at"
-typedef void (* array___ArraySet___init_t)(val_t  self, int* init_table);
-void array___ArraySet___init(val_t  self, int* init_table);
-val_t NEW_array___ArraySet___init();
-#define LOCATE_array___ArraySet___init "array::ArraySet::init"
-typedef void (* array___ArraySet___with_capacity_t)(val_t  self, val_t  param0, int* init_table);
-void array___ArraySet___with_capacity(val_t  self, val_t  param0, int* init_table);
-val_t NEW_array___ArraySet___with_capacity(val_t  param0);
-#define LOCATE_array___ArraySet___with_capacity "array::ArraySet::with_capacity"
-typedef val_t (* array___ArraySetIterator___is_ok_t)(val_t  self);
-val_t array___ArraySetIterator___is_ok(val_t  self);
-#define LOCATE_array___ArraySetIterator___is_ok "array::ArraySetIterator::(abstract_collection::Iterator::is_ok)"
-typedef void (* array___ArraySetIterator___next_t)(val_t  self);
-void array___ArraySetIterator___next(val_t  self);
-#define LOCATE_array___ArraySetIterator___next "array::ArraySetIterator::(abstract_collection::Iterator::next)"
-typedef val_t (* array___ArraySetIterator___item_t)(val_t  self);
-val_t array___ArraySetIterator___item(val_t  self);
-#define LOCATE_array___ArraySetIterator___item "array::ArraySetIterator::(abstract_collection::Iterator::item)"
-typedef void (* array___ArraySetIterator___init_t)(val_t  self, val_t  param0, int* init_table);
-void array___ArraySetIterator___init(val_t  self, val_t  param0, int* init_table);
-val_t NEW_array___ArraySetIterator___init(val_t  param0);
-#define LOCATE_array___ArraySetIterator___init "array::ArraySetIterator::init"
-#define ATTR_array___ArraySetIterator____iter(recv) ATTR(recv, COLOR_array___ArraySetIterator____iter)
-typedef val_t (* array___ArrayMap_____bra_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap_____bra(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap_____bra "array::ArrayMap::(abstract_collection::Map::[])"
-typedef void (* array___ArrayMap_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
-void array___ArrayMap_____braeq(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___ArrayMap_____braeq "array::ArrayMap::(abstract_collection::Map::[]=)"
-typedef val_t (* array___ArrayMap___has_key_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___has_key(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___has_key "array::ArrayMap::(abstract_collection::Map::has_key)"
-typedef val_t (* array___ArrayMap___has_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___has(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___has "array::ArrayMap::(abstract_collection::Collection::has)"
-typedef val_t (* array___ArrayMap___has_only_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___has_only(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___has_only "array::ArrayMap::(abstract_collection::Collection::has_only)"
-typedef val_t (* array___ArrayMap___length_t)(val_t  self);
-val_t array___ArrayMap___length(val_t  self);
-#define LOCATE_array___ArrayMap___length "array::ArrayMap::(abstract_collection::Collection::length)"
-typedef val_t (* array___ArrayMap___first_t)(val_t  self);
-val_t array___ArrayMap___first(val_t  self);
-#define LOCATE_array___ArrayMap___first "array::ArrayMap::(abstract_collection::Collection::first)"
-typedef val_t (* array___ArrayMap___count_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___count(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___count "array::ArrayMap::(abstract_collection::Collection::count)"
-typedef val_t (* array___ArrayMap___iterator_t)(val_t  self);
-val_t array___ArrayMap___iterator(val_t  self);
-#define LOCATE_array___ArrayMap___iterator "array::ArrayMap::(abstract_collection::Collection::iterator)"
-typedef val_t (* array___ArrayMap___is_empty_t)(val_t  self);
-val_t array___ArrayMap___is_empty(val_t  self);
-#define LOCATE_array___ArrayMap___is_empty "array::ArrayMap::(abstract_collection::Collection::is_empty)"
-typedef void (* array___ArrayMap___remove_t)(val_t  self, val_t  param0);
-void array___ArrayMap___remove(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___remove "array::ArrayMap::(abstract_collection::RemovableCollection::remove)"
-typedef void (* array___ArrayMap___remove_all_t)(val_t  self, val_t  param0);
-void array___ArrayMap___remove_all(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___remove_all "array::ArrayMap::(abstract_collection::RemovableCollection::remove_all)"
-typedef void (* array___ArrayMap___remove_at_t)(val_t  self, val_t  param0);
-void array___ArrayMap___remove_at(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___remove_at "array::ArrayMap::(abstract_collection::Map::remove_at)"
-typedef void (* array___ArrayMap___clear_t)(val_t  self);
-void array___ArrayMap___clear(val_t  self);
-#define LOCATE_array___ArrayMap___clear "array::ArrayMap::(abstract_collection::RemovableCollection::clear)"
-typedef void (* array___ArrayMap___enlarge_t)(val_t  self, val_t  param0);
-void array___ArrayMap___enlarge(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___enlarge "array::ArrayMap::enlarge"
-typedef val_t (* array___ArrayMap___couple_at_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___couple_at(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___couple_at "array::ArrayMap::(abstract_collection::CoupleMap::couple_at)"
-#define ATTR_array___ArrayMap____items(recv) ATTR(recv, COLOR_array___ArrayMap____items)
-typedef void (* array___ArrayMap___remove_at_index_t)(val_t  self, val_t  param0);
-void array___ArrayMap___remove_at_index(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___remove_at_index "array::ArrayMap::remove_at_index"
-#define ATTR_array___ArrayMap____last_index(recv) ATTR(recv, COLOR_array___ArrayMap____last_index)
-typedef val_t (* array___ArrayMap___index_t)(val_t  self, val_t  param0);
-val_t array___ArrayMap___index(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayMap___index "array::ArrayMap::index"
-typedef void (* array___ArrayMap___init_t)(val_t  self, int* init_table);
-void array___ArrayMap___init(val_t  self, int* init_table);
-val_t NEW_array___ArrayMap___init();
-#define LOCATE_array___ArrayMap___init "array::ArrayMap::init"
-typedef val_t (* array___Iterator___to_a_t)(val_t  self);
-val_t array___Iterator___to_a(val_t  self);
-#define LOCATE_array___Iterator___to_a "array::Iterator::to_a"
-typedef val_t (* array___Collection___to_a_t)(val_t  self);
-val_t array___Collection___to_a(val_t  self);
-#define LOCATE_array___Collection___to_a "array::Collection::to_a"
-typedef val_t (* array___ArrayCapable___calloc_array_t)(val_t  self, val_t  param0);
-val_t array___ArrayCapable___calloc_array(val_t  self, val_t  param0);
-#define LOCATE_array___ArrayCapable___calloc_array "array::ArrayCapable::calloc_array"
-typedef val_t (* array___NativeArray_____bra_t)(val_t  self, val_t  param0);
-val_t array___NativeArray_____bra(val_t  self, val_t  param0);
-#define LOCATE_array___NativeArray_____bra "array::NativeArray::[]"
-typedef void (* array___NativeArray_____braeq_t)(val_t  self, val_t  param0, val_t  param1);
-void array___NativeArray_____braeq(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___NativeArray_____braeq "array::NativeArray::[]="
-typedef void (* array___NativeArray___copy_to_t)(val_t  self, val_t  param0, val_t  param1);
-void array___NativeArray___copy_to(val_t  self, val_t  param0, val_t  param1);
-#define LOCATE_array___NativeArray___copy_to "array::NativeArray::copy_to"
+#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 CALL_array___Array___sort(recv) ((array___Array___sort_t)CALL((recv), (SFT_array[10] + 7)))
+#define CALL_array___Array___sub_sort(recv) ((array___Array___sub_sort_t)CALL((recv), (SFT_array[10] + 8)))
+#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)))
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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);
+static const char * const 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();
+static const char * const LOCATE_array___AbstractArray___enlarge = "array::AbstractArray::enlarge";
+void array___AbstractArray___enlarge(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___enlarge_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___push = "array::AbstractArray::(abstract_collection::Sequence::push)";
+void array___AbstractArray___push(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___push_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___pop = "array::AbstractArray::(abstract_collection::Sequence::pop)";
+val_t array___AbstractArray___pop(val_t p0);
+typedef val_t (*array___AbstractArray___pop_t)(val_t p0);
+static const char * const LOCATE_array___AbstractArray___shift = "array::AbstractArray::(abstract_collection::Sequence::shift)";
+val_t array___AbstractArray___shift(val_t p0);
+typedef val_t (*array___AbstractArray___shift_t)(val_t p0);
+static const char * const LOCATE_array___AbstractArray___unshift = "array::AbstractArray::(abstract_collection::Sequence::unshift)";
+void array___AbstractArray___unshift(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___unshift_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___insert = "array::AbstractArray::insert";
+void array___AbstractArray___insert(val_t p0, val_t p1, val_t p2);
+typedef void (*array___AbstractArray___insert_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_array___AbstractArray___add = "array::AbstractArray::(abstract_collection::SimpleCollection::add)";
+void array___AbstractArray___add(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___add_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___clear = "array::AbstractArray::(abstract_collection::RemovableCollection::clear)";
+void array___AbstractArray___clear(val_t p0);
+typedef void (*array___AbstractArray___clear_t)(val_t p0);
+static const char * const LOCATE_array___AbstractArray___remove = "array::AbstractArray::(abstract_collection::RemovableCollection::remove)";
+void array___AbstractArray___remove(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___remove_all = "array::AbstractArray::(abstract_collection::RemovableCollection::remove_all)";
+void array___AbstractArray___remove_all(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___AbstractArray___remove_at = "array::AbstractArray::(abstract_collection::Map::remove_at)";
+void array___AbstractArray___remove_at(val_t p0, val_t p1);
+typedef void (*array___AbstractArray___remove_at_t)(val_t p0, val_t p1);
+val_t NEW_AbstractArray_array___AbstractArrayRead___init();
+typedef void (*CLOS_array___Array___iterate_0)(struct stack_frame_t *, val_t);
+static const char * const LOCATE_array___Array___iterate = "array::Array::(abstract_collection::Collection::iterate)";
+void array___Array___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*array___Array___iterate_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_array___Array_____bra = "array::Array::(abstract_collection::MapRead::[])";
+val_t array___Array_____bra(val_t p0, val_t p1);
+typedef val_t (*array___Array_____bra_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___Array_____braeq = "array::Array::(abstract_collection::Map::[]=)";
+void array___Array_____braeq(val_t p0, val_t p1, val_t p2);
+typedef void (*array___Array_____braeq_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_array___Array___add = "array::Array::(abstract_collection::SimpleCollection::add)";
+void array___Array___add(val_t p0, val_t p1);
+typedef void (*array___Array___add_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___Array___enlarge = "array::Array::(array::AbstractArray::enlarge)";
+void array___Array___enlarge(val_t p0, val_t p1);
+typedef void (*array___Array___enlarge_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___Array___init = "array::Array::init";
+void array___Array___init(val_t p0, int* init_table);
+typedef void (*array___Array___init_t)(val_t p0, int* init_table);
+val_t NEW_Array_array___Array___init();
+static const char * const LOCATE_array___Array___with_items = "array::Array::with_items";
+void array___Array___with_items(val_t p0, val_t p1, int* init_table);
+typedef void (*array___Array___with_items_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_Array_array___Array___with_items(val_t p0);
+static const char * const LOCATE_array___Array___with_capacity = "array::Array::with_capacity";
+void array___Array___with_capacity(val_t p0, val_t p1, int* init_table);
+typedef void (*array___Array___with_capacity_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_Array_array___Array___with_capacity(val_t p0);
+static const char * const LOCATE_array___Array___filled_with = "array::Array::filled_with";
+void array___Array___filled_with(val_t p0, val_t p1, val_t p2, int* init_table);
+typedef void (*array___Array___filled_with_t)(val_t p0, val_t p1, val_t p2, int* init_table);
+val_t NEW_Array_array___Array___filled_with(val_t p0, val_t p1);
+static const char * const LOCATE_array___Array___with_native = "array::Array::with_native";
+void array___Array___with_native(val_t p0, val_t p1, val_t p2, int* init_table);
+typedef void (*array___Array___with_native_t)(val_t p0, val_t p1, val_t p2, int* init_table);
+val_t NEW_Array_array___Array___with_native(val_t p0, val_t p1);
+static const char * const LOCATE_array___Array___intern_items = "array::Array::intern_items";
+val_t array___Array___intern_items(val_t p0);
+typedef val_t (*array___Array___intern_items_t)(val_t p0);
+typedef val_t (*CLOS_array___Array___sort_0)(struct stack_frame_t *, val_t, val_t);
+static const char * const LOCATE_array___Array___sort = "array::Array::sort";
+void array___Array___sort(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*array___Array___sort_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+  val_t OC_array___Array___sort_1(struct stack_frame_t *closctx, val_t p0, val_t p1);
+  typedef val_t (*OC_array___Array___sort_1_t)(struct stack_frame_t *closctx, val_t p0, val_t p1);
+typedef val_t (*CLOS_array___Array___sub_sort_0)(struct stack_frame_t *, val_t, val_t);
+static const char * const LOCATE_array___Array___sub_sort = "array::Array::sub_sort";
+void array___Array___sub_sort(val_t p0, val_t p1, val_t p2, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*array___Array___sub_sort_t)(val_t p0, val_t p1, val_t p2, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+      val_t OC_array___Array___sub_sort_11(struct stack_frame_t *closctx, val_t p0, val_t p1);
+      typedef val_t (*OC_array___Array___sub_sort_11_t)(struct stack_frame_t *closctx, val_t p0, val_t p1);
+      val_t OC_array___Array___sub_sort_13(struct stack_frame_t *closctx, val_t p0, val_t p1);
+      typedef val_t (*OC_array___Array___sub_sort_13_t)(struct stack_frame_t *closctx, val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayIterator___item = "array::ArrayIterator::(abstract_collection::Iterator::item)";
+val_t array___ArrayIterator___item(val_t p0);
+typedef val_t (*array___ArrayIterator___item_t)(val_t p0);
+static const char * const LOCATE_array___ArrayIterator___is_ok = "array::ArrayIterator::(abstract_collection::Iterator::is_ok)";
+val_t array___ArrayIterator___is_ok(val_t p0);
+typedef val_t (*array___ArrayIterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_array___ArrayIterator___next = "array::ArrayIterator::(abstract_collection::Iterator::next)";
+void array___ArrayIterator___next(val_t p0);
+typedef void (*array___ArrayIterator___next_t)(val_t p0);
+static const char * const LOCATE_array___ArrayIterator___init = "array::ArrayIterator::init";
+void array___ArrayIterator___init(val_t p0, val_t p1, int* init_table);
+typedef void (*array___ArrayIterator___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ArrayIterator_array___ArrayIterator___init(val_t p0);
+static const char * const LOCATE_array___ArrayIterator___index = "array::ArrayIterator::(abstract_collection::IndexedIterator::index)";
+val_t array___ArrayIterator___index(val_t p0);
+typedef val_t (*array___ArrayIterator___index_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___has = "array::ArraySet::(abstract_collection::Collection::has)";
+val_t array___ArraySet___has(val_t p0, val_t p1);
+typedef val_t (*array___ArraySet___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___add = "array::ArraySet::(abstract_collection::SimpleCollection::add)";
+void array___ArraySet___add(val_t p0, val_t p1);
+typedef void (*array___ArraySet___add_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___is_empty = "array::ArraySet::(abstract_collection::Collection::is_empty)";
+val_t array___ArraySet___is_empty(val_t p0);
+typedef val_t (*array___ArraySet___is_empty_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___length = "array::ArraySet::(abstract_collection::Collection::length)";
+val_t array___ArraySet___length(val_t p0);
+typedef val_t (*array___ArraySet___length_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___first = "array::ArraySet::(abstract_collection::Collection::first)";
+val_t array___ArraySet___first(val_t p0);
+typedef val_t (*array___ArraySet___first_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___remove = "array::ArraySet::(abstract_collection::RemovableCollection::remove)";
+void array___ArraySet___remove(val_t p0, val_t p1);
+typedef void (*array___ArraySet___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___remove_all = "array::ArraySet::(abstract_collection::RemovableCollection::remove_all)";
+void array___ArraySet___remove_all(val_t p0, val_t p1);
+typedef void (*array___ArraySet___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___clear = "array::ArraySet::(abstract_collection::RemovableCollection::clear)";
+void array___ArraySet___clear(val_t p0);
+typedef void (*array___ArraySet___clear_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___iterator = "array::ArraySet::(abstract_collection::Collection::iterator)";
+val_t array___ArraySet___iterator(val_t p0);
+typedef val_t (*array___ArraySet___iterator_t)(val_t p0);
+static const char * const LOCATE_array___ArraySet___enlarge = "array::ArraySet::enlarge";
+void array___ArraySet___enlarge(val_t p0, val_t p1);
+typedef void (*array___ArraySet___enlarge_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___remove_at = "array::ArraySet::remove_at";
+void array___ArraySet___remove_at(val_t p0, val_t p1);
+typedef void (*array___ArraySet___remove_at_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArraySet___init = "array::ArraySet::init";
+void array___ArraySet___init(val_t p0, int* init_table);
+typedef void (*array___ArraySet___init_t)(val_t p0, int* init_table);
+val_t NEW_ArraySet_array___ArraySet___init();
+static const char * const LOCATE_array___ArraySet___with_capacity = "array::ArraySet::with_capacity";
+void array___ArraySet___with_capacity(val_t p0, val_t p1, int* init_table);
+typedef void (*array___ArraySet___with_capacity_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ArraySet_array___ArraySet___with_capacity(val_t p0);
+static const char * const LOCATE_array___ArraySetIterator___is_ok = "array::ArraySetIterator::(abstract_collection::Iterator::is_ok)";
+val_t array___ArraySetIterator___is_ok(val_t p0);
+typedef val_t (*array___ArraySetIterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_array___ArraySetIterator___next = "array::ArraySetIterator::(abstract_collection::Iterator::next)";
+void array___ArraySetIterator___next(val_t p0);
+typedef void (*array___ArraySetIterator___next_t)(val_t p0);
+static const char * const LOCATE_array___ArraySetIterator___item = "array::ArraySetIterator::(abstract_collection::Iterator::item)";
+val_t array___ArraySetIterator___item(val_t p0);
+typedef val_t (*array___ArraySetIterator___item_t)(val_t p0);
+static const char * const LOCATE_array___ArraySetIterator___init = "array::ArraySetIterator::init";
+void array___ArraySetIterator___init(val_t p0, val_t p1, int* init_table);
+typedef void (*array___ArraySetIterator___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ArraySetIterator_array___ArraySetIterator___init(val_t p0);
+static const char * const LOCATE_array___ArrayMap_____bra = "array::ArrayMap::(abstract_collection::MapRead::[])";
+val_t array___ArrayMap_____bra(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap_____bra_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap_____braeq = "array::ArrayMap::(abstract_collection::Map::[]=)";
+void array___ArrayMap_____braeq(val_t p0, val_t p1, val_t p2);
+typedef void (*array___ArrayMap_____braeq_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_array___ArrayMap___has_key = "array::ArrayMap::(abstract_collection::MapRead::has_key)";
+val_t array___ArrayMap___has_key(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___has_key_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___has = "array::ArrayMap::(abstract_collection::Collection::has)";
+val_t array___ArrayMap___has(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___has_only = "array::ArrayMap::(abstract_collection::Collection::has_only)";
+val_t array___ArrayMap___has_only(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___length = "array::ArrayMap::(abstract_collection::Collection::length)";
+val_t array___ArrayMap___length(val_t p0);
+typedef val_t (*array___ArrayMap___length_t)(val_t p0);
+static const char * const LOCATE_array___ArrayMap___first = "array::ArrayMap::(abstract_collection::Collection::first)";
+val_t array___ArrayMap___first(val_t p0);
+typedef val_t (*array___ArrayMap___first_t)(val_t p0);
+static const char * const LOCATE_array___ArrayMap___count = "array::ArrayMap::(abstract_collection::Collection::count)";
+val_t array___ArrayMap___count(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___iterator = "array::ArrayMap::(abstract_collection::Collection::iterator)";
+val_t array___ArrayMap___iterator(val_t p0);
+typedef val_t (*array___ArrayMap___iterator_t)(val_t p0);
+static const char * const LOCATE_array___ArrayMap___is_empty = "array::ArrayMap::(abstract_collection::Collection::is_empty)";
+val_t array___ArrayMap___is_empty(val_t p0);
+typedef val_t (*array___ArrayMap___is_empty_t)(val_t p0);
+static const char * const LOCATE_array___ArrayMap___remove = "array::ArrayMap::(abstract_collection::RemovableCollection::remove)";
+void array___ArrayMap___remove(val_t p0, val_t p1);
+typedef void (*array___ArrayMap___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___remove_all = "array::ArrayMap::(abstract_collection::RemovableCollection::remove_all)";
+void array___ArrayMap___remove_all(val_t p0, val_t p1);
+typedef void (*array___ArrayMap___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___remove_at = "array::ArrayMap::(abstract_collection::Map::remove_at)";
+void array___ArrayMap___remove_at(val_t p0, val_t p1);
+typedef void (*array___ArrayMap___remove_at_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___clear = "array::ArrayMap::(abstract_collection::RemovableCollection::clear)";
+void array___ArrayMap___clear(val_t p0);
+typedef void (*array___ArrayMap___clear_t)(val_t p0);
+static const char * const LOCATE_array___ArrayMap___enlarge = "array::ArrayMap::enlarge";
+void array___ArrayMap___enlarge(val_t p0, val_t p1);
+typedef void (*array___ArrayMap___enlarge_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___couple_at = "array::ArrayMap::(abstract_collection::CoupleMap::couple_at)";
+val_t array___ArrayMap___couple_at(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___couple_at_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___remove_at_index = "array::ArrayMap::remove_at_index";
+void array___ArrayMap___remove_at_index(val_t p0, val_t p1);
+typedef void (*array___ArrayMap___remove_at_index_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___index = "array::ArrayMap::index";
+val_t array___ArrayMap___index(val_t p0, val_t p1);
+typedef val_t (*array___ArrayMap___index_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___ArrayMap___init = "array::ArrayMap::init";
+void array___ArrayMap___init(val_t p0, int* init_table);
+typedef void (*array___ArrayMap___init_t)(val_t p0, int* init_table);
+val_t NEW_ArrayMap_array___ArrayMap___init();
+static const char * const LOCATE_array___Iterator___to_a = "array::Iterator::to_a";
+val_t array___Iterator___to_a(val_t p0);
+typedef val_t (*array___Iterator___to_a_t)(val_t p0);
+static const char * const LOCATE_array___Collection___to_a = "array::Collection::to_a";
+val_t array___Collection___to_a(val_t p0);
+typedef val_t (*array___Collection___to_a_t)(val_t p0);
+static const char * const LOCATE_array___ArrayCapable___calloc_array = "array::ArrayCapable::calloc_array";
+val_t array___ArrayCapable___calloc_array(val_t p0, val_t p1);
+typedef val_t (*array___ArrayCapable___calloc_array_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___NativeArray_____bra = "array::NativeArray::[]";
+val_t array___NativeArray_____bra(val_t p0, val_t p1);
+typedef val_t (*array___NativeArray_____bra_t)(val_t p0, val_t p1);
+static const char * const LOCATE_array___NativeArray_____braeq = "array::NativeArray::[]=";
+void array___NativeArray_____braeq(val_t p0, val_t p1, val_t p2);
+typedef void (*array___NativeArray_____braeq_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_array___NativeArray___copy_to = "array::NativeArray::copy_to";
+void array___NativeArray___copy_to(val_t p0, val_t p1, val_t p2);
+typedef void (*array___NativeArray___copy_to_t)(val_t p0, val_t p1, val_t p2);
 #endif