function fnHandleMenuItems(mPropertyBag) {
		const {
			buttons: aButtons,
			modifier: oModifier,
			appComponent: oAppComponent,
			menu: oMenu,
			actionToolbar: oActionToolbar,
			actionToolbarAggregation: sActionToolbarAggregation,
			view: oView,
			changeContent: oChangeContent,
			revertData: oRevertData
		} = mPropertyBag;

		let sPropertyEnabled = "";
		let sPropertyVisible = "";
		let sOR = "";
		const aMenuButtonModels = [];
		const bIsRtl = Localization.getRTL();
		const aMenuButtonName = [];

		return aButtons.reduce(async (oPreviousPromise, oButton, index) => {
			const iIndex = index;
			const oSelector = oChangeContent.buttonsIdForSave[iIndex];
			const sModelName = "$sap.m.flexibility.MenuButtonModel" + iIndex;
			const oActionToolbarAction = oModifier.getParent(oButton);

			await oPreviousPromise;

			const sButtonText = await oModifier.getProperty(oButton, "text");
			const oMenuItem = await oModifier.createControl("sap.m.MenuItem", oAppComponent, oView, oSelector);

			// Save the original position of the button
			const iIndexInParentAggregation = await oModifier.findIndexInParentAggregation(oActionToolbarAction);
			oRevertData.insertIndexes[iIndex] = iIndexInParentAggregation;

			const oManagedObjectModel = await oModifier.createControl(
				"sap.ui.fl.util.ManagedObjectModel",
				oAppComponent,
				oView,
				Object.assign({}, oSelector, {
					id: oSelector.id + '-managedObjectModel'
				}),
				{
					object: oButton,
					name: sCombineButtonsModelName
				}
			);
			// ManagedObjectModel should be placed in `dependents` aggregation of MenuItem
			await oModifier.insertAggregation(oMenuItem, "dependents", oManagedObjectModel, 0, oView);
			const oCustomData = await oModifier.createControl(
				"sap.ui.core.CustomData",
				oAppComponent,
				oView,
				Object.assign({}, oSelector, {
					id: oSelector.id + '-customData'
				}),
				{
					key: "{ path: '" + sCombineButtonsModelName + ">key' }",
					value: "{ path: '" + sCombineButtonsModelName + ">value' }"
				}
			);

			oModifier.bindProperty(oMenuItem, "text", sCombineButtonsModelName + ">/text");
			oModifier.bindProperty(oMenuItem, "icon", sCombineButtonsModelName + ">/icon");
			oModifier.bindProperty(oMenuItem, "enabled", sCombineButtonsModelName + ">/enabled");
			oModifier.bindProperty(oMenuItem, "visible", sCombineButtonsModelName + ">/visible");
			await oModifier.bindAggregation(oMenuItem, "customData", {
				path: sCombineButtonsModelName + ">/customData",
				template: oCustomData,
				templateShareable: false
			}, oView);

			// FIXME: will not work in XML in case original button has a binding on `text` property
			if (sButtonText) {
				if (bIsRtl) {
					aMenuButtonName.unshift(sButtonText);
				} else {
					aMenuButtonName.push(sButtonText);
				}
			}
			// Add suffix to the id, so we can get the original ids of the combined buttons
			// when we want to split the menu. The suffix is used in SplitMenuButton change handler.
			const oNewSelector = Object.assign({}, oSelector, {
				id: oSelector.id + '-originalButtonId'
			});

			// Create CustomData, holding the original ids of the combined buttons
			const oIdToSave = await oModifier.createControl("sap.ui.core.CustomData", oAppComponent, oView, oNewSelector);
			oModifier.setProperty(oIdToSave, "key", "originalButtonId");
			oModifier.setProperty(oIdToSave, "value", oModifier.getId(oButton));

			await oModifier.removeAggregation(oActionToolbar, sActionToolbarAggregation, oActionToolbarAction);

			// Adding each button control to the container's dependents aggregation
			await oModifier.insertAggregation(oActionToolbar, "dependents", oActionToolbarAction, 0, oView);

			// Saving original ID to original button to avoid conflict with aggregation binding for customData aggregation.
			// The new MenuItem will receive this data via ManagedObjectModel synchronization.
			await oModifier.insertAggregation(oButton, "customData", oIdToSave, 0, oView);
			await oModifier.insertAggregation(oMenu, "items", oMenuItem, iIndex, oView);

			// Create ManagedObjectModel for every MenuItem
			// later it will be placed in dependents aggregation of the MenuButton
			// and enabled and visibility properties of each item will be bound to the enabled and visibility property of the MenuButton
			aMenuButtonModels[iIndex] = await oModifier.createControl(
				"sap.ui.fl.util.ManagedObjectModel",
				oAppComponent,
				oView,
				Object.assign({}, oSelector, {
					id: oSelector.id + '-managedObjectModelMenuItem'
				}),
				{
					object: oMenuItem,
					name: sModelName
				}
			);

			// create binding expression for the visibility and enabled property of the MenuButton
			sPropertyEnabled = sPropertyEnabled + sOR + "${" + sModelName + ">/enabled}";
			sPropertyVisible = sPropertyVisible + sOR + "${" + sModelName + ">/visible}";
			sOR = " || ";

			return {
				menuButtonModels: aMenuButtonModels,
				menuButtonName: aMenuButtonName,
				propertyEnabled: sPropertyEnabled,
				propertyVisible: sPropertyVisible
			};
		}, Promise.resolve());
	}
Change handler for splitting sap.ui.mdc.actiontoolbar.ActionToolbarAction with sap.m.MenuButton into actions containing sap.m.Button(s).

@alias sap.ui.mdc.flexibility.actiontoolbar.CombineAction
@author SAP SE
@version ${version}