This corresponds to the more strict object contracts from the OOPSLA paper. Also use `object/c-opaque` in TR contract generation