function handleTypeAhead(sValue, oInput, aItems, vTextGetter) {
		var sSelectedItemText,
			bDesktopPlatform = Device.system.desktop,
			aSelectedItems = _filterItems(sValue, aItems, vTextGetter);

		if (!Array.isArray(aSelectedItems) || !aSelectedItems.length) {
			return [];
		}

		aSelectedItems = _sortItems(sValue, aSelectedItems, vTextGetter); // It's important to sort the items with the best match
		// check for exact match
		const oExactMatch = aSelectedItems.find((oItem) => _exactMatchIgnoreCase(_extractTextsFromItem(oItem, vTextGetter)[0], sValue));

		if (oExactMatch) {
			// if there is an exact match, return it and skip the rest
			return [oExactMatch];
		}

		sSelectedItemText = _findBestTextMatch(_extractTextsFromItem(aSelectedItems[0], vTextGetter), sValue);

		if (!oInput.isComposingCharacter() && sSelectedItemText) {
			oInput.updateDomValue(sSelectedItemText);
		}

		if (bDesktopPlatform) {
			_selectTextIfFocused(oInput, sValue.length, oInput.getValue().length);
		} else {
			// timeout required for an Android and Windows Phone bug
			setTimeout(_selectTextIfFocused.bind(null, oInput, sValue.length, oInput.getValue().length), 0);
		}

		return aSelectedItems || [];
	}
Handles DOM update, text highlighting and input focusing of the selected item.

@param sValue {string} Typed in value.
@param oInput {sap.m.Input} Input to act upon.
@param aItems {Array<T>} Items to pick from.
@param vTextGetter {string|function} Name of method in oInput or a function which extracts the text.
@returns {Array<T>} A sorted array of matching items. The first item is the one that's being highlighted.