void (int index, int newOutputStartLine, int newOutputEndLine) { LOG.assertTrue(isInsideCommand()); if (getLineStart(index) != newOutputStartLine || getLineEnd(index) != newOutputEndLine) { setLineStart(index, newOutputStartLine); setLineEnd(index, newOutputEndLine); invalidateHighlighters(index); } boolean beforeChange = true; for (int otherIndex = 0; otherIndex < getChangesCount(); otherIndex++) { int startLine = getLineStart(otherIndex); int endLine = getLineEnd(otherIndex); if (endLine < newOutputStartLine) continue; if (startLine > newOutputEndLine) break; if (index == otherIndex) { beforeChange = false; continue; } int newStartLine = beforeChange ? Math.min(startLine, newOutputStartLine) : newOutputEndLine; int newEndLine = beforeChange ? Math.min(endLine, newOutputStartLine) : Math.max(endLine, newOutputEndLine); if (startLine != newStartLine || endLine != newEndLine) { setLineStart(otherIndex, newStartLine); setLineEnd(otherIndex, newEndLine); invalidateHighlighters(otherIndex); } } }