createLayout(mPropertyBag) {
			var bParametersValid =
				checkCommonParametersForControl(mPropertyBag)
				&& mPropertyBag.fieldSelector
				&& typeof mPropertyBag.fieldSelector === "object"
				&& typeof mPropertyBag.fieldSelector.id === "string";

			if (bParametersValid) {
				if (!mPropertyBag.payload.useCreateLayout) {
					return Promise.resolve();
				}
				var oLayout;
				var oValueHelp;
				var mSpecificControlInfo;
				var mLayoutSettings = merge({}, mPropertyBag);
				var oModifier = mLayoutSettings.modifier;
				mLayoutSettings.fieldSelector.id += "-field";

				return TestDelegate.createControlForProperty(mLayoutSettings)
				.then(function(mCreatedSpecificControlInfo) {
					mSpecificControlInfo = mCreatedSpecificControlInfo;
					oValueHelp = mSpecificControlInfo.valueHelp;
					return oModifier.createControl(
						mLayoutSettings.payload.layoutType,
						mLayoutSettings.appComponent,
						mLayoutSettings.view,
						mPropertyBag.fieldSelector
					);
				})
				.then(function(oCreatedLayout) {
					oLayout = oCreatedLayout;
					return oModifier.insertAggregation(
						oLayout,
						mLayoutSettings.payload.aggregation,
						mSpecificControlInfo.control,
						0,
						mLayoutSettings.view
					);
				})
				.then(function() {
					// some layout controls do not require a label control
					if (mLayoutSettings.payload.labelAggregation) {
						var mCreateLabelInfo = {
							labelFor: oModifier.getId(mSpecificControlInfo.control),
							...mLayoutSettings
						};
						return TestDelegate.createLabel(mCreateLabelInfo);
					}
					return undefined;
				})
				.then(function(oLabel) {
					if (oLabel) {
						return oModifier.insertAggregation(
							oLayout,
							mLayoutSettings.payload.labelAggregation,
							oLabel,
							0,
							mLayoutSettings.view
						);
					}
					return undefined;
				})
				.then(function() {
					return {
						control: oLayout,
						valueHelp: oValueHelp
					};
				});
			}
			return undefined;
		}
@params {string} mPropertyBag.payload.layoutType - Control type for layout
	@params {string} mPropertyBag.payload.aggregation - Layout aggregation for field control
	@params {string} [mPropertyBag.payload.labelAggregation] - Layout aggregation for label control if applicable
	@params {boolean} [mPropertyBag.payload.useCreateLayout] - Indicates if only createLayout() should be used for control creation

	@override
	@inheritdoc