function each(collection, delegate) {
	if (util.isArray(collection) || util.isArguments(collection)) {
		for(var i=0; i<collection.length;i++) delegate(collection[i]);
	} else if (collection instanceof Collection){
		for(var it=collection.iterator(); it.hasNext();) delegate(it.next());
	} else {
		util.assert(false, "Expected list or collection, got {0}", collection);
	}
}
function isCollection(collection){
	return util.isArray(collection) || util.isArguments(collection) || collection instanceof Collection;
}