src/sap.ui.core/src/sap/ui/model/odata/v4/lib/_Helper.js
function (mChangeListeners, sPath, oValue, bRemoved) {
			Object.keys(oValue).forEach(function (sProperty) {
				var sPropertyPath = _Helper.buildPath(sPath, sProperty),
					vValue = oValue[sProperty];

				if (vValue && typeof vValue === "object") {
					_Helper.fireChanges(mChangeListeners, sPropertyPath, vValue, bRemoved);
				} else {
					_Helper.fireChange(mChangeListeners, sPropertyPath,
						bRemoved ? undefined : vValue);
				}
			});

			_Helper.fireChange(mChangeListeners, sPath, bRemoved ? undefined : oValue);
		}
function (mChangeListeners, sPath, oValue, bRemoved) {
			Object.keys(oValue).forEach(function (sProperty) {
				var sPropertyPath = _Helper.buildPath(sPath, sProperty),
					vValue = oValue[sProperty];

				if (vValue && typeof vValue === "object") {
					_Helper.fireChanges(mChangeListeners, sPropertyPath, vValue, bRemoved);
				} else {
					_Helper.fireChange(mChangeListeners, sPropertyPath,
						bRemoved ? undefined : vValue);
				}
			});

			_Helper.fireChange(mChangeListeners, sPath, bRemoved ? undefined : oValue);
		}
function ( mChangeListeners , sPath , oValue , bRemoved ) { Object . keys ( oValue ) . forEach ( function ( sProperty ) { var sPropertyPath = _Helper . buildPath ( sPath , sProperty ) , vValue = oValue [ sProperty ] ; if ( vValue && typeof vValue === "object" ) { _Helper . fireChanges ( mChangeListeners , sPropertyPath , vValue , bRemoved ) ; } else { _Helper . fireChange ( mChangeListeners , sPropertyPath , bRemoved ? undefined : vValue ) ; } } ) ; _Helper . fireChange ( mChangeListeners , sPath , bRemoved ? undefined : oValue ) ; }
Iterates recursively over all properties of the given value and fires change events
to all listeners. Also fires a change event for the object itself, for example in case of
an advertised action.

@param {object} mChangeListeners A map of change listeners by path
@param {string} sPath The path of the current value
@param {object} oValue The value
@param {boolean} bRemoved If true the value is assumed to have been removed and the
change event reports undefined as the new value
Iterates recursively over all properties of the given value and fires change events to all listeners . Also fires a change event for the object itself for example in case of an advertised action .