ODataModelAdapter = function() {
		// "this" is the prototype now when called with apply()

		// make sure the version is set correctly, depending on the used ODataModel
		const iModelVersion = AnalyticalBinding._getModelVersion(this);
		// ensure only ODataModel are enhanced which have not been enhanced yet
		if (iModelVersion === null || this.getAnalyticalExtensions) {
			return;
		}

		// Keep a reference on the bindList and bindTree function before applying the Adapter-Functions,
		// this way the old functions do not get lost and the correct one is used for "prototype" calls.
		// Previously only the ODataModel V1 prototype functions would get called
		this._mPreadapterFunctions = {
			bindList: this.bindList,
			bindTree: this.bindTree
		};

		// apply the methods of the adapters prototype to the ODataModelAdapter instance
		for (var fn in ODataModelAdapter.prototype) {
			if (ODataModelAdapter.prototype.hasOwnProperty(fn)) {
				this[fn] = ODataModelAdapter.prototype[fn];
			}
		}
		/** @deprecated As of version 1.48.0 */
		if (iModelVersion === 1 && this.isCountSupported()) {
			// disable the count support (inline count is required for AnalyticalBinding)
			Log.info("ODataModelAdapter: switched ODataModel to use inlinecount (mandatory for the AnalyticalBinding)");
			this.setCountSupported(false);
		}
	}
If called on an instance of an (v1/v2) ODataModel it will enrich it with analytics capabilities.

@alias sap.ui.model.analytics.ODataModelAdapter
@function
@experimental This module is only for experimental use!
@protected