wrapRangeInTextNode(node, start, end) {
    const hEl = !this.opt.element ? 'mark' : this.opt.element,
      startNode = node.splitText(start),
      ret = startNode.splitText(end - start);
    let repl = document.createElement(hEl);
    repl.setAttribute('data-markjs', 'true');
    if (this.opt.className) {
      repl.setAttribute('class', this.opt.className);
    }
    repl.textContent = startNode.textContent;
    startNode.parentNode.replaceChild(repl, startNode);
    return ret;
  }
Wraps the instance element and class around matches that fit the start and
end positions within the node
@param  {HTMLElement} node - The DOM text node
@param  {number} start - The position where to start wrapping
@param  {number} end - The position where to end wrapping
@return {HTMLElement} Returns the splitted text node that will appear
after the wrapped text node
@access protected