Clarify some comments.

It must've been quite late at night when I wrote the previous versions of these...
We've asserted that this can never happen.
Fix sanity checks.

Rather than trying to check things after we've swapped old and new values around, why not do the check *before* the assignment?