List<TextRange> (@NotNull String processingLine) { int next = 0; List<TextRange> ranges = new ArrayList<>(); int length = processingLine.length(); while (next >= 0 && next < length) { int startQuote = processingLine.indexOf('`', next); if (startQuote < 0 || length <= startQuote + 1) break; char nextChar = processingLine.charAt(startQuote + 1); int offset = nextChar == '`' ? 2 : 1; if (length <= startQuote + offset) break; int endQuote = processingLine.indexOf('`', startQuote + offset); if (endQuote <= 0) break; ranges.add(new TextRange(startQuote, endQuote)); next = endQuote + offset; } return ranges; }