anchor.diff:  	    list[33] = "hi";
   
   	    var result = _.uniq(list, true);
  -		assertEquals(result, [2, 5, 8, "hi"], "Works with sorted sparse arrays where `undefined` elements are elided");
  -		assertEquals(arrayLen(result), 4, "The resulting array should not be sparse");
  +		assertEquals([2, 5, 8, "hi"], result, "Works with sorted sparse arrays where `undefined` elements are elided");
  +		assertEquals(4, arrayLen(result), "The resulting array should not be sparse");
   	}
   	
   	public void function testIntersection() {
   	    var stooges = ['moe', 'curly', 'larry'];
   	    var leaders = ['moe', 'groucho'];
  -	    assertEquals(_.intersection(stooges, leaders), ['moe'], 'can take the set intersection of two arrays');
  -	    // assertEquals(_(stooges).intersection(leaders).join(''), 'moe', 'can perform an OO-style intersection');
  +	    assertEquals(['moe'], _.intersection(stooges, leaders), 'can take the set intersection of two arrays');
  +	    // assertEquals('moe', _(stooges).intersection(leaders).join(''), 'can perform an OO-style intersection');
   	    // var result = (function(){ return _.intersection(arguments, leaders); })('moe', 'curly', 'larry');
  -	    // equal(result.join(''), 'moe', 'works on an arguments object');
  +	    // equal('moe', result.join(''), 'works on an arguments object');
   	}
   	
   	public void function testUnion() {
  
positive.code: 			return val < 3;
  		});
  
  		assertEquals(result, [1, 2], 'takeWhile stops when it should');
  
  		var result = _.takeWhile(ary, function(val) {
  			return val < 1;
  		});
  
  		assertEquals(result, [], 'takeWhile can return nothing');
  
  		var result = _.takeWhile(ary, function(val) {
  			return val < 5;
  		});
  
  		assertEquals(result, [1, 2, 3, 4, 1, 2], 'takeWhile can return the whole array');
  	}
  
  	public void function testSplice() {
  		var ary = [5, 4, 3, 2, 1, 0];
  
  		var result = _.splice(ary, 1, 0);
  		assertEquals(result, ary);
  
  		var result = _.splice(ary, 1, 0, 9);
  		assertEquals(result, [9, 5, 4, 3, 2, 1, 0]);
  
  		var result = _.splice(ary, 7, 0, 9);
  		assertEquals(result, [5, 4, 3, 2, 1, 0, 9]);
  
  		var result = _.splice(ary, 1, 6, 9, 10, 11);
  		assertEquals(result, [9, 10, 11]);				
  	}
  
  	public void function testPush() {
  		var result = _.push([], 10);
  		assertEquals(result, [10], 'Basic push');
  
  		var result = _.push([], -22);
  		assertEquals(result, [-22], 'Negative push');
  
  		var result = _.push(["first"], "second");
  		assertEquals(result, ["first", "second"], 'Pre-existing values still exist');
  
  		var result = _.push([], 11, -33, "a", {}, [], 0, "");
  		var expected = [11, -33, "a", {}, [], 0, ""];
  		assertEquals(result, 
  			expected, 
  			'Multiple push with various types');
  
  		var _ary = _.init([]);
  		_ary.push([], 10);
  		assertEquals(_ary.value(), [], 'Does not modify wrapped array');		
  	}
  
  	public void function testPop() {
  		var result = _.pop([10, 20]);
  		assertEquals(result, 20, 'pop returns last element');
  	}
  
  	public void function testUnshift() {
  		var result = _.unshift(["last"], "first", "second");
  		var expected = ["first", "second", "last"];
  		assertEquals(result, expected, "adds elements to beginning of array");
  
  		var result = _.unshift(["single"]);
  		var expected = ["single"];
  		assertEquals(result, expected, "adding nothing results in same array");
  	}
  
  	public void function testShift() {
  		var result = _.shift(["first", "second", "third"]);
  		var expected = "first";
  		assertEquals(result, expected, "returns first element");
  	}
  
  	public void function testJoin() {
  		var result = _.join(["one", "two", "three"]);
  		var expected = "one two three";
  		assertEquals(result, expected, "should join strings");
  
  		var result = _.join([1, 2, 3]);
  		var expected = "1 2 3";
  		assertEquals(result, expected, "should join numbers");
  
  		var result = _.join([1, 2], " and ");
  		var expected = "1 and 2";
  		assertEquals(result, expected, "custom separator");
  	}
  
  	public void function testSlice() {
  		var ary = [1, 2, 3, 4, 5];
  		assertEquals( [], _.slice(ary, 1, 0) );
  		assertEquals( [], _.slice(ary, 2, 0) );
  		assertEquals( [4, 5], _.slice(ary, 4) );
  		assertEquals( [2, 3, 4], _.slice(ary, 2, 4) );
  		assertEquals( [2, 3], _.slice(ary, 2, -2) );
  		assertEquals( [], _.slice(ary, -1, 0) );
  		assertEquals( [], _.slice(ary, -1, 3) );
  		assertEquals( [5], _.slice(ary, -1, 5) );
  		assertEquals( [3, 4, 5], _.slice(ary, -3, 5) );
  	}
  
  
negative.code: 	    var ages = [30, 40, 50];
  	    var leaders = [true];
  	    var stooges = _.zip(names, ages, leaders);
  	    assertEquals([['moe',30,true],['larry',40],['curly',50]], stooges, 'zipped together arrays of different lengths');
  	}
  	
  	public void function testObject() {
  