Ah, I see.
I like your idea of limiting this double-inclusive range model to the least possible scope.
How about we simply rename `AppliedByteRange` like this?:

    case class AppliedIndexRange(startIndex: Long, endIndex: Long)