docs: function (removing, adding) {
        var removeCnt, addCnt, hasDelta;
  
        if ('number' === typeof removing) {
          removeCnt = removing;
        } else if (removing) {
          removeCnt = _emberMetalProperty_get.get(removing, 'length');
        } else {
          removeCnt = removing = -1;
        }
  
        if ('number' === typeof adding) {
          addCnt = adding;
        } else if (adding) {
          addCnt = _emberMetalProperty_get.get(adding, 'length');
        } else {
          addCnt = adding = -1;
        }
  
        hasDelta = addCnt < 0 || removeCnt < 0 || addCnt - removeCnt !== 0;
  
        if (removing === -1) {
          removing = null;
        }
  
        if (adding === -1) {
          adding = null;
        }
  
        _emberMetalEvents.sendEvent(this, '@enumerable:change', [this, removing, adding]);
  
        if (hasDelta) {
          _emberMetalProperty_events.propertyDidChange(this, 'length');
        }
  
        _emberMetalProperty_events.propertyDidChange(this, '[]');
  
        return this;
      }