private static void uncommentLine(Block block, int line, boolean removeLineSpace, boolean removeBlockSpace) {
    Document document = block.editor.getDocument();
    Commenter commenter = block.commenters[line - block.startLine];
    if (commenter == null) commenter = findCommenter(block.editor, block.psiFile, line);
    if (commenter == null) return;

    final int startOffset = block.startOffsets[line - block.startLine];
    final int endOffset = block.endOffsets[line - block.startLine];
    if (startOffset == endOffset) {
      return;
    }

    if (commenter instanceof SelfManagingCommenter selfManagingCommenter) {
      selfManagingCommenter.uncommentLine(line, startOffset, document, block.commenterStateMap.get(selfManagingCommenter));
      return;
    }

    RangeMarker marker = endOffset > startOffset ? block.editor.getDocument().createRangeMarker(startOffset, endOffset) : null;
    try {
      if (doUncommentLine(line, document, commenter, startOffset, endOffset, removeLineSpace, removeBlockSpace)) return;
      if (marker != null) {
        CommentByBlockCommentHandler.processDocument(document, marker, commenter, false);
      }
    }
    finally {
      if (marker != null) {
        marker.dispose();
      }
    }
  }
private static void uncommentLine(Block block, int line, boolean removeLineSpace, boolean removeBlockSpace)