code: function highlight(template) {
          if (selection._highlighter) {
            selection.removeHighlight();
          }
  
          var ranges = shard();
          selection._highlighter = [];
  
          for (var r in ranges) {
            var subrange = ranges[r];
  
            var scope = angular.element(range.startContainer).scope();
            var highlighter = $compile(template)(scope)[0];
            subrange.surroundContents(highlighter);
            selection._highlighter.push(highlighter);
          }
  
          return selection._highlighter;
        }
docs: Select the current range with a new HTML Element as defined by the given template. The template is evaluated
  by calling $compile(template). If the contents have already been highlighted, the previous highlighting will
  be removed first.
  
  This will not work if the selected text crosses HTML nodes.  In other words, the selection must be in the
  same Text node.
  
  @memeberOf onselect.Selection
  @name highlight
  
  @param {string} template the HTML template
  
  @return {boolean} indicates whether or not the highlight was able to be created