+ return variable[1];
+}
+val_t abstract_collection___IndexedCollectionRead___last(val_t self) {
+ struct trace_t trace = {NULL, NULL, 296, LOCATE_abstract_collection___IndexedCollectionRead___last};
+ val_t variable[3];
+ struct WBT_ **closurevariable = NULL;
+ trace.prev = tracehead; tracehead = &trace;
+ trace.file = LOCATE_abstract_collection;
+ /* Register variable[0]: Local variable */
+ variable[0] = self;
+ /* Register variable[1]: Method return value and escape marker */
+ /* Register variable[2]: Result */
+ variable[2] = CALL_abstract_collection___Collection___is_empty(variable[0])(variable[0]) /*Collection::is_empty*/;
+ if (!UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[2])))) { fprintf(stderr, "Assert%s failed", " 'not_empty' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_abstract_collection___IndexedCollectionRead___last, LOCATE_abstract_collection, 300); nit_exit(1);}
+ /* Register variable[2]: Result */
+ variable[2] = CALL_abstract_collection___Collection___length(variable[0])(variable[0]) /*Collection::length*/;
+ /* Register variable[2]: Result */
+ variable[2] = TAG_Int(UNTAG_Int(variable[2])-UNTAG_Int( TAG_Int(1)));
+ /* Register variable[2]: Result */
+ variable[2] = CALL_abstract_collection___MapRead_____bra(variable[0])(variable[0], variable[2]) /*MapRead::[]*/;
+ variable[1] = variable[2];
+ goto return_label31;
+ return_label31: while(false);
+ tracehead = trace.prev;
+ return variable[1];
+}
+val_t abstract_collection___IndexedCollectionRead___index_of(val_t self, val_t param0) {
+ struct trace_t trace = {NULL, NULL, 304, LOCATE_abstract_collection___IndexedCollectionRead___index_of};
+ val_t variable[5];
+ struct WBT_ **closurevariable = NULL;
+ trace.prev = tracehead; tracehead = &trace;
+ trace.file = LOCATE_abstract_collection;
+ /* Register variable[0]: Local variable */
+ variable[0] = self;
+ /* Register variable[1]: Local variable */
+ variable[1] = param0;
+ /* Register variable[2]: Method return value and escape marker */
+ /* Register variable[3]: Local variable */
+ /* Register variable[4]: Result */
+ variable[4] = CALL_abstract_collection___Collection___iterator(variable[0])(variable[0]) /*IndexedCollectionRead::iterator*/;
+ variable[3] = variable[4];
+ while (true) { /*while*/
+ /* Register variable[4]: Result */
+ variable[4] = CALL_abstract_collection___Iterator___is_ok( variable[3] /*i*/)( variable[3] /*i*/) /*Iterator::is_ok*/;
+ if (!UNTAG_Bool(variable[4])) break; /* while*/
+ /* Register variable[4]: Result */
+ variable[4] = CALL_abstract_collection___Iterator___item( variable[3] /*i*/)( variable[3] /*i*/) /*Iterator::item*/;
+ /* Register variable[4]: Result */
+ variable[4] = TAG_Bool((variable[4] == variable[1] /*item*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], variable[1] /*item*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4], variable[1] /*item*/) /*Object::==*/)))));
+ if (UNTAG_Bool(variable[4])) { /*if*/
+ /* Register variable[4]: Result */
+ variable[4] = CALL_abstract_collection___IndexedIterator___index( variable[3] /*i*/)( variable[3] /*i*/) /*IndexedIterator::index*/;
+ variable[2] = variable[4];
+ goto return_label32;
+ }
+ CALL_abstract_collection___Iterator___next( variable[3] /*i*/)( variable[3] /*i*/) /*Iterator::next*/;
+ continue_33: while(0);
+ }
+ break_33: while(0);
+ /* Register variable[4]: Result */
+ variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+ variable[2] = variable[4];
+ goto return_label32;
+ return_label32: while(false);
+ tracehead = trace.prev;
+ return variable[2];