void METH(spacecraft,addPassenger)(starwars_Character newPassenger){
	int i;
	for ( i =0 ; i<GET_COLLECTION_SIZE(passengers); i++) {
		if (!IS_BOUND(passengers[i])) {
			BIND_MY_INTERFACE(passengers[i],newPassenger);
			printf("\n%s is getting in the %s.",CALL(passengers[i],getName)(), ATTR(name));
			return;
		}
	}
}
starwars_Character METH(spacecraft,removePassenger)(void){
	starwars_Character passenger = 0;
	int i;
	for ( i =0 ; i<GET_COLLECTION_SIZE(passengers); i++) {
		if (IS_BOUND(passengers[i])) {
			passenger = GET_MY_INTERFACE(passengers[i]);
			printf("\n%s is getting out the %s.\n",CALL(passengers[i],getName)(), ATTR(name));
			BIND_MY_INTERFACE(passengers[i],0);
			return passenger;
		}
	}
	return passenger;
}
// int main(int argc, string[] argv)
int METH(main, main) (int argc, char *argv[]) {

  int i = 0;
  
  for (i = 0; i < GET_COLLECTION_SIZE(s); i++) {
	if (IS_BOUND(s[i])) {
		CALL(s[i], print)("hello world !");
		CALL(s[i], println)("goodbye world");
	}
  }
    
  // reset counters
  PRIVATE.count = 0;
  i = 0;
  
  for (i = 0; i < GET_COLLECTION_SIZE(s); i++) {
	if (IS_BOUND_COLLECTION(s, i)) {
		CALL(s[i], print)("hello world !");
		CALL(s[i], println)("goodbye world");
	}
  }
  
  return 0;
}