IPoint origin = IPoint.origin(dimCount);
long len = largerLength - smallerLength;
while (len > 0) {
// We need to add 0..len segment
if (len <= smallerLength) {
result.add(Patterns.newIntegerPattern(origin, origin.shiftAlongAxis(axis, negativeSegments ? -len : len)));
break;
}
long newLen = len >> 1;
result.add(Patterns.newIntegerPattern(origin, origin.shiftAlongAxis(axis,
negativeSegments ? newLen - len : len - newLen)));