function enrichProperty(mProperty, mODataEntity, oElement, sAggregationName) {
		const mProp = {
			name: mProperty.name,
			bindingPath: mProperty.name,
			entityType: mODataEntity.name
		};
		const mLabelAnnotation = mProperty["com.sap.vocabularies.Common.v1.Label"];
		mProp.label = mLabelAnnotation && mLabelAnnotation.String;

		const mQuickInfoAnnotation = mProperty["com.sap.vocabularies.Common.v1.QuickInfo"];
		mProp.tooltip = mQuickInfoAnnotation && mQuickInfoAnnotation.String;

		// CDS UI.Hidden new way also for sap:visible = false
		const mHiddenAnnotation = mProperty["com.sap.vocabularies.UI.v1.Hidden"];
		mProp.hideFromReveal = !!mHiddenAnnotation && mHiddenAnnotation.Bool === "true";

		if (!mProp.hideFromReveal) {
			// Old hidden annotation
			const mFieldControlAnnotation = mProperty["com.sap.vocabularies.Common.v1.FieldControl"];
			if (mFieldControlAnnotation && mFieldControlAnnotation.EnumMember) {
				mProp.hideFromReveal = mFieldControlAnnotation.EnumMember === "com.sap.vocabularies.Common.v1.FieldControlType/Hidden";
			} else {
				// @runtime hidden by field control value = 0
				const sFieldControlPath = mFieldControlAnnotation && mFieldControlAnnotation.Path;
				if (sFieldControlPath) {
					// if the binding is a list binding, we skip the check for field control
					const bListBinding = oElement.getBinding(sAggregationName) instanceof ListBinding;
					if (!bListBinding) {
						const iFieldControlValue = oElement.getBindingContext().getProperty(sFieldControlPath);
						mProp.hideFromReveal = iFieldControlValue === 0;
					}
				}
			}
		}
		return mProp;
	}
Enriches a property with additional information such as label, tooltip, and visibility.

@param {object} mProperty - The property object to be enriched
@param {object} mODataEntity - The OData entity object containing metadata
@param {object} oElement - The element to which the property belongs
@param {string} sAggregationName - The name of the aggregation
@return {object} The enriched property object