A range is defined by a starting boundary and an optional ending boundary. If an ending boundary is not specified, the range is defined by its starting boundary, inclusively, up to but not including the starting boundary of the next range.
The list of ranges must specify ranges in increasing order, where the ending boundary of a range is less than the starting boundary of the next range.