function _getLineCommentPrefixSuffixEdit(editor, prefix, suffix, lineSel, command) {
        var sel = lineSel.selectionForEdit;

        // For one-line selections, we shrink the selection to exclude the trailing newline.
        if (sel.end.line === sel.start.line + 1 && sel.end.ch === 0) {
            sel.end = {line: sel.start.line, ch: editor.document.getLine(sel.start.line).length};
        }

        // Now just run the standard block comment code, but make sure to track any associated selections
        // that were subsumed into this line selection.
        return _getBlockCommentPrefixSuffixEdit(editor, prefix, suffix, [], sel, lineSel.selectionsToTrack, command);
    }
Generates an edit that adds or removes block-comment tokens to the selection, preserving selection
and cursor position. Applies to the currently focused Editor. The selection must already be a
line selection in the form returned by `Editor.convertToLineSelections()`.

The implementation uses blockCommentPrefixSuffix, with the exception of the case where
there is no selection on a uncommented and not empty line. In this case the whole lines gets
commented in a block-comment.

@param {!Editor} editor
@param {!String} prefix
@param {!String} suffix
@param {!{selectionForEdit: {start:{line:number, ch:number}, end:{line:number, ch:number}, reversed:boolean, primary:boolean},
          selectionsToTrack: Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, reversed:boolean, primary:boolean}>}}
     lineSel A line selection as returned from `Editor.convertToLineSelections()`. `selectionForEdit` is the selection to perform
     the line comment operation on, and `selectionsToTrack` are a set of selections associated with this line that need to be
     tracked through the edit.
@param {String} command The command callee. It cans be "line" or "block".
@return {{edit: {text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}|Array.<{text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}>,
                 selection: {start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}|
                 Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}}
     An edit description suitable for including in the edits array passed to `Document.doMultipleEdits()`.