Not nullable constraints redux

This is an easier-to-rebase version of the earlier (now closed) #90.