# All disjoint RANGEKEYSETs.

coalesce
a-c:{(#10,RANGEKEYSET,@5,foo)}
----
a-c:{(#10,RANGEKEYSET,@5,foo)}

coalesce
c-d:{(#4,RANGEKEYSET,@3,foo)}
----
c-d:{(#4,RANGEKEYSET,@3,foo)}

coalesce
e-f:{(#20,RANGEKEYSET,@5,bar) (#20,RANGEKEYSET,@3,foo)}
----
e-f:{(#20,RANGEKEYSET,@5,bar) (#20,RANGEKEYSET,@3,foo)}

# Merge overlapping RANGEKEYSETs.

coalesce
a-c:{(#10,RANGEKEYSET,@5,foo5) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)}
----
a-c:{(#10,RANGEKEYSET,@5,foo5) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)}

# RANGEKEYUNSETs.

coalesce
a-c:{(#10,RANGEKEYUNSET,@5)}
----
a-c:{(#10,RANGEKEYUNSET,@5)}

coalesce
c-d:{(#4,RANGEKEYUNSET,@3)}
----
c-d:{(#4,RANGEKEYUNSET,@3)}

coalesce
e-f:{(#20,RANGEKEYUNSET,@5) (#20,RANGEKEYUNSET,@3)}
----
e-f:{(#20,RANGEKEYUNSET,@5) (#20,RANGEKEYUNSET,@3)}

# Merge overlapping RANGEKEYUNSETs.

coalesce
a-c:{(#10,RANGEKEYUNSET,@5) (#4,RANGEKEYUNSET,@3) (#4,RANGEKEYUNSET,@2)}
----
a-c:{(#10,RANGEKEYUNSET,@5) (#4,RANGEKEYUNSET,@3) (#4,RANGEKEYUNSET,@2)}

# Unsets may partially remove sets.

coalesce
a-c:{(#10,RANGEKEYUNSET,@100) (#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)}
----
a-c:{(#10,RANGEKEYUNSET,@100) (#9,RANGEKEYSET,@50,v50)}

coalesce
c-d:{(#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)}
----
c-d:{(#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)}

# Unsets may wholly remove sets.

coalesce
b-c:{(#10,RANGEKEYUNSET,@3) (#10,RANGEKEYUNSET,@2) (#10,RANGEKEYUNSET,@1) (#8,RANGEKEYSET,@3,v3) (#8,RANGEKEYSET,@2,v2) (#8,RANGEKEYSET,@1,v1)}
----
b-c:{(#10,RANGEKEYUNSET,@3) (#10,RANGEKEYUNSET,@2) (#10,RANGEKEYUNSET,@1)}

# Sets may shadow unsets.

coalesce
a-c:{(#5,RANGEKEYSET,@5,v5) (#4,RANGEKEYUNSET,@5)}
----
a-c:{(#5,RANGEKEYSET,@5,v5)}

# Deletes shadow Sets and Unsets, but not at the same sequence number.

coalesce
a-c:{(#10,RANGEKEYSET,@5,foo5) (#10,RANGEKEYDEL) (#8,RANGEKEYUNSET,@1) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)}
----
a-c:{(#10,RANGEKEYSET,@5,foo5) (#10,RANGEKEYDEL)}

# Within a sequence number, none of the internal range keys affect one another.

coalesce
a-c:{(#5,RANGEKEYSET,@5,foo) (#5,RANGEKEYUNSET,@5) (#5,RANGEKEYDEL)}
----
a-c:{(#5,RANGEKEYSET,@5,foo) (#5,RANGEKEYDEL)}
