code: func (itvs Intervals) add(n Interval) Intervals {
  	for i, r := range itvs {
  		// TODO(gouthamve): Make this codepath easier to digest.
  		if r.inBounds(n.Mint-1) || r.inBounds(n.Mint) {
  			if n.Maxt > r.Maxt {
  				itvs[i].Maxt = n.Maxt
  			}
  
  			j := 0
  			for _, r2 := range itvs[i+1:] {
  				if n.Maxt < r2.Mint {
  					break
  				}
  				j++
  			}
  			if j != 0 {
  				if itvs[i+j].Maxt > n.Maxt {
  					itvs[i].Maxt = itvs[i+j].Maxt
  				}
  				itvs = append(itvs[:i+1], itvs[i+j+1:]...)
  			}
  			return itvs
  		}
  
  		if r.inBounds(n.Maxt+1) || r.inBounds(n.Maxt) {
  			if n.Mint < r.Maxt {
  				itvs[i].Mint = n.Mint
  			}
  			return itvs
  		}
  
  		if n.Mint < r.Mint {
  			newRange := make(Intervals, i, len(itvs[:i])+1)
  			copy(newRange, itvs[:i])
  			newRange = append(newRange, n)
  			newRange = append(newRange, itvs[i:]...)
  
  			return newRange
  		}
  	}
  
  	itvs = append(itvs, n)
  	return itvs
  }
docs: // add the new time-range to the existing ones.
  // The existing ones must be sorted.