async applyChange(oChange, oControl, mPropertyBag) {
					const oAppComponent = mPropertyBag.appComponent;
					const oChangeContent = oChange.getContent();
					const oChangeODataInformation = oChange.getSupportInformation().oDataInformation;
					const mFieldSelector = oChangeContent.newFieldSelector;
					const mCreateProperties = {
						appComponent: mPropertyBag.appComponent,
						view: mPropertyBag.view,
						fieldSelector: mFieldSelector,
						bindingPath: oChangeContent.bindingPath,
						modifier: mPropertyBag.modifier,
						element: oControl
					};
					// Check if the change is applicable
					if (mPropertyBag.modifier.bySelector(mFieldSelector, oAppComponent, mPropertyBag.view)) {
						await Base.markAsNotApplicable(
							`Control to be created already exists:${mFieldSelector.id || mFieldSelector}`,
							/* bAsync */true
						);
						return;
					}
					const oRevertData = {
						newFieldSelector: mFieldSelector
					};
					// revert data will be enhanced later on, but should be attached to the change
					// so that the addProperty-hook can access it and enhance it
					oChange.setRevertData(oRevertData);

					const DelegateMediatorAPI = await requireAsync("sap/ui/fl/apply/api/DelegateMediatorAPI");
					const mDelegate = await DelegateMediatorAPI.getWriteDelegateForControl({
						control: oControl,
						modifier: mPropertyBag.modifier
					});
					if (!mDelegate) {
						Base.markAsNotApplicable(
							`No delegate found for control ${mPropertyBag.modifier.getId(oControl)}`,
							/* bAsync */false
						);
					}
					const mInnerControls = await getControlsFromDelegate(
						oChangeContent,
						mDelegate,
						mCreateProperties,
						oChangeODataInformation
					);
					const mAddPropertySettings = merge({},
						{
							control: oControl,
							innerControls: mInnerControls,
							change: oChange
						},
						mPropertyBag
					);
					//------------------------
					// Call 'addProperty' hook!
					//------------------------
					await mAddViaDelegateSettings.addProperty(mAddPropertySettings);
					if (mInnerControls.valueHelp) {
						const oValueHelpSelector = mPropertyBag.modifier.getSelector(
							mPropertyBag.modifier.getId(mInnerControls.valueHelp),
							oAppComponent
						);
						const oRevertData = oChange.getRevertData();
						oRevertData.valueHelpSelector = oValueHelpSelector;
						oChange.setRevertData(oRevertData);
					}
					// If the control is a layoutControl it should be destroyed in the revert, which will also destroy the field
					if (mInnerControls.layoutControl) {
						const oRevertData = oChange.getRevertData();
						oRevertData.newFieldSelector = mPropertyBag.modifier.getSelector(
							mPropertyBag.modifier.getId(mInnerControls.control),
							oAppComponent
						);
						oChange.setRevertData(oRevertData);
					}
				}
Added a property from the model's metadata via delegate

@param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange - change object with instructions to be applied on the control map
@param {sap.ui.core.Control} oControl - Control that matches the change selector for applying the change
@param {object} mPropertyBag - property bag
@param {object} mPropertyBag.modifier - modifier for the controls
@param {object} mPropertyBag.view - application view
@returns {Promise<undefined>} to wait for execution
@public