code: function process(vValue, oModel, sPath, iCurrentLevel, iMaxLevel) {
  			var bReachedMaxLevel = iCurrentLevel === iMaxLevel;
  			if (bReachedMaxLevel) {
  				Log.warning("BindingResolver maximum level processing reached. Please check for circular dependencies.");
  			}
  
  			if (!vValue || bReachedMaxLevel) {
  				return vValue;
  			}
  
  			if (Array.isArray(vValue)) {
  				vValue.forEach(function (vItem, iIndex, aArray) {
  					if (typeof vItem === "object") {
  						process(vItem, oModel, sPath, iCurrentLevel + 1, iMaxLevel);
  					} else if (typeof vItem === "string") {
  						aArray[iIndex] = resolveBinding(vItem, oModel, sPath);
  					}
  				}, this);
  				return vValue;
  			} else if (typeof vValue === "object") {
  				for (var sProp in vValue) {
  					if (typeof vValue[sProp] === "object") {
  						process(vValue[sProp], oModel, sPath, iCurrentLevel + 1, iMaxLevel);
  					} else if (typeof vValue[sProp] === "string") {
  						vValue[sProp] = resolveBinding(vValue[sProp], oModel, sPath);
  					}
  				}
  				return vValue;
  			} else if (typeof vValue === "string") {
  				return resolveBinding(vValue, oModel, sPath);
  			} else {
  				return vValue;
  			}
  		}
docs: Traverses an object and resolves all binding syntaxes.
  
  @param {*} vValue The value to resolve.
  @param {sap.ui.model.Model} oModel The model.
  @param {string} [sPath] The path to take.
  @param {number} iCurrentLevel The current level of recursion.
  @param {number} iMaxLevel The maximum level of recursion.
  @private
  @returns {*} The resolved value.