boolean (int index1, int index2, @NotNull CharSequence text1, @NotNull CharSequence text2, @NotNull LineOffsets lineOffsets1, @NotNull LineOffsets lineOffsets2, @NotNull BitSet ignored1, @NotNull BitSet ignored2) { int start1 = lineOffsets1.getLineStart(index1); int end1 = lineOffsets1.getLineEnd(index1, true); int start2 = lineOffsets2.getLineStart(index2); int end2 = lineOffsets2.getLineEnd(index2, true); Range range = TrimUtil.trimExpandText(text1, text2, start1, start2, end1, end2, ignored1, ignored2); if (!range.isEmpty()) return false; List<InlineChunk> words1 = getNonIgnoredWords(index1, text1, lineOffsets1, ignored1); List<InlineChunk> words2 = getNonIgnoredWords(index2, text2, lineOffsets2, ignored2); if (words1.size() != words2.size()) return false; for (int i = 0; i < words1.size(); i++) { CharSequence word1 = getWordContent(index1, text1, lineOffsets1, words1.get(i)); CharSequence word2 = getWordContent(index2, text2, lineOffsets2, words2.get(i)); if (!ComparisonUtil.isEquals(word1, word2, ComparisonPolicy.DEFAULT)) return false; } return true; }