ORMap
An observed-remove map: keys K each carry a Quilted value S that merges via its own Quilted.piece. A concurrent put of the same key survives a remove (add-wins on the key), and when both replicas hold the key the values are pieced together.
Built over Causal<DotMap<K, ORMapEntry<S>>>: each entry's tags is the observed-remove handle for the key; the value lives alongside and is merged by its own piece.
Samples
val a = ReplicaId("A")
val b = ReplicaId("B")
val start = ORMap.empty<String, GSet<String>>()
.put(a, "team", GSet.of("alice"))
val alice = start.remove("team") // Alice removes the key
val bob = start.put(b, "team", GSet.of("bob")) // Bob concurrently adds
val merged = alice.piece(bob)
check("team" in merged.keys) // add-wins on the keyContent copied to clipboard