void (Block block, int line, int offset) { Commenter commenter = block.blockSuitableCommenter; Document document = block.editor.getDocument(); if (commenter == null) commenter = block.commenters[line - block.startLine]; if (commenter == null) commenter = findCommenter(block.editor, block.psiFile, line); if (commenter == null) return; if (commenter instanceof SelfManagingCommenter selfManagingCommenter) { selfManagingCommenter.commentLine(line, offset, document, block.commenterStateMap.get(selfManagingCommenter)); return; } int endOffset = document.getLineEndOffset(line); RangeMarker marker = document.createRangeMarker(offset, endOffset); marker.setGreedyToLeft(true); marker.setGreedyToRight(true); try { if (doCommentLine(block, line, offset, endOffset, commenter, document)) return; CommentByBlockCommentHandler.processDocument(document, marker, commenter, true); } finally { marker.dispose(); } }