text: function f(a = 1, b = 2) {
    return a + b;
  }
  
  assert.equal(0, f.length);
  assert.equal(3, f());
  assert.equal(6, f(4));
  assert.equal(24, f(8, 16));
  
  assert.equal(3, f(undefined, undefined));
  assert.equal(33, f(undefined, 32));
  
  function g(a, b = a) {
    return a + b;
  }
  
  assert.equal(1, g.length);
  assert.equal(4, g(2));
  assert.equal(4, g(2, undefined));
  assert.equal(5, g(2, 3));
  
  function C(obj = this) {
    this.obj = obj;
  }
  
  assert.equal(0, C.length);
  
  var c = new C;
  assert.equal(c, c.obj);
  
  var c2 = new C(undefined);
  assert.equal(c2, c2.obj);
  
  var c3 = new C(42);
  assert.equal(42, c3.obj);
  
  function h(a = 1, b) {
    return {a: a, b: b};
  }
  
  assert.equal(1, h().a);
  assert.equal(2, h(2).a);
  assert.isUndefined(h().b);
  assert.isUndefined(h(2).b);
  assert.equal(4, h(3, 4).b);
  