public function testRest()
 {
     $numbers = array(1, 2, 3, 4);
     // from js
     $this->assertEquals(array(2, 3, 4), __u::rest($numbers), 'working rest()');
     $this->assertEquals(array(1, 2, 3, 4), __u::rest($numbers, 0), 'working rest(0)');
     $this->assertEquals(array(3, 4), __u::rest($numbers, 2), 'rest can take an index');
     $func = function () {
         return __u(func_get_args())->tail();
     };
     $result = $func(1, 2, 3, 4);
     $this->assertEquals(array(2, 3, 4), $result, 'aliased as tail and works on arguments');
     $result = __u::map(array(array(1, 2, 3), array(1, 2, 3)), function ($vals) {
         return __u::rest($vals);
     });
     $this->assertEquals('2,3,2,3', join(',', __u::flatten($result)), 'works well with __::map');
     // extra
     $this->assertEquals(array('b', 'c'), __u::tail(array('a', 'b', 'c')));
     // docs
     $this->assertEquals(array(4, 3, 2, 1), __u::rest(array(5, 4, 3, 2, 1)));
 }