function _getDataType(oBindingInfo) {

		// use type from item template key
		if (oBindingInfo.template) {
			let oDataType;
			if (oBindingInfo.template.mBindingInfos.key) {
				const oKeyBindingInfo = oBindingInfo.template.mBindingInfos.key;
				oDataType = this.getContentFactory().getDataType();
				if (oKeyBindingInfo.type && (!oDataType || oDataType.getMetadata().getName() !== oKeyBindingInfo.type.getMetadata().getName())) {
					this._oContentFactory.setDataType(oKeyBindingInfo.type);
					this.invalidate(); // as new inner control might be needed
				}
			}
			if (oBindingInfo.template.mBindingInfos.description) {
				const oDescriptionBindingInfo = oBindingInfo.template.mBindingInfos.description;
				oDataType = this.getContentFactory().getAdditionalDataType();
				if (oDescriptionBindingInfo.type && (!oDataType || oDataType.getMetadata().getName() !== oDescriptionBindingInfo.type.getMetadata().getName())) {
					this._oContentFactory.setAdditionalDataType(oDescriptionBindingInfo.type);
					this.invalidate(); // as new inner control might be needed
				}
			}
		}

	}
Returns a <code>Promise</code> for the change. The <code>Promise</code> returns the items when it is resolved.
If the <code>change</code> event is synchronous, the <code>Promise</code> has already been resolved. If it is asynchronous,
it will be resolved after the items have been updated.

The <code>MultiValueField</code> control should be set to busy during the parsing to prevent user input.
As there might be a whole group of fields that need to be busy, this cannot be done automatically.