Regarding `&& !update`, you are right. It can be safely removed.

Regarding the updated and attrsActualUpdate, they are different things: `updated` (returned by the checkAndUpdate function) means that the attribute being processed (the one in `i.next()`) matches the newAttr, `attrActualUpdate` means that not only matches but also that the new value is different to the old value (i.e. an actual update was done).

Anyway, the code can be simplified. I have tone it in fix a05c8be