Not nullable constraints redux

This is an easier-to-rebase version of the earlier #90.

I'll close that one in a minute.