Each function does what one would assume - AddValue adds a new value, SetValue overwrites existing value (creates a new one if not exists, if instructed to do so).
How did we not see this earlier? Each call to SetValue would actually ADD a value!