Can you explain how this fixes the problem? Naively, I expect `encode(decode(value))` to equal `value`.