function propertyWillChange(obj, keyName) {
  var m = meta(obj, false), proto = m.proto, desc = m.descs[keyName];
  if (proto === obj) return ;
  if (desc && desc.willChange) desc.willChange(obj, keyName);
  dependentKeysWillChange(obj, keyName, m);
  chainsWillChange(obj, keyName, m);
  Ember.notifyBeforeObservers(obj, keyName);
}
/**
  This function is called just before an object property is about to change.
  It will notify any before observers and prepare caches among other things.

  Normally you will not need to call this method directly but if for some
  reason you can't directly watch a property you can invoke this method
  manually along with `Ember.propertyDidChange()` which you should call just
  after the property value changes.

  @memberOf Ember

  @param {Object} obj
    The object with the property that will change

  @param {String} keyName
    The property key (or path) that will change.

  @returns {void}
*/
This function is called just before an object property is about to change.
It will notify any before observers and prepare caches among other things.

Normally you will not need to call this method directly but if for some
reason you can't directly watch a property you can invoke this method
manually along with `Ember.propertyDidChange()` which you should call just
after the property value changes.
This function is called just before an object property is about to change . It will notify any before observers and prepare caches among other things . Normally you will not need to call this method directly but if for some reason you can ' t directly watch a property you can invoke this method manually along with ` Ember . propertyDidChange () ` which you should call just after the property value changes .
function propertyWillChange(obj, keyName) {
  var m = meta(obj, false), proto = m.proto, desc = m.descs[keyName];
  if (proto === obj) return ;
  if (desc && desc.willChange) desc.willChange(obj, keyName);
  dependentKeysWillChange(obj, keyName, m);
  chainsWillChange(obj, keyName, m);
  Ember.notifyBeforeObservers(obj, keyName);
}
function propertyWillChange ( obj , keyName ) { var m = meta ( obj , false ) , proto = m . proto , desc = m . descs [ keyName ] ; if ( proto === obj ) return ; if ( desc && desc . willChange ) desc . willChange ( obj , keyName ) ; dependentKeysWillChange ( obj , keyName , m ) ; chainsWillChange ( obj , keyName , m ) ; Ember . notifyBeforeObservers ( obj , keyName ) ; }
This function is called just before an object property is about to change.
This function is called just before an object property is about to change .