code: function visitArray(aInstances, sMetaPath, sCollectionPath, sContextUrl) {
  			var mByPredicate = {}, i, iIndex, vInstance, sPredicate;
  
  			for (i = 0; i < aInstances.length; i += 1) {
  				vInstance = aInstances[i];
  				iIndex = sCollectionPath === "" ? iStart + i : i;
  
  				if (vInstance && typeof vInstance === "object") {
  					visitInstance(vInstance, sMetaPath, sCollectionPath, sContextUrl, iIndex);
  					sPredicate = _Helper.getPrivateAnnotation(vInstance, "predicate");
  					if (!sCollectionPath) {
  						// remember the key predicates / indices of the root entries to remove all
  						// messages for entities that have been read
  						aCachePaths.push(sPredicate || iIndex.toString());
  					}
  					if (sPredicate) {
  						mByPredicate[sPredicate] = vInstance;
  						aInstances.$byPredicate = mByPredicate;
  					}
  				}
  			}
  		}
docs: /*
  Calls visitInstance for all object entries of the given collection and creates the map
  $byPredicate from predicate to entity.
  
  @param {*[]} aInstances The collection
  @param {string} sMetaPath The meta path of the collection in mTypeForMetaPath
  @param {string} sCollectionPath The path of the collection
  @param {string} sContextUrl The context URL for message longtexts