code: func (r Range) Subtract(other Range) []Range {
  	if !r.Overlaps(other) {
  		return []Range{r}
  	}
  	if other.Contains(r) {
  		return nil
  	}
  	var res []Range
  	left := Range{r.Start, other.Start}
  	right := Range{other.End, r.End}
  	if r.Contains(other) {
  		if !left.IsEmpty() {
  			res = append(res, left)
  		}
  		if !right.IsEmpty() {
  			res = append(res, right)
  		}
  		return res
  	}
  	if !r.Start.After(other.Start) {
  		if !left.IsEmpty() {
  			res = append(res, left)
  		}
  		return res
  	}
  	if !right.IsEmpty() {
  		res = append(res, right)
  	}
  	return res
  }
docs: // Subtract removes the intersection between r and other
  // from r, possibly splitting r into two smaller ranges.