Iterable<T> slices(int sliceLength) sync* { for (var index = 0; index < totalLength; index += sliceLength) { yield slice(index, min(index + sliceLength, totalLength)); } }