I'm not a big fan of returning null in cases like this. It forces callers to check for null and do something conditionally. They might as well do this, instead:

```
if (range.overlaps(other)) {
   Range intersection = range.intersect(other);
   ...
}
```

It'd be better to throw an `IllegalArgumentException("Cannot intersect non-overlapping ranges")` instead;