function findLongestMatch(sValue, mCollection, bCaseInsensitive) {
		var sCode, sCurCode, sCurSymbol, sCurSymbolToUpperCase, iIndex, sLanguageTag,
			sRecognizedCurrency, sValueSubStr,
			bDuplicate = false,
			bExactMatch = false,
			sSymbol = "";

		for (sCurCode in mCollection) {
			sCurSymbol = mCollection[sCurCode];
			if (!sCurSymbol) {
				continue;
			}
			sCurSymbol = FormatUtils.normalize(sCurSymbol);
			if (sValue.indexOf(sCurSymbol) >= 0 && sSymbol.length <= sCurSymbol.length) {
				sCode = sCurCode;
				bDuplicate = false;
				bExactMatch = true;
				sSymbol = sCurSymbol;
				sRecognizedCurrency = sCurSymbol;
			} else if (bCaseInsensitive) {
				sLanguageTag = Localization.getLanguageTag().toString();
				sCurSymbolToUpperCase = sCurSymbol.toLocaleUpperCase(sLanguageTag);
				iIndex = sValue.toLocaleUpperCase(sLanguageTag).indexOf(sCurSymbolToUpperCase);
				if (iIndex >= 0) {
					if (sSymbol.length === sCurSymbol.length && !bExactMatch) {
						bDuplicate = true;
					} else if (sSymbol.length < sCurSymbol.length) {
						sValueSubStr = sValue.substring(iIndex, iIndex + sCurSymbol.length);
						if (sValueSubStr.toLocaleUpperCase(sLanguageTag)
								=== sCurSymbolToUpperCase) {
							sCode = sCurCode;
							bDuplicate = false;
							bExactMatch = false;
							sSymbol = sCurSymbol;
							sRecognizedCurrency = sValueSubStr;
						}
					}
				}
			}
		}

		if (bDuplicate || !sCode) {
			return {};
		}

		return {
			code : sCode,
			recognizedCurrency : sRecognizedCurrency,
			symbol : sSymbol
		};
	}
Identify the longest match between a sub string of <code>sValue</code>
and one of the values of the <code>mCollection</code> map.

@param {string} sValue
  The string value which is checked for all currency codes/symbols
@param {Object<string, string>} mCollection
  An object mapping a currency code to a either a currency symbol or the currency code itself
@param {boolean} bCaseInsensitive Whether case insensitive matches are allowed
@return {{code: string, recognizedCurrency: string, symbol: string}}
  An object with the code, the recognized currency and the symbol found in the given value;
  an empty object in case of either conflicting case insensitive matches, or no match