void (@NotNull Document document, @NotNull ConsoleFolding folding, int startLine, int endLine, boolean isExpanded) { List<String> toFold = new ArrayList<>(endLine - startLine + 1); for (int i = startLine; i <= endLine; i++) { toFold.add(EditorHyperlinkSupport.getLineText(document, i, false)); } int oStart = document.getLineStartOffset(startLine); if (oStart > 0 && folding.shouldBeAttachedToThePreviousLine()) oStart--; int oEnd = CharArrayUtil.shiftBackward(document.getImmutableCharSequence(), document.getLineEndOffset(endLine) - 1, " \t") + 1; String placeholder = folding.getPlaceholderText(getProject(), toFold); FoldRegion region = placeholder == null ? null : getEditor().getFoldingModel().addFoldRegion(oStart, oEnd, placeholder); if (region != null) { region.setExpanded(isExpanded); region.putUserData(USED_FOLDING_FQN_KEY, getFoldingFqn(folding)); } }