int newEndSegmentOffset = endSegmentOffset;
int newEndSegmentLength = endSegmentLength;
assertThingsMakeSense(newStart, newStartSegmentIndex, newStartSegmentOffset, newStartSegmentLength, newEnd, newEndSegmentIndex, newEndSegmentOffset, newEndSegmentLength);
newEndSegmentLength--;
assertThingsMakeSense(newStart, newStartSegmentIndex, newStartSegmentOffset, newStartSegmentLength, newEnd, newEndSegmentIndex, newEndSegmentOffset, newEndSegmentLength);
if(newEnd==newStart) break TRIM_LEFT;
} while(newStartSegmentLength>0);
newStartSegmentLength = segmentLengths[newStartSegmentIndex];
assertThingsMakeSense(newStart, newStartSegmentIndex, newStartSegmentOffset, newStartSegmentLength, newEnd, newEndSegmentIndex, newEndSegmentOffset, newEndSegmentLength);
newStartSegmentLength--;
assertThingsMakeSense(newStart, newStartSegmentIndex, newStartSegmentOffset, newStartSegmentLength, newEnd, newEndSegmentIndex, newEndSegmentOffset, newEndSegmentLength);
if(newEnd==newStart) break TRIM_RIGHT;
} while(newEndSegmentLength > 0);
newEndSegmentLength = segmentLengths[newEndSegmentIndex];
assertThingsMakeSense(newStart, newStartSegmentIndex, newStartSegmentOffset, newStartSegmentLength, newEnd, newEndSegmentIndex, newEndSegmentOffset, newEndSegmentLength);
} while(true);