What if the thumb was already at the top or the bottom and clamping means that the value did not actually change?  You're still going to emit a change event here.    Cleaner, I think, to emit the event from setValue(). Even if that means adding a second argument to setValue() that specifies whether to emit an event or not.