void (int end1, int end2, boolean hasEqualWords) { if (last1 > end1 || last2 > end2) return; PendingChunk chunk = createChunk(last1, last2, end1, end2, hasEqualWords); if (chunk.block.offsets.isEmpty()) return; if (pendingChunk != null && shouldMergeChunks(pendingChunk, chunk)) { pendingChunk = mergeChunks(pendingChunk, chunk); } else { if (pendingChunk != null) myResult.add(pendingChunk.block); pendingChunk = chunk; } last1 = end1; last2 = end2; }