code: function (oPathValue) {
  			if (oPathValue.value === undefined) {
  				return undefined;
  			}
  
  			Measurement.average(sPerformanceGetExpression, "", aPerformanceCategories);
  
  			if (!bSimpleParserWarningLogged
  					&& ManagedObject.bindingParser === BindingParser.simpleParser) {
  				Log.warning("Complex binding syntax not active", null, sAnnotationHelper);
  				bSimpleParserWarningLogged = true;
  			}
  
  			return Expression.expression(oPathValue).then(function (oResult) {
  				return Basics.resultToString(oResult, false, oPathValue.complexBinding);
  			}, function (e) {
  				if (e instanceof SyntaxError) {
  					return "Unsupported: " + BindingParser.complexParser.escape(
  						Basics.toErrorString(oPathValue.value));
  				}
  				throw e;
  			}).finally(function () {
  				Measurement.end(sPerformanceGetExpression);
  			}).unwrap();
  		}
docs: Calculates an expression. Ensures that errors that are thrown while processing are
  handled accordingly.
  
  @param {object} oPathValue
  path and value information pointing to the expression (see Expression object)
  @returns {Promise|string}
  the expression value or "Unsupported: oRawValue" in case of an error or
  <code>undefined</code> in case the raw value is undefined; may instead return a
  <code>Promise</code> resolving with that result.