@NotNull
  private static PendingChunk mergeChunks(@NotNull PendingChunk chunk1, @NotNull PendingChunk chunk2) {
    WordBlock block1 = chunk1.block;
    WordBlock block2 = chunk2.block;
    WordBlock newBlock = new WordBlock(new Range(block1.words.start1, block2.words.end1, block1.words.start2, block2.words.end2),
                                       new Range(block1.offsets.start1, block2.offsets.end1, block1.offsets.start2, block2.offsets.end2));
    return new PendingChunk(newBlock,
                            chunk1.hasEqualWords || chunk2.hasEqualWords,
                            chunk1.hasWordsInside || chunk2.hasWordsInside,
                            chunk1.isEqualIgnoreWhitespaces && chunk2.isEqualIgnoreWhitespaces);
  }
@NotNull
  private static PendingChunk mergeChunks(@NotNull PendingChunk chunk1, @NotNull PendingChunk chunk2)