function expandRowsToLevel(oTable, iLevel) {
		const oBinding = oTable.getRowBinding();

		if (!oBinding) {
			return;
		}

		const bIsSameLevel = oBinding.getAggregation()?.expandTo === iLevel;

		if (bIsSameLevel) {
			oBinding.refresh();
		} else {
			oBinding.setAggregation({...oBinding.getAggregation(), ...{expandTo: iLevel}});
		}
	}
Updates the binding of the table with the binding info object returned from
{@link module:sap/ui/mdc/TableDelegate.updateBindingInfo updateBindingInfo}. If an update is not possible, it rebinds the table.

Compares the current and previous state of the table to detect whether rebinding is necessary.
The diffing is done for the sorters, filters, aggregation, parameters, and the path of the binding.
Other {@link sap.ui.base.ManagedObject.AggregationBindingInfo binding info} keys, such as <code>events</code> or <code>model</code>, must be
provided in <code>updateBindingInfo</code>, and those keys must not be changed conditionally.

<b>Note:</b> To remove a binding info parameter, the value must be set to <code>undefined</code> in
<code>updateBindingInfo</code>. For more information, see {@link sap.ui.model.odata.v4.ODataListBinding#changeParameters}.

@param {sap.ui.mdc.Table} oTable Instance of the table
@param {sap.ui.base.ManagedObject.AggregationBindingInfo} oBindingInfo The binding info object to be used to bind the table
@param {sap.ui.model.ListBinding} [oBinding] The binding instance of the table that can be used to update the binding and avoid a rebind
@param {object} [mSettings] Additional settings
@param {boolean} [mSettings.forceRefresh] Indicates that the binding has to be refreshed even if the binding info has not changed
@see rebind
@protected
@override