merge method
Merges this CRDT with another of the same type.
Implementation
@override
ORSet<T> merge(covariant ORSet<T> other) {
final mergedAdd = Map<T, Set<String>>.from(_addSet.map((k, v) => MapEntry(k, Set<String>.from(v))));
other._addSet.forEach((k, v) {
mergedAdd[k] = (mergedAdd[k] ?? {})..addAll(v);
});
final mergedRemove = Map<T, Set<String>>.from(_removeSet.map((k, v) => MapEntry(k, Set<String>.from(v))));
other._removeSet.forEach((k, v) {
mergedRemove[k] = (mergedRemove[k] ?? {})..addAll(v);
});
return ORSet(addSet: mergedAdd, removeSet: mergedRemove);
}