code: def _update_nested(key, val, data, allow_overwriting=False):
      
      if isinstance(val, dict):
          for sub_key, sub_val in val.items():
              data = _update_nested(key + [sub_key], sub_val, data, allow_overwriting=allow_overwriting)
      else:
          already_there = tz.get_in(key, data) is not None
          if already_there and val:
              if not allow_overwriting:
                  raise ValueError("Duplicated key %s: %s and %s" % (key, val, tz.get_in(key, data)))
              else:
                  already_there = False
          if val or not already_there:
              data = tz.update_in(data, key, lambda x: val)
      return data
docs: Update the data object, avoiding over-writing with nested dictionaries.