Don't specify the return type; it's inherited, and the overriding method always throws an exception anyway.
Modify conflict resolution so that write back is optional. (API-breaking change.)

Instead of always writing the results of a conflict back to the database, allow the resolver to indicate whether this should take place or not.
In many situations it turns out we don't want to unconditionally write the value back:
 - Often the resolved value is going to be updated and written back anyway. Skipping the intermediate write is a win.
 - Always writing back resolved values can lead to runaway sibling chains when multiple readers access the same key.
 - Resolving conflicts is normally very cheap compared to writing back to the database. As such the cost of a write back is not necessarily worth it, performance wise.

Writeback should only be avoided if the resolver is pure/idempotent: for a given set of siblings (in any order) it should always yield the same result.
More idiomatic field extraction.
No need to explicitly qualify successful(); it's already in scope.