static updateAlternatives(oFormerCLDRData, oResult, aPropertyPathNames) {
		const aOldAbbreviations = Generator.getPropertyPathValue(oFormerCLDRData, aPropertyPathNames);
		const aAbbreviations = Generator.getPropertyPathValue(oResult, aPropertyPathNames);
		aAbbreviations.forEach((sAbbreviation, i) => {
			if (aOldAbbreviations[i] === sAbbreviation) {
				return; // nothing to do if both abbreviations are equal; can only happen for strings
			}

			if (typeof aOldAbbreviations[i] === "string") {
				// if there is more than one abbreviation replace the string by an array with both variants; the
				// latest variant is at position 0 in the array
				aAbbreviations[i] = [sAbbreviation, aOldAbbreviations[i]];
			} else {
				const iAt = aOldAbbreviations[i].indexOf(sAbbreviation);
				// if there is more than two abbreviation variants insert the latest variant at position 0
				aAbbreviations[i] = [sAbbreviation, ...aOldAbbreviations[i]];
				if (iAt >= 0) { // remove duplicate
					aAbbreviations[i].splice(iAt + 1, 1);
				}
			}
		});
	}
Updates the values in the array for the given property path in the given object with historical alternatives.
If there are no alternatives, the string value is not changed. If there are alternatives, then the value is
replaced with an array of alternatives with the current value at position 0.

@param {Object<string,any>} oFormerCLDRData
  The CLDR object for the given language from former generation
@param {Object<string,any>} oResult
  The resulting CLDR object for the given language
@param {string[]} aPropertyPathNames
  The array of property names to follow in the given objects