function (oInterface, oPathValue) {
			var bExpression = oPathValue.asExpression,
				aParts = [],
				oResult,
				aResults = [];

			// needed so that we can safely call the forEach
			Basics.expectType(oPathValue, "array");
			oPathValue.value.forEach(function (oUnused, i) {
				// an embedded concat must use expression binding
				oResult = Expression.parameter(oInterface, oPathValue, i);
				// if any parameter is type expression, the concat must become expression, too
				bExpression = bExpression || oResult.result === "expression";
				aResults.push(oResult);
			});
			// convert the results to strings after we know whether the result is expression
			aResults.forEach(function (oResult) {
				if (bExpression) {
					// the expression might have a lower operator precedence than '+'
					Expression.wrapExpression(oResult);
				}
				if (oResult.type !== 'edm:Null') {
					// ignore null (otherwise the string 'null' would appear in expressions)
					aParts.push(Basics.resultToString(oResult, bExpression, oPathValue.withType));
				}
			});
			oResult = bExpression
				? {result : "expression", value : aParts.join("+")}
				: {result : "composite", value : aParts.join("")};
			oResult.type = "Edm.String";
			return oResult;
		}
function (oInterface, oPathValue) {
			var bExpression = oPathValue.asExpression,
				aParts = [],
				oResult,
				aResults = [];

			// needed so that we can safely call the forEach
			Basics.expectType(oPathValue, "array");
			oPathValue.value.forEach(function (oUnused, i) {
				// an embedded concat must use expression binding
				oResult = Expression.parameter(oInterface, oPathValue, i);
				// if any parameter is type expression, the concat must become expression, too
				bExpression = bExpression || oResult.result === "expression";
				aResults.push(oResult);
			});
			// convert the results to strings after we know whether the result is expression
			aResults.forEach(function (oResult) {
				if (bExpression) {
					// the expression might have a lower operator precedence than '+'
					Expression.wrapExpression(oResult);
				}
				if (oResult.type !== 'edm:Null') {
					// ignore null (otherwise the string 'null' would appear in expressions)
					aParts.push(Basics.resultToString(oResult, bExpression, oPathValue.withType));
				}
			});
			oResult = bExpression
				? {result : "expression", value : aParts.join("+")}
				: {result : "composite", value : aParts.join("")};
			oResult.type = "Edm.String";
			return oResult;
		}
function ( oInterface , oPathValue ) { var bExpression = oPathValue . asExpression , aParts = [ ] , oResult , aResults = [ ] ; // needed so that we can safely call the forEach Basics . expectType ( oPathValue , "array" ) ; oPathValue . value . forEach ( function ( oUnused , i ) { // an embedded concat must use expression binding oResult = Expression . parameter ( oInterface , oPathValue , i ) ; // if any parameter is type expression, the concat must become expression, too bExpression = bExpression || oResult . result === "expression" ; aResults . push ( oResult ) ; } ) ; // convert the results to strings after we know whether the result is expression aResults . forEach ( function ( oResult ) { if ( bExpression ) { // the expression might have a lower operator precedence than '+' Expression . wrapExpression ( oResult ) ; } if ( oResult . type !== 'edm:Null' ) { // ignore null (otherwise the string 'null' would appear in expressions) aParts . push ( Basics . resultToString ( oResult , bExpression , oPathValue . withType ) ) ; } } ) ; oResult = bExpression ? { result : "expression" , value : aParts . join ( "+" ) } : { result : "composite" , value : aParts . join ( "" ) } ; oResult . type = "Edm.String" ; return oResult ; }
Handling of "14.5.3.1.1 Function odata.concat".

@param {sap.ui.core.util.XMLPreprocessor.IContext|sap.ui.model.Context} oInterface
the callback interface related to the current formatter call
@param {object} oPathValue
path and value information pointing to the parameters array (see Expression object)
@returns {object}
the result object
Handling of 14 . 5 . 3 . 1 . 1 Function odata . concat .
Converts an array of parameters to strings