function setTechnicalURLParameterValues(mPropertyBag) {
		const oModel = mPropertyBag.model;
		const oURLParsingService = oModel.getUShellService("URLParsing");
		const oNavigationService = oModel.getUShellService("Navigation");
		const oParsedHash = oURLParsingService?.parseShellHash(hasher.getHash());

		if (oParsedHash?.params) {
			const mOldHashParams = { ...oParsedHash.params };
			const mTechnicalParameters = oModel.oAppComponent?.getComponentData?.()?.technicalParameters;
			// if mTechnicalParameters are not available we write a warning and continue updating the hash
			if (!mTechnicalParameters) {
				Log.warning(
					"Component instance not provided, so technical parameters in component data and browser history remain unchanged"
				);
			}
			if (mPropertyBag.parameters.length === 0) {
				delete oParsedHash.params[VariantUtil.VARIANT_TECHNICAL_PARAMETER];
				// Case when ControlVariantsAPI.clearVariantParameterInURL is called with a parameter
				if (mTechnicalParameters) {
					delete mTechnicalParameters[VariantUtil.VARIANT_TECHNICAL_PARAMETER];
				}
			} else {
				oParsedHash.params[VariantUtil.VARIANT_TECHNICAL_PARAMETER] = [mPropertyBag.parameters.toString()];
				// Technical parameters need to be in sync with the URL hash
				if (mTechnicalParameters) {
					mTechnicalParameters[VariantUtil.VARIANT_TECHNICAL_PARAMETER] = [mPropertyBag.parameters.toString()];
				}
			}

			if (mPropertyBag.silent) {
				hasher.changed.active = false; // disable changed signal
				hasher.replaceHash(oURLParsingService.constructShellHash(oParsedHash));
				hasher.changed.active = true; // re-enable changed signal
			} else if (!deepEqual(mOldHashParams, oParsedHash.params)) {
				oNavigationService.navigate({
					target: {
						semanticObject: oParsedHash.semanticObject,
						action: oParsedHash.action,
						context: oParsedHash.contextRaw
					},
					params: oParsedHash.params,
					appSpecificRoute: oParsedHash.appSpecificRoute,
					writeHistory: false
				});
			}
		}
	}
Sets the values for url hash and technical parameters for the component data.
Deactivates hash based navigation while performing the operations, which is then re-activated upon completion.
If the passed doesn't exist in the url hash or technical parameters, then a new object is added respectively.

@param {object} mPropertyBag - Property bag
@param {string[]} mPropertyBag.parameters - Array of values for the technical parameter
@param {sap.ui.fl.variants.VariantModel} mPropertyBag.model - Variant model
@param {boolean} [mPropertyBag.silent] - <code>true</code> if the technical parameter should be set without triggering event listeners

@private