What assumption is incorrect? Do you mean we can't assume "the compiler thinks `unlock` can modify `*pp`"?