public/lib/emberjs/ember.js
function(removing, adding) {

        var removeCnt, addCnt, hasDelta;

        if ('number' === typeof removing) removeCnt = removing;
        else if (removing) removeCnt = get(removing, 'length');
        else removeCnt = removing = -1;

        if ('number' === typeof adding) addCnt = adding;
        else if (adding) addCnt = 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;

        propertyWillChange(this, '[]');
        if (hasDelta) propertyWillChange(this, 'length');
        sendEvent(this, '@enumerable:before', [this, removing, adding]);

        return this;
      }
function(removing, adding) {

        var removeCnt, addCnt, hasDelta;

        if ('number' === typeof removing) removeCnt = removing;
        else if (removing) removeCnt = get(removing, 'length');
        else removeCnt = removing = -1;

        if ('number' === typeof adding) addCnt = adding;
        else if (adding) addCnt = 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;

        propertyWillChange(this, '[]');
        if (hasDelta) propertyWillChange(this, 'length');
        sendEvent(this, '@enumerable:before', [this, removing, adding]);

        return this;
      }
function ( removing , adding ) { var removeCnt , addCnt , hasDelta ; if ( 'number' === typeof removing ) removeCnt = removing ; else if ( removing ) removeCnt = get ( removing , 'length' ) ; else removeCnt = removing = - 1 ; if ( 'number' === typeof adding ) addCnt = adding ; else if ( adding ) addCnt = 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 ; propertyWillChange ( this , '[]' ) ; if ( hasDelta ) propertyWillChange ( this , 'length' ) ; sendEvent ( this , '@enumerable:before' , [ this , removing , adding ] ) ; return this ; }
Invoke this method just before the contents of your enumerable will
change. You can either omit the parameters completely or pass the objects
to be removed or added if available or just a count.

@method enumerableContentWillChange
@param {Ember.Enumerable|Number} removing An enumerable of the objects to
be removed or the number of items to be removed.
@param {Ember.Enumerable|Number} adding An enumerable of the objects to be
added or the number of items to be added.
@chainable
Invoke this method just before the contents of your enumerable will change . You can either omit the parameters completely or pass the objects to be removed or added if available or just a count .