function getAny(oWithControl, oBindingInfo, mSettings, oScope, bAsync) {
		var bValueAsPromise = false;

		/*
		 * Prepares the given binding info or part of it; makes it "one time" and binds its
		 * formatter function (if opted in) to an interface object.
		 *
		 * @param {object} oInfo
		 *   a binding info or a part of it
		 * @param {number} i
		 *   index of binding info's part (if applicable)
		 */
		function prepare(oInfo, i) {
			var fnFormatter = oInfo.formatter,
				sModelName = oInfo.model,
				oModel = oWithControl.getModel(sModelName);

			if (fnFormatter && fnFormatter.requiresIContext === true) {
				fnFormatter = oInfo.formatter
					= fnFormatter.bind(null, createContextInterface(oWithControl, mSettings, i));
			}
			// wrap formatter only if there is a formatter and async is allowed and either
			// - we use $$valueAsPromise ourselves, or
			// - we are top-level and at least one child has used $$valueAsPromise
			if (fnFormatter && bAsync
					&& (oModel && oModel.$$valueAsPromise || i === undefined && bValueAsPromise)) {
				oInfo.formatter = function () {
					var that = this;

					return SyncPromise.all(arguments).then(function (aArguments) {
						return fnFormatter.apply(that, aArguments);
					});
				};
				oInfo.formatter.textFragments = fnFormatter.textFragments;
			}
			oInfo.mode = BindingMode.OneTime;
			oInfo.parameters ??= {};
			oInfo.parameters.scope = oScope;
			if (bAsync && oModel && oModel.$$valueAsPromise) { // opt-in to async behavior
				bValueAsPromise = oInfo.parameters.$$valueAsPromise = true;
			}
		}

		try {
			oBindingInfo.parts.forEach(prepare);
			prepare(oBindingInfo);

			oWithControl.bindProperty("any", oBindingInfo);
			return SyncPromise.resolve(oWithControl.getAny());
		} catch (e) {
			return SyncPromise.reject(e);
		} finally {
			oWithControl.unbindProperty("any", true);
		}
	}
Gets the value of the control's "any" property via the given binding info.

@param {sap.ui.core.util._with} oWithControl
  the "with" control
@param {object} oBindingInfo
  the binding info which must be "ready" (because it refers only to models which are
  available) and normalized via {@link sap.ui.base.BindingIfo.createProperty}
@param {object} mSettings
  map/JSON-object with initial property values, etc.
@param {object} oScope
  map of currently known aliases
@param {boolean} bAsync
  whether async processing is allowed
@returns {sap.ui.base.SyncPromise|null}
  a sync promise which resolves with the property value or is rejected with a corresponding
  error (for example, an error thrown by a formatter)