function checkAggregationCache4NonHierarchy(sTitle, assert, oListBinding) {
		function strictEqual(vActual, vExpected, sMyTitle, oElement) {
			strictEqualSilent(assert, vActual, vExpected, sTitle, sMyTitle, oElement);
		}

		const aElements = oListBinding.oCache.aElements;
		strictEqual(aElements.length, aElements.$count, "$count");
		strictEqual(aElements.length, Object.keys(aElements.$byPredicate).length,
			"number of items in $byPredicate");
		for (const sPredicate in aElements.$byPredicate) {
			const oElement = aElements.$byPredicate[sPredicate];
			strictEqual(aElements.includes(oElement), true,
				`$byPredicate[${sPredicate}] in aElements`, oElement);
			strictEqual(_Helper.getPrivateAnnotation(oElement, "predicate"), sPredicate,
				`unknown predicate ${sPredicate}`, oElement);
			const oGroupLevelCache = _Helper.getPrivateAnnotation(oElement, "parent");
			if (oGroupLevelCache) {
				strictEqual(oGroupLevelCache.aElements.length, oGroupLevelCache.aElements.$count,
					"group level cache: $count");
				strictEqual(oGroupLevelCache.aElements.length,
					Object.keys(oGroupLevelCache.aElements.$byPredicate).length,
					"group level cache: number of items in $byPredicate");
				strictEqual(oGroupLevelCache.aElements.includes(oElement), true,
					`group level cache: ${sPredicate} in aElements`, oElement);
				strictEqual(oGroupLevelCache.aElements.$byPredicate[sPredicate], oElement,
					`group level cache: ${sPredicate} in aElements.$byPredicate`, oElement);
			}
		}
	}
Checks that the given list binding's non-hierarchical data aggregation has a consistent state
in relation to the elements of aElements matching to aElements.$byPredicate, for an
aggregation cache as well as for its group level caches. This is not applicable for
kept-alive elements outside the collection.

@param {string} sTitle - A test title
@param {object} assert - The QUnit assert object
@param {sap.ui.model.odata.v4.ODataListBinding} oListBinding - A list binding