turns out when serializing out a feature's tags, we do indeed check that the value of a tag is not null and omit the tag if it is. so when unioning we mark removed tags as such. this still failed the tests because the equality checks and the to_string methods still looked at the null valued tags, so they've been patched to ignore those. this feels kind of hacky but its how the system was designed