Represents a range of integers.
The name reflects the fact that it is used with FTP extended mode restart markers,
where it represents a range of transfered bytes.
merge(ByteRange other)
If this range can be consolidated with the other one,
modify this range so that it represents the result of merging
this and the other range.
If this range can be consolidated with the other one,
modify this range so that it represents the result of merging
this and the other range.
The parameter object remains intact.
Return value indicates what operation has been performed.
If the two ranges were separate, then this range will remain unchanged.
The return value will be THIS_BELOW if this range is below the other
range, or THIS_ABOVE in the other case.
If this range was a superset of the other,
then this range remains unchanged and THIS_SUPERSET will be returned.
A special case of this situation is when both ranges were equal.
If other range was a superset of this, OTHER_SUPERSET will be returned.
Otherwise ADJACENT is returned, meaning that merge was possible
but no range is a superset of the other.
Note that two ranges are considered separate if there is at least
one integer between them. For instance, "1-3" and "5-7" are separate
but "1-3" and "4-7" are adjacent because merge is possible.