With the previous code, existing but empty value where not "decoded", leading to
the method returning one of None, some valid value (list or dict) or
b''.
On a general basis, not explicitly checking for None is a source of bugs.
Having a clean return types will help the side-data copies code in future
changesets.