int (String string, @Nullable FList<? extends TextRange> fragments) { int underscoreEnd = skipUnderscores(string); if (underscoreEnd > 0) { FList<TextRange> ciRanges = myCaseInsensitiveMatcher.matchingFragments(string); if (ciRanges != null && !ciRanges.isEmpty()) { int matchStart = ciRanges.get(0).getStartOffset(); if (matchStart > 0 && matchStart <= underscoreEnd) { return myCaseInsensitiveMatcher.matchingDegree(string.substring(matchStart), true) - 1; } } } return myMatcher.matchingDegree(string, true, fragments); }