code: function computedAnnotation(sSegment, sPath) {
  				var fnAnnotation,
  					iThirdAt = sSegment.indexOf("@", 2);
  
  				if (iThirdAt > -1) {
  					return log(WARNING, "Unsupported path after ", sSegment.slice(0, iThirdAt));
  				}
  
  				sSegment = sSegment.slice(2);
  				fnAnnotation = sSegment[0] === "."
  					? ObjectPath.get(sSegment.slice(1), mParameters.scope)
  					: mParameters && ObjectPath.get(sSegment, mParameters.scope)
  						|| (sSegment === "requestCurrencyCodes"
  							|| sSegment === "requestUnitsOfMeasure"
  							? that[sSegment].bind(that)
  							: ObjectPath.get(sSegment));
  				if (typeof fnAnnotation !== "function") {
  					// Note: "varargs" syntax does not help because Array#join ignores undefined
  					return log(WARNING, sSegment, " is not a function but: " + fnAnnotation);
  				}
  
  				try {
  					vResult = fnAnnotation(vResult, {
  						$$valueAsPromise : mParameters && mParameters.$$valueAsPromise,
  						context : new BaseContext(that, sPath),
  						schemaChildName : sSchemaChildName
  					});
  				} catch (e) {
  					log(WARNING, "Error calling ", sSegment, ": ", e);
  				}
  
  				return true;
  			}
docs: /*
  Calls a computed annotation according to the given segment which was found at the
  given path; changes <code>vResult</code> accordingly.
  
  @param {string} sSegment
  Contains the name of the computed annotation as "@@..."
  @param {string} sPath
  Path where the segment was found
  @returns {boolean}
  <code>true</code>