Take the union of two ranges. The resulting Range contains all points that the original ranges contained, plus any points between them (if the original ranges don't overlap).

Take the intersection of two ranges. If the ranges do not overlap, the intersection is empty, and Nothing is returned. (This is a good way to check whether two ranges overlap or not.) Otherwise a new Range is returned that contains only the points common to both ranges.