anchor.diff:  component extends="mxunit.framework.TestCase" {
   	public void function testFirst() {
   	    var firstWrapper = function (x) {return _.first(x);};
  -	    assertEquals(_.first([1,2,3]), 1, 'can pull out the first element of an array');
  +	    assertEquals(1, _.first([1,2,3]), 'can pull out the first element of an array');
   	    // assertEquals(_([1, 2, 3]).first(), 1, 'can perform OO-style "first()"');
  -	    assertEquals(_.first([1,2,3], 0), [], 'can pass an index to first');
  -	    assertEquals(_.first([1,2,3], 2), [1, 2], 'can pass an index to first');
  -	    assertEquals(_.first([1,2,3], 5), [1, 2, 3], 'can pass an index to first');
  +	    assertEquals([],        _.first([1,2,3], 0), 'can pass an index to first');
  +	    assertEquals([1, 2],    _.first([1,2,3], 2), 'can pass an index to first');
  +	    assertEquals([1, 2, 3], _.first([1,2,3], 5), 'can pass an index to first');
   	    var result = _.map([[1,2,3], [1,2,3]], firstWrapper);
  -	    assertEquals(result, [1,1], 'works well with _.map');
  +	    assertEquals([1,1], result, 'works well with _.map');
   	    result = function() { return _.take([1,2,3], 2); };
  -	    assertEquals(result(), [1,2], 'aliased as take');
  +	    assertEquals([1,2], result(), 'aliased as take');
   	    result = function() { return _.head([1,2,3], 2); };
  -	    assertEquals(result(), [1,2], 'aliased as head');
  +	    assertEquals([1,2], result(), 'aliased as head');
   	}
   	
   	public void function testRest() {
   		var numbers = [1, 2, 3, 4];
   		var restWrapper = function (x) { return _.rest(x); };
  -		assertEquals(_.rest(numbers), [2, 3, 4], 'working rest()');
  -		assertEquals(_.rest(numbers, 1), [1, 2, 3, 4], 'working rest(0)');
  -		assertEquals(_.rest(numbers, 3), [3, 4], 'rest can take an index');
   		var result = _.map([[1,2,3],[1,2,3]], restWrapper);
  -		assertEquals(_.flatten(result), [2,3,2,3], 'works well with _.map');		
  +		assertEquals([2, 3, 4],    _.rest(numbers), 'working rest()');
  +		assertEquals([1, 2, 3, 4], _.rest(numbers, 1), 'working rest(0)');
  +		assertEquals([3, 4],       _.rest(numbers, 3), 'rest can take an index');
  +		assertEquals([2,3,2,3],    _.flatten(result), 'works well with _.map');		
   	}
   	
   	public void function testInitial() {
   		var initialWrapper = function (x) { return _.initial(x); };
  -		assertEquals(_.initial([1,2,3,4,5]), [1, 2, 3, 4], 'working initial()');
  -		assertEquals(_.initial([1,2,3,4],2), [1, 2], 'initial can take an index');
   		var result = _.map([[1,2,3],[1,2,3]], initialWrapper);
  -		assertEquals(_.flatten(result), [1,2,1,2], 'initial works with _.map');		
  +		assertEquals([1, 2, 3, 4], _.initial([1,2,3,4,5]), 'working initial()');
  +		assertEquals([1, 2],       _.initial([1,2,3,4],2), 'initial can take an index');
  +		assertEquals([1,2,1,2],    _.flatten(result), 'initial works with _.map');		
   	}
   	
   	public void function testLast() {
   		var lastWrapper = function (x) { return _.last(x); };
  -		assertEquals(_.last([1,2,3]), 3, 'can pull out the last element of an array');
  -		assertEquals(_.last([1,2,3], 0), [], 'can pass an index to last');
  -		assertEquals(_.last([1,2,3], 2), [2, 3], 'can pass an index to last');
  -		assertEquals(_.last([1,2,3], 5), [1, 2, 3], 'can pass an index to last');
   		var result = _.map([[1,2,3],[1,2,3]], lastWrapper);
  -		assertEquals(result, [3,3], 'works well with _.map');		
  +		assertEquals(3,         _.last([1,2,3]), 'can pull out the last element of an array');
  +		assertEquals([],        _.last([1,2,3], 0), 'can pass an index to last');
  +		assertEquals([2, 3],    _.last([1,2,3], 2), 'can pass an index to last');
  +		assertEquals([1, 2, 3], _.last([1,2,3], 5), 'can pass an index to last');
  +		assertEquals([3,3],     result, 'works well with _.map');		
   	}
   	
   	public void function testCompact() {
  -		assertEquals(arrayLen(_.compact([0, 1, false, 2, false, 3])), 3, 'can trim out all falsy values');
  +		assertEquals(3, arrayLen(_.compact([0, 1, false, 2, false, 3])), 'can trim out all falsy values');
   	}
   	
   	public void function testFlatten() {
   		var list = [1, [2], [3, [[[4]]]]];
  -		assertEquals(_.flatten(list), [1,2,3,4], 'can flatten nested arrays');
  -		assertEquals(_.flatten(list, true), [1,2,3,[[[4]]]], 'can shallowly flatten nested arrays');
  +		assertEquals([1,2,3,4],       _.flatten(list), 'can flatten nested arrays');
  +		assertEquals([1,2,3,[[[4]]]], _.flatten(list, true), 'can shallowly flatten nested arrays');
   	}
   	
   	public void function testWithout() {
   		var list = [1, 2, 1, 0, 3, 1, 4];
  -		assertEquals(_.without(list, [0, 1]), [2, 3, 4], 'can remove all instances of an object');
  +		assertEquals([2, 3, 4], _.without(list, [0, 1]), 'can remove all instances of an object');
   		list = [{one: 1}, {two: 2}];
  -		assertTrue(arrayLen(_.without(list, [{one: 1}])) == 1, 'works with structs');
  -	}
  -	
  -	
  +		assertEquals(1, arrayLen(_.without(list, [{one: 1}])), 'works with structs');
  +	}
  +		
   	public void function testUniq() {
   	    var list = [1, 2, 1, 3, 1, 4];
  -	    assertEquals(_.uniq(list), [1, 2, 3, 4], 'can find the unique values of an unsorted array');
  +	    assertEquals([1, 2, 3, 4], _.uniq(list), 'can find the unique values of an unsorted array');
   
   	    var list = [1, 1, 1, 2, 2, 3];
  -	    assertEquals(_.uniq(list, true), [1, 2, 3], 'can find the unique values of a sorted array faster');
  +	    assertEquals([1, 2, 3], _.uniq(list, true), 'can find the unique values of a sorted array faster');
   
   	    var list = [{name:'moe'}, {name:'curly'}, {name:'larry'}, {name:'curly'}];
   	    var iterator = function(value) { return value.name; };
  -	    assertEquals(_.map(_.uniq(list, false, iterator), iterator), ['moe', 'curly', 'larry'], 'can find the unique values of an array using a custom iterator');
  +	    assertEquals(['moe', 'curly', 'larry'], _.map(_.uniq(list, false, iterator), iterator), 'can find the unique values of an array using a custom iterator');
   
   	    var iterator = function(value) { return value + 1; };
   	    var list = [1, 2, 2, 3, 4, 4];
  -	    assertEquals(_.uniq(list, true, iterator), [1, 2, 3, 4], 'iterator works with sorted array');
  +	    assertEquals([1, 2, 3, 4], _.uniq(list, true, iterator), 'iterator works with sorted array');
   
   	    var list = [];
   	    list[8] = 2;
  
positive.code: 	    var numbers = [10, 20, 30, 40, 50];
  	    var num = 35;
  	    var index = _.indexOf(numbers, num, true);
  	    assertEquals(index, 0, '35 is not in the list');
  
  	    numbers = [10, 20, 30, 40, 50]; 
  	    num = 40;
  	    index = _.indexOf(numbers, num, true);
  	    assertEquals(index, 4, '40 is in the list');
  
  	    numbers = [1, 40, 40, 40, 40, 40, 40, 40, 50, 60, 70]; 
  	    num = 40;
  	    index = _.indexOf(numbers, num, true);
  	    assertequals(index, 2, '40 is in the list');
  
  	    numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
  		index = _.indexOf(numbers, 2, 6);
  		assertEquals(index, 8, 'supports the fromIndex argument');
  
  	    numbers = [1, 2, 3, 1];
  		index = _.indexOf(numbers, 1, 5);
  		assertEquals(index, 0, 'handles invalid fromIndex argument');		
  	}
  	
  	public void function testLastIndexOf() {
  		var numbers = [1, 0, 1];	
  		assertEquals(_.lastIndexOf(numbers, 1), 3);
  	    var numbers = [1, 0, 1, 0, 0, 1, 0, 0, 0];
  	    assertEquals(_.lastIndexOf(numbers, 0), 9, 'lastIndexOf the other element');
  	    numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
  	    var index = _.lastIndexOf(numbers, 2, 2);
  	    assertEquals(index, 2, 'supports the fromIndex argument');
  	    // var result = (function(){ return _.lastIndexOf(arguments, 1); })(1, 0, 1, 0, 0, 1, 0, 0, 0);
  	    // equal(result, 5, 'works on an arguments object');
  	}
  	
  	public void function testRange() {
  		assertEquals(_.range(0), [], 'range with 0 as a first argument generates an empty array');
  		assertEquals(_.range(4), [0, 1, 2, 3], 'range with a single positive argument generates an array of elements 0,1,2,...,n-1');
  		assertEquals(_.range(5, 8), [5, 6, 7], 'range with two arguments a &amp; b, a&lt;b generates an array of elements a,a+1,a+2,...,b-2,b-1');
  		assertEquals(_.range(8, 5), [], 'range with two arguments a &amp; b, b&lt;a generates an empty array');
  		assertEquals(_.range(3, 10, 3), [3, 6, 9], 'range with three arguments a &amp; b &amp; c, c &lt; b-a, a &lt; b generates an array of elements a,a+c,a+2c,...,b - (multiplier of a) &lt; c');
  		assertEquals(_.range(3, 10, 15), [3], 'range with three arguments a &amp; b &amp; c, c &gt; b-a, a &lt; b generates an array with a single element, equal to a');
  		assertEquals(_.range(12, 7, -2), [12, 10, 8], 'range with three arguments a &amp; b &amp; c, a &gt; b, c &lt; 0 generates an array of elements a,a-c,a-2c and ends with the number not less than b');
  		assertEquals(_.range(0, -10, -1), [0, -1, -2, -3, -4, -5, -6, -7, -8, -9], 'final example in the Python docs');		
  	}
  	
  	public void function testconcat() {
  		assertEquals(_.concat([], []), [], 'Concatenating two empty arrays results in an empty array');
  		assertEquals(_.concat([1], [1]), [1, 1], 'Concatenating two arrays with same value results in array with both values');
  		assertEquals(_.concat([], [1]), [1], 'Concatenating an empty array with a non-empty array results in non-empty array');
  		assertEquals(_.concat([1], []), [1], 'Concatenating an empty array with a non-empty array results in non-empty array');
  		assertEquals(_.concat([{one:1}], [{two:2}]), [{one:1}, {two:2}], 'Can concatenate arrays of structs');
  		assertEquals(_.concat([true], [false]), [true, false], 'Can concatenate arrays of booleans');
  	}
  
  	public void function testTakeWhile() {
  
negative.code: 	
  	public void function testDifference() {
  	    var result = _.difference([1, 2, 3], [2, 30, 40]);
  	    assertEquals([1, 3], result, 'takes the difference of two arrays');
  
  	    var result = _.difference([1, 2, 3, 4], [[2, 30, 40], [1, 11, 111]]);
  	    assertEquals([3, 4], result, 'takes the difference of three arrays');
  	}
  	
  	public void function testZip() {
  