Intercepts and optionally wraps a value mutation.
@override LxOnSet? get onSet => (next, reactive, change) { return (value) { next(value); if (_isRestoring) return; _redoStack.clear(); if (_batchDepth == 0) _addChange(change); }; };