All points are valid. The code that checks types has loopholes. I don't really see the point in removing the code, as it's not validating external data, but our own code. For much of the data, the checks it makes are valid; nulls aren't a huge chunk of the data. If you feel strongly though, I'll remove it. I will fix it so that you can set other types after they were null as well.