code: function ensureLength (self, _newLength) {
    var newLength;
    if (_newLength > MAX_LENGTH) {
      newLength = MAX_LENGTH;
    } else {
      newLength = _newLength | 0;
    }
    var proto = Object.getPrototypeOf(self);
    var cur = proto[length] | 0;
    var num = newLength - cur;
    if (num > 0) {
      var desc = {};
      debug('creating a descriptor object with %o entries', num);
      for (var i = cur; i < newLength; i++) {
        desc[i] = setup(i);
      }
      debug('calling `Object.defineProperties()` with %o entries', num);
      Object.defineProperties(proto, desc);
      proto[length] = newLength;
    }
    return newLength;
  }
docs: Ensures that getters/setters from 0 up to "_newLength" have been defined
  on `Object.getPrototypeOf(this)`.
  
  @api private