_setElementValue(newElementValue, sendFormattedEvent = true) {
        //TODO Use an internal attribute to track the current value of the element `formattedValue` (like its counterpart `rawValue`). This would allow us to avoid calling `getElementValue` many times
        const oldElementValue = AutoNumericHelper.getElementValue(this.domElement);

        // Only update the value if it's different from the current one
        if (newElementValue !== oldElementValue) {
            this.internalModification = true;
            AutoNumericHelper.setElementValue(this.domElement, newElementValue);
            this.internalModification = false;

            if (sendFormattedEvent) {
                this._triggerEvent(AutoNumeric.events.formatted, this.domElement, {
                    oldValue   : oldElementValue,
                    newValue   : newElementValue,
                    oldRawValue: this.rawValue,
                    newRawValue: this.rawValue,
                    isPristine : this.isPristine(false),
                    error      : null,
                    aNElement  : this,
                });
            }
        }

        return this;
    }
Set the given value on the DOM element, without affecting the `rawValue`.
This sends an 'autoNumeric:formatted' event if the new value is different from the old one.

@param {number|string} newElementValue
@param {boolean} sendFormattedEvent If set to `true`, then the `AutoNumeric.events.formatted` event is sent if the value has changed
@returns {AutoNumeric}
@private