-#define ID_Map (SFT_abstract_collection[26])
-#define COLOR_Map (SFT_abstract_collection[27])
-#define INIT_TABLE_POS_Map (SFT_abstract_collection[28] + 0)
-#define CALL_abstract_collection___Map_____bra(recv) ((abstract_collection___Map_____bra_t)CALL((recv), (SFT_abstract_collection[28] + 1)))
-#define CALL_abstract_collection___Map_____braeq(recv) ((abstract_collection___Map_____braeq_t)CALL((recv), (SFT_abstract_collection[28] + 2)))
-#define CALL_abstract_collection___Map___has_key(recv) ((abstract_collection___Map___has_key_t)CALL((recv), (SFT_abstract_collection[28] + 3)))
-#define CALL_abstract_collection___Map___remove_at(recv) ((abstract_collection___Map___remove_at_t)CALL((recv), (SFT_abstract_collection[28] + 4)))
-#define CALL_abstract_collection___Map___recover_with(recv) ((abstract_collection___Map___recover_with_t)CALL((recv), (SFT_abstract_collection[28] + 5)))
-#define ID_MapIterator (SFT_abstract_collection[29])
-#define COLOR_MapIterator (SFT_abstract_collection[30])
-#define INIT_TABLE_POS_MapIterator (SFT_abstract_collection[31] + 0)
-#define CALL_abstract_collection___MapIterator___key(recv) ((abstract_collection___MapIterator___key_t)CALL((recv), (SFT_abstract_collection[31] + 1)))
-#define CALL_abstract_collection___MapIterator___item__eq(recv) ((abstract_collection___MapIterator___item__eq_t)CALL((recv), (SFT_abstract_collection[31] + 2)))
-#define ID_IndexedCollection (SFT_abstract_collection[32])
-#define COLOR_IndexedCollection (SFT_abstract_collection[33])
-#define INIT_TABLE_POS_IndexedCollection (SFT_abstract_collection[34] + 0)
-#define CALL_abstract_collection___IndexedCollection___first__eq(recv) ((abstract_collection___IndexedCollection___first__eq_t)CALL((recv), (SFT_abstract_collection[34] + 1)))
-#define CALL_abstract_collection___IndexedCollection___last(recv) ((abstract_collection___IndexedCollection___last_t)CALL((recv), (SFT_abstract_collection[34] + 2)))
-#define CALL_abstract_collection___IndexedCollection___last__eq(recv) ((abstract_collection___IndexedCollection___last__eq_t)CALL((recv), (SFT_abstract_collection[34] + 3)))
-#define CALL_abstract_collection___IndexedCollection___push(recv) ((abstract_collection___IndexedCollection___push_t)CALL((recv), (SFT_abstract_collection[34] + 4)))
-#define CALL_abstract_collection___IndexedCollection___append(recv) ((abstract_collection___IndexedCollection___append_t)CALL((recv), (SFT_abstract_collection[34] + 5)))
-#define CALL_abstract_collection___IndexedCollection___pop(recv) ((abstract_collection___IndexedCollection___pop_t)CALL((recv), (SFT_abstract_collection[34] + 6)))
-#define CALL_abstract_collection___IndexedCollection___unshift(recv) ((abstract_collection___IndexedCollection___unshift_t)CALL((recv), (SFT_abstract_collection[34] + 7)))
-#define CALL_abstract_collection___IndexedCollection___shift(recv) ((abstract_collection___IndexedCollection___shift_t)CALL((recv), (SFT_abstract_collection[34] + 8)))
-#define CALL_abstract_collection___IndexedCollection___index_of(recv) ((abstract_collection___IndexedCollection___index_of_t)CALL((recv), (SFT_abstract_collection[34] + 9)))
-#define ID_IndexedIterator (SFT_abstract_collection[35])
-#define COLOR_IndexedIterator (SFT_abstract_collection[36])
-#define INIT_TABLE_POS_IndexedIterator (SFT_abstract_collection[37] + 0)
-#define CALL_abstract_collection___IndexedIterator___index(recv) ((abstract_collection___IndexedIterator___index_t)CALL((recv), (SFT_abstract_collection[37] + 1)))
-#define ID_CoupleMap (SFT_abstract_collection[38])
-#define COLOR_CoupleMap (SFT_abstract_collection[39])
-#define INIT_TABLE_POS_CoupleMap (SFT_abstract_collection[40] + 0)
-#define CALL_abstract_collection___CoupleMap___couple_at(recv) ((abstract_collection___CoupleMap___couple_at_t)CALL((recv), (SFT_abstract_collection[40] + 1)))
-#define ID_CoupleMapIterator (SFT_abstract_collection[41])
-#define COLOR_CoupleMapIterator (SFT_abstract_collection[42])
-#define ATTR_abstract_collection___CoupleMapIterator____iter(recv) ATTR(recv, (SFT_abstract_collection[43] + 0))
-#define INIT_TABLE_POS_CoupleMapIterator (SFT_abstract_collection[44] + 0)
-#define CALL_abstract_collection___CoupleMapIterator___init(recv) ((abstract_collection___CoupleMapIterator___init_t)CALL((recv), (SFT_abstract_collection[44] + 1)))
-#define ID_Couple (SFT_abstract_collection[45])
-#define COLOR_Couple (SFT_abstract_collection[46])
-#define ATTR_abstract_collection___Couple____first(recv) ATTR(recv, (SFT_abstract_collection[47] + 0))
-#define ATTR_abstract_collection___Couple____second(recv) ATTR(recv, (SFT_abstract_collection[47] + 1))
-#define INIT_TABLE_POS_Couple (SFT_abstract_collection[48] + 0)
-#define CALL_abstract_collection___Couple___first(recv) ((abstract_collection___Couple___first_t)CALL((recv), (SFT_abstract_collection[48] + 1)))
-#define CALL_abstract_collection___Couple___first__eq(recv) ((abstract_collection___Couple___first__eq_t)CALL((recv), (SFT_abstract_collection[48] + 2)))
-#define CALL_abstract_collection___Couple___second(recv) ((abstract_collection___Couple___second_t)CALL((recv), (SFT_abstract_collection[48] + 3)))
-#define CALL_abstract_collection___Couple___second__eq(recv) ((abstract_collection___Couple___second__eq_t)CALL((recv), (SFT_abstract_collection[48] + 4)))
-#define CALL_abstract_collection___Couple___init(recv) ((abstract_collection___Couple___init_t)CALL((recv), (SFT_abstract_collection[48] + 5)))
-typedef val_t (* abstract_collection___Collection___iterator_t)(val_t self);
-val_t abstract_collection___Collection___iterator(val_t self);
-#define LOCATE_abstract_collection___Collection___iterator "abstract_collection::Collection::iterator"
-typedef val_t (* abstract_collection___Collection___is_empty_t)(val_t self);
-val_t abstract_collection___Collection___is_empty(val_t self);
-#define LOCATE_abstract_collection___Collection___is_empty "abstract_collection::Collection::is_empty"
-typedef val_t (* abstract_collection___Collection___length_t)(val_t self);
-val_t abstract_collection___Collection___length(val_t self);
-#define LOCATE_abstract_collection___Collection___length "abstract_collection::Collection::length"
-typedef val_t (* abstract_collection___Collection___has_t)(val_t self, val_t param0);
-val_t abstract_collection___Collection___has(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Collection___has "abstract_collection::Collection::has"
-typedef val_t (* abstract_collection___Collection___has_only_t)(val_t self, val_t param0);
-val_t abstract_collection___Collection___has_only(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Collection___has_only "abstract_collection::Collection::has_only"
-typedef val_t (* abstract_collection___Collection___count_t)(val_t self, val_t param0);
-val_t abstract_collection___Collection___count(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Collection___count "abstract_collection::Collection::count"
-typedef val_t (* abstract_collection___Collection___first_t)(val_t self);
-val_t abstract_collection___Collection___first(val_t self);
-#define LOCATE_abstract_collection___Collection___first "abstract_collection::Collection::first"
-typedef val_t (* abstract_collection___NaiveCollection___is_empty_t)(val_t self);
-val_t abstract_collection___NaiveCollection___is_empty(val_t self);
-#define LOCATE_abstract_collection___NaiveCollection___is_empty "abstract_collection::NaiveCollection::(abstract_collection::Collection::is_empty)"
-typedef val_t (* abstract_collection___NaiveCollection___length_t)(val_t self);
-val_t abstract_collection___NaiveCollection___length(val_t self);
-#define LOCATE_abstract_collection___NaiveCollection___length "abstract_collection::NaiveCollection::(abstract_collection::Collection::length)"
-typedef val_t (* abstract_collection___NaiveCollection___has_t)(val_t self, val_t param0);
-val_t abstract_collection___NaiveCollection___has(val_t self, val_t param0);
-#define LOCATE_abstract_collection___NaiveCollection___has "abstract_collection::NaiveCollection::(abstract_collection::Collection::has)"
-typedef val_t (* abstract_collection___NaiveCollection___has_only_t)(val_t self, val_t param0);
-val_t abstract_collection___NaiveCollection___has_only(val_t self, val_t param0);
-#define LOCATE_abstract_collection___NaiveCollection___has_only "abstract_collection::NaiveCollection::(abstract_collection::Collection::has_only)"
-typedef val_t (* abstract_collection___NaiveCollection___count_t)(val_t self, val_t param0);
-val_t abstract_collection___NaiveCollection___count(val_t self, val_t param0);
-#define LOCATE_abstract_collection___NaiveCollection___count "abstract_collection::NaiveCollection::(abstract_collection::Collection::count)"
-typedef val_t (* abstract_collection___NaiveCollection___first_t)(val_t self);
-val_t abstract_collection___NaiveCollection___first(val_t self);
-#define LOCATE_abstract_collection___NaiveCollection___first "abstract_collection::NaiveCollection::(abstract_collection::Collection::first)"
-typedef val_t (* abstract_collection___Iterator___item_t)(val_t self);
-val_t abstract_collection___Iterator___item(val_t self);
-#define LOCATE_abstract_collection___Iterator___item "abstract_collection::Iterator::item"
-typedef void (* abstract_collection___Iterator___next_t)(val_t self);
-void abstract_collection___Iterator___next(val_t self);
-#define LOCATE_abstract_collection___Iterator___next "abstract_collection::Iterator::next"
-typedef val_t (* abstract_collection___Iterator___is_ok_t)(val_t self);
-val_t abstract_collection___Iterator___is_ok(val_t self);
-#define LOCATE_abstract_collection___Iterator___is_ok "abstract_collection::Iterator::is_ok"
-typedef val_t (* abstract_collection___Container___iterator_t)(val_t self);
-val_t abstract_collection___Container___iterator(val_t self);
-#define LOCATE_abstract_collection___Container___iterator "abstract_collection::Container::(abstract_collection::Collection::iterator)"
-typedef val_t (* abstract_collection___Container___is_empty_t)(val_t self);
-val_t abstract_collection___Container___is_empty(val_t self);
-#define LOCATE_abstract_collection___Container___is_empty "abstract_collection::Container::(abstract_collection::Collection::is_empty)"
-typedef val_t (* abstract_collection___Container___length_t)(val_t self);
-val_t abstract_collection___Container___length(val_t self);
-#define LOCATE_abstract_collection___Container___length "abstract_collection::Container::(abstract_collection::Collection::length)"
-typedef val_t (* abstract_collection___Container___has_t)(val_t self, val_t param0);
-val_t abstract_collection___Container___has(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Container___has "abstract_collection::Container::(abstract_collection::Collection::has)"
-typedef val_t (* abstract_collection___Container___has_only_t)(val_t self, val_t param0);
-val_t abstract_collection___Container___has_only(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Container___has_only "abstract_collection::Container::(abstract_collection::Collection::has_only)"
-typedef val_t (* abstract_collection___Container___count_t)(val_t self, val_t param0);
-val_t abstract_collection___Container___count(val_t self, val_t param0);
-#define LOCATE_abstract_collection___Container___count "abstract_collection::Container::(abstract_collection::Collection::count)"
-typedef val_t (* abstract_collection___Container___first_t)(val_t self);
-val_t abstract_collection___Container___first(val_t self);
-#define LOCATE_abstract_collection___Container___first "abstract_collection::Container::(abstract_collection::Collection::first)"
-typedef void (* abstract_collection___Container___init_t)(val_t self, val_t param0, int* init_table);
-void abstract_collection___Container___init(val_t self, val_t param0, int* init_table);
-#define LOCATE_abstract_collection___Container___init "abstract_collection::Container::init"
+#define ID_MapRead (SFT_abstract_collection[26])
+#define COLOR_MapRead (SFT_abstract_collection[27])
+#define INIT_TABLE_POS_MapRead (SFT_abstract_collection[28] + 0)
+#define CALL_abstract_collection___MapRead_____bra(recv) ((abstract_collection___MapRead_____bra_t)CALL((recv), (SFT_abstract_collection[28] + 1)))
+#define CALL_abstract_collection___MapRead___has_key(recv) ((abstract_collection___MapRead___has_key_t)CALL((recv), (SFT_abstract_collection[28] + 2)))
+#define ID_Map (SFT_abstract_collection[29])
+#define COLOR_Map (SFT_abstract_collection[30])
+#define INIT_TABLE_POS_Map (SFT_abstract_collection[31] + 0)
+#define CALL_abstract_collection___Map_____braeq(recv) ((abstract_collection___Map_____braeq_t)CALL((recv), (SFT_abstract_collection[31] + 1)))
+#define CALL_abstract_collection___Map___remove_at(recv) ((abstract_collection___Map___remove_at_t)CALL((recv), (SFT_abstract_collection[31] + 2)))
+#define CALL_abstract_collection___Map___recover_with(recv) ((abstract_collection___Map___recover_with_t)CALL((recv), (SFT_abstract_collection[31] + 3)))
+#define ID_MapIterator (SFT_abstract_collection[32])
+#define COLOR_MapIterator (SFT_abstract_collection[33])
+#define INIT_TABLE_POS_MapIterator (SFT_abstract_collection[34] + 0)
+#define CALL_abstract_collection___MapIterator___key(recv) ((abstract_collection___MapIterator___key_t)CALL((recv), (SFT_abstract_collection[34] + 1)))
+#define ID_SequenceRead (SFT_abstract_collection[35])
+#define COLOR_SequenceRead (SFT_abstract_collection[36])
+#define INIT_TABLE_POS_SequenceRead (SFT_abstract_collection[37] + 0)
+#define CALL_abstract_collection___SequenceRead___last(recv) ((abstract_collection___SequenceRead___last_t)CALL((recv), (SFT_abstract_collection[37] + 1)))
+#define CALL_abstract_collection___SequenceRead___index_of(recv) ((abstract_collection___SequenceRead___index_of_t)CALL((recv), (SFT_abstract_collection[37] + 2)))
+#define ID_Sequence (SFT_abstract_collection[38])
+#define COLOR_Sequence (SFT_abstract_collection[39])
+#define INIT_TABLE_POS_Sequence (SFT_abstract_collection[40] + 0)
+#define CALL_abstract_collection___Sequence___first__eq(recv) ((abstract_collection___Sequence___first__eq_t)CALL((recv), (SFT_abstract_collection[40] + 1)))
+#define CALL_abstract_collection___Sequence___last__eq(recv) ((abstract_collection___Sequence___last__eq_t)CALL((recv), (SFT_abstract_collection[40] + 2)))
+#define CALL_abstract_collection___Sequence___push(recv) ((abstract_collection___Sequence___push_t)CALL((recv), (SFT_abstract_collection[40] + 3)))
+#define CALL_abstract_collection___Sequence___append(recv) ((abstract_collection___Sequence___append_t)CALL((recv), (SFT_abstract_collection[40] + 4)))
+#define CALL_abstract_collection___Sequence___pop(recv) ((abstract_collection___Sequence___pop_t)CALL((recv), (SFT_abstract_collection[40] + 5)))
+#define CALL_abstract_collection___Sequence___unshift(recv) ((abstract_collection___Sequence___unshift_t)CALL((recv), (SFT_abstract_collection[40] + 6)))
+#define CALL_abstract_collection___Sequence___shift(recv) ((abstract_collection___Sequence___shift_t)CALL((recv), (SFT_abstract_collection[40] + 7)))
+#define ID_IndexedIterator (SFT_abstract_collection[41])
+#define COLOR_IndexedIterator (SFT_abstract_collection[42])
+#define INIT_TABLE_POS_IndexedIterator (SFT_abstract_collection[43] + 0)
+#define CALL_abstract_collection___IndexedIterator___index(recv) ((abstract_collection___IndexedIterator___index_t)CALL((recv), (SFT_abstract_collection[43] + 1)))
+#define ID_CoupleMap (SFT_abstract_collection[44])
+#define COLOR_CoupleMap (SFT_abstract_collection[45])
+#define INIT_TABLE_POS_CoupleMap (SFT_abstract_collection[46] + 0)
+#define CALL_abstract_collection___CoupleMap___couple_at(recv) ((abstract_collection___CoupleMap___couple_at_t)CALL((recv), (SFT_abstract_collection[46] + 1)))
+#define ID_CoupleMapIterator (SFT_abstract_collection[47])
+#define COLOR_CoupleMapIterator (SFT_abstract_collection[48])
+#define ATTR_abstract_collection___CoupleMapIterator____iter(recv) ATTR(recv, (SFT_abstract_collection[49] + 0))
+#define INIT_TABLE_POS_CoupleMapIterator (SFT_abstract_collection[50] + 0)
+#define CALL_abstract_collection___CoupleMapIterator___init(recv) ((abstract_collection___CoupleMapIterator___init_t)CALL((recv), (SFT_abstract_collection[50] + 1)))
+#define ID_Couple (SFT_abstract_collection[51])
+#define COLOR_Couple (SFT_abstract_collection[52])
+#define ATTR_abstract_collection___Couple____first(recv) ATTR(recv, (SFT_abstract_collection[53] + 0))
+#define ATTR_abstract_collection___Couple____second(recv) ATTR(recv, (SFT_abstract_collection[53] + 1))
+#define INIT_TABLE_POS_Couple (SFT_abstract_collection[54] + 0)
+#define CALL_abstract_collection___Couple___first(recv) ((abstract_collection___Couple___first_t)CALL((recv), (SFT_abstract_collection[54] + 1)))
+#define CALL_abstract_collection___Couple___first__eq(recv) ((abstract_collection___Couple___first__eq_t)CALL((recv), (SFT_abstract_collection[54] + 2)))
+#define CALL_abstract_collection___Couple___second(recv) ((abstract_collection___Couple___second_t)CALL((recv), (SFT_abstract_collection[54] + 3)))
+#define CALL_abstract_collection___Couple___second__eq(recv) ((abstract_collection___Couple___second__eq_t)CALL((recv), (SFT_abstract_collection[54] + 4)))
+#define CALL_abstract_collection___Couple___init(recv) ((abstract_collection___Couple___init_t)CALL((recv), (SFT_abstract_collection[54] + 5)))
+static const char * const LOCATE_abstract_collection___Collection___iterator = "abstract_collection::Collection::iterator";
+val_t abstract_collection___Collection___iterator(val_t p0);
+typedef val_t (*abstract_collection___Collection___iterator_t)(val_t p0);
+typedef void (*CLOS_abstract_collection___Collection___iterate_0)(struct stack_frame_t *, val_t);
+static const char * const LOCATE_abstract_collection___Collection___iterate = "abstract_collection::Collection::iterate";
+void abstract_collection___Collection___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*abstract_collection___Collection___iterate_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_abstract_collection___Collection___is_empty = "abstract_collection::Collection::is_empty";
+val_t abstract_collection___Collection___is_empty(val_t p0);
+typedef val_t (*abstract_collection___Collection___is_empty_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Collection___length = "abstract_collection::Collection::length";
+val_t abstract_collection___Collection___length(val_t p0);
+typedef val_t (*abstract_collection___Collection___length_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Collection___has = "abstract_collection::Collection::has";
+val_t abstract_collection___Collection___has(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Collection___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Collection___has_only = "abstract_collection::Collection::has_only";
+val_t abstract_collection___Collection___has_only(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Collection___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Collection___count = "abstract_collection::Collection::count";
+val_t abstract_collection___Collection___count(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Collection___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Collection___first = "abstract_collection::Collection::first";
+val_t abstract_collection___Collection___first(val_t p0);
+typedef val_t (*abstract_collection___Collection___first_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___is_empty = "abstract_collection::NaiveCollection::(abstract_collection::Collection::is_empty)";
+val_t abstract_collection___NaiveCollection___is_empty(val_t p0);
+typedef val_t (*abstract_collection___NaiveCollection___is_empty_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___length = "abstract_collection::NaiveCollection::(abstract_collection::Collection::length)";
+val_t abstract_collection___NaiveCollection___length(val_t p0);
+typedef val_t (*abstract_collection___NaiveCollection___length_t)(val_t p0);
+ typedef void (*CLOS_OC_abstract_collection___NaiveCollection___length_1_0)(struct stack_frame_t *);
+ void OC_abstract_collection___NaiveCollection___length_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+ typedef void (*OC_abstract_collection___NaiveCollection___length_1_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___has = "abstract_collection::NaiveCollection::(abstract_collection::Collection::has)";
+val_t abstract_collection___NaiveCollection___has(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___NaiveCollection___has_t)(val_t p0, val_t p1);
+ typedef void (*CLOS_OC_abstract_collection___NaiveCollection___has_1_0)(struct stack_frame_t *);
+ void OC_abstract_collection___NaiveCollection___has_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+ typedef void (*OC_abstract_collection___NaiveCollection___has_1_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___has_only = "abstract_collection::NaiveCollection::(abstract_collection::Collection::has_only)";
+val_t abstract_collection___NaiveCollection___has_only(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___NaiveCollection___has_only_t)(val_t p0, val_t p1);
+ typedef void (*CLOS_OC_abstract_collection___NaiveCollection___has_only_1_0)(struct stack_frame_t *);
+ void OC_abstract_collection___NaiveCollection___has_only_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+ typedef void (*OC_abstract_collection___NaiveCollection___has_only_1_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___count = "abstract_collection::NaiveCollection::(abstract_collection::Collection::count)";
+val_t abstract_collection___NaiveCollection___count(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___NaiveCollection___count_t)(val_t p0, val_t p1);
+ typedef void (*CLOS_OC_abstract_collection___NaiveCollection___count_1_0)(struct stack_frame_t *);
+ void OC_abstract_collection___NaiveCollection___count_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+ typedef void (*OC_abstract_collection___NaiveCollection___count_1_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_abstract_collection___NaiveCollection___first = "abstract_collection::NaiveCollection::(abstract_collection::Collection::first)";
+val_t abstract_collection___NaiveCollection___first(val_t p0);
+typedef val_t (*abstract_collection___NaiveCollection___first_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Iterator___item = "abstract_collection::Iterator::item";
+val_t abstract_collection___Iterator___item(val_t p0);
+typedef val_t (*abstract_collection___Iterator___item_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Iterator___next = "abstract_collection::Iterator::next";
+void abstract_collection___Iterator___next(val_t p0);
+typedef void (*abstract_collection___Iterator___next_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Iterator___is_ok = "abstract_collection::Iterator::is_ok";
+val_t abstract_collection___Iterator___is_ok(val_t p0);
+typedef val_t (*abstract_collection___Iterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Container___first = "abstract_collection::Container::(abstract_collection::Collection::first)";
+val_t abstract_collection___Container___first(val_t p0);
+typedef val_t (*abstract_collection___Container___first_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Container___is_empty = "abstract_collection::Container::(abstract_collection::Collection::is_empty)";
+val_t abstract_collection___Container___is_empty(val_t p0);
+typedef val_t (*abstract_collection___Container___is_empty_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Container___length = "abstract_collection::Container::(abstract_collection::Collection::length)";
+val_t abstract_collection___Container___length(val_t p0);
+typedef val_t (*abstract_collection___Container___length_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Container___has = "abstract_collection::Container::(abstract_collection::Collection::has)";
+val_t abstract_collection___Container___has(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Container___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Container___has_only = "abstract_collection::Container::(abstract_collection::Collection::has_only)";
+val_t abstract_collection___Container___has_only(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Container___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Container___count = "abstract_collection::Container::(abstract_collection::Collection::count)";
+val_t abstract_collection___Container___count(val_t p0, val_t p1);
+typedef val_t (*abstract_collection___Container___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstract_collection___Container___iterator = "abstract_collection::Container::(abstract_collection::Collection::iterator)";
+val_t abstract_collection___Container___iterator(val_t p0);
+typedef val_t (*abstract_collection___Container___iterator_t)(val_t p0);
+static const char * const LOCATE_abstract_collection___Container___init = "abstract_collection::Container::init";
+void abstract_collection___Container___init(val_t p0, val_t p1, int* init_table);
+typedef void (*abstract_collection___Container___init_t)(val_t p0, val_t p1, int* init_table);