static findCaretPositionInFormattedNumber(rawNumberString, caretPositionInRawValue, formattedNumberString, decimalCharacter) {
        const formattedNumberStringSize = formattedNumberString.length;
        const rawNumberStringSize = rawNumberString.length;

        let formattedNumberStringIndex;
        let rawNumberStringIndex = 0;
        for (formattedNumberStringIndex = 0;
            formattedNumberStringIndex < formattedNumberStringSize &&
            rawNumberStringIndex < rawNumberStringSize &&
            rawNumberStringIndex < caretPositionInRawValue;
            formattedNumberStringIndex++) {
            if (rawNumberString[rawNumberStringIndex] === formattedNumberString[formattedNumberStringIndex] ||
                (rawNumberString[rawNumberStringIndex] === '.' && formattedNumberString[formattedNumberStringIndex] === decimalCharacter)) {
                rawNumberStringIndex++;
            }
        }

        return formattedNumberStringIndex;
    }
Walk the `formattedNumberString` from left to right, one char by one, counting the `formattedNumberStringIndex`.
If the char is in the `rawNumberString` (starting at index 0), then `rawNumberStringIndex++`, and continue until
there is no more characters in `rawNumberString`) or that `rawNumberStringIndex === caretPositionInRawValue`.
When you stop, the `formattedNumberStringIndex` is the position where the caret should be set.

@example
1234567|89.01   : position 7 (rawNumberString)
123.456.7|89,01 : position 9 (formattedNumberString)

@param {string} rawNumberString
@param {int} caretPositionInRawValue
@param {string} formattedNumberString
@param {string} decimalCharacter
@returns {*}