function _adaptDeepChildObservation(caller, oControl, oAggregation, bObserve) {
		var aChildren = oAggregation.get(oControl) || [], oChild, bRecord;

		if (aChildren && !Array.isArray(aChildren) && !oAggregation.multiple) {
			aChildren = [aChildren];
		}

		for (var i = 0; i < aChildren.length; i++) {
			oChild = aChildren[i];
			if (!(oChild instanceof ManagedObject)) {
				continue;
			}
			bRecord = true;

			if (bObserve) {
				caller._oObserver.observe(oChild, {
					properties: true,
					aggregations: true
				});
			} else {
				caller._oObserver.unobserve(oChild, {
					properties: true,
					aggregations: true
				});
			}

			var mAggregations = oChild.getMetadata().getAllAggregations();

			for (var sKey in mAggregations) {
				_adaptDeepChildObservation(caller, oChild, mAggregations[sKey], bObserve);
			}
		}

		if (bRecord) {
			var sKey = oControl.getId() + "/@" + oAggregation.name;

			if (bObserve) {
				if (!caller._mObservedCount.aggregations[sKey]) {
					caller._mObservedCount.aggregations[sKey] = 0;
				}
				caller._mObservedCount.aggregations[sKey]++;
			} else {
				delete caller._mObservedCount.aggregations[sKey];
			}
		}
	}
Adapt the observation of child controls in order to be able to react when e.g. the value
of a select inside a list changed. Currently the MOM is not updated then

@param {object} caller the caller, here the managed object model
@param {sap.ui.base.ManagedObject} oControl the control which shall be (un)observed
@param {object} oAggregation the observed aggregation
@param {boolean} bObserve <code>true</code> for observing and <code>false</code> for unobserving

@private