function fnFindObjects(oObject) {
			var a, i, n;

			if (bIncludeBindingTemplates) {
				for ( n in oObject.mBindingInfos) {
					a = oObject.mBindingInfos[n].template;
					if (a) {
						if ( !fnCondition || fnCondition(a) ) {
							aAggregatedObjects.push(a);
						}
						if ( bRecursive ) {
							fnFindObjects(a);
						}
					}
				}
			}
			for ( n in oObject.mAggregations ) {
				a = oObject.mAggregations[n];
				if ( Array.isArray(a) ) {
					for ( i = 0; i < a.length; i++ ) {
						if ( !fnCondition || fnCondition(a[i]) ) {
							aAggregatedObjects.push(a[i]);
						}
						if ( bRecursive ) {
							fnFindObjects(a[i]);
						}
					}
				} else if (a instanceof ManagedObject) {
					if ( !fnCondition || fnCondition(a) ) {
						aAggregatedObjects.push(a);
					}
					if ( bRecursive ) {
						fnFindObjects(a);
					}
				}
			}
		}
Searches and returns all aggregated objects that pass the given check function.

When the search is done recursively (<code>bRecursive === true</code>), it will be
executed depth-first and ancestors will be added to the result array before their descendants.

If no check function is given, all aggregated objects will pass the check and be added
to the result array.

When setting <code>bIncludeBindingTemplates</code> to <code>true</code>, binding templates will be included
in the search.

<b>Take care:</b> this operation might be expensive.

@param {boolean} [bRecursive=false]
  Whether the whole aggregation tree should be searched
@param {function(sap.ui.base.ManagedObject):boolean} [fnCondition]
  Objects for which this function returns a falsy value will not be added to the result array
@param {boolean} [bIncludeBindingTemplates=false]
  Whether binding templates should be included
@returns {sap.ui.base.ManagedObject[]}
  Array of aggregated objects that passed the check
@public