List<BidiRun> (@NotNull EditorView view, int line, boolean skipBidiLayout) { Document document = view.getEditor().getDocument(); int lineStartOffset = document.getLineStartOffset(line); int lineEndOffset = document.getLineEndOffset(line); if (lineEndOffset <= lineStartOffset) return Collections.emptyList(); if (skipBidiLayout) return Collections.singletonList(new BidiRun(lineEndOffset - lineStartOffset)); CharSequence text = document.getImmutableCharSequence().subSequence(lineStartOffset, lineEndOffset); char[] chars = CharArrayUtil.fromSequence(text); return createRuns(view, chars, lineStartOffset); }