anchor.diff:      currentEditor.commentVisualsByLine = {};
       setAnnotations(currentEditor, $(editor).data('file-id'));
       currentEditor.on("guttermousedown", handleSidebarClick);
  -  });
  -
  -  function cleanupPopovers() {
  -    // remove all possible popovers
  -    $('.editor > .ace_gutter > .ace_gutter-layer > .ace_gutter-cell').popover('destroy');
  -  }
  +    currentEditor.on("guttermousemove", showPopover);
  +  });
   
     function preprocess(commentText) {
       // sanitize comments to deal with XSS attacks:
       commentText = $('div.sanitizer').text(commentText).html();
       // display original line breaks:
       return commentText.replace(/\n/g, '<br>');
  -  }
  -
  -  function clusterComments(comments) {
  -    var clusters = {};
  -    // comments need to be sorted to cluster them per line
  -    comments.sort(function (a, b) {
  -      return a.row - b.row;
  -    });
  -    while (comments.length > 0) {
  -      // new cluster of comments
  -      var cluster = [];
  -      var clusterRow = comments[0].row;
  -      // now collect all comments on this line
  -      while (comments.length > 0 && comments[0].row === clusterRow) {
  -          cluster.push(comments.shift());
  -      }
  -      // sort the comments by creation date
  -      cluster = cluster.sort(function (a, b) {
  -        return a.id - b.id;
  -      });
  -      clusters[clusterRow] = cluster;
  -    }
  -    return clusters;
     }
   
     function generateCommentHtmlContent(comments) {
  
positive.code:   }
  
    function createComment(file_id, row, editor, commenttext){
      cleanupPopovers();
      var jqxhr = $.ajax({
        data: {
          comment: {
  
negative.code:     });
  
      jqrequest.done(function(response){
        $.each(response, function(index, comment) {
          comment.className = 'code-ocean_comment';
        });
        session.setAnnotations(response);
      });
    }
  
    function getCommentsForRow(editor, row){
      return editor.getSession().getAnnotations().filter(function(element) {
        return element.row === row;
      })
    }
  
    function deleteComment(commentId, editor, file_id, callback) {
      var jqxhr = $.ajax({
        type: 'DELETE',
        url: "/comments/" + commentId
  