wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
    this.getTextNodes(dict => {
      const originalLength = dict.value.length;
      ranges.forEach((range, counter) => {
        let {start, end, valid} = this.checkWhitespaceRanges(
          range,
          originalLength,
          dict.value
        );
        if (valid) {
          this.wrapRangeInMappedTextNode(dict, start, end, node => {
            return filterCb(
              node,
              range,
              dict.value.substring(start, end),
              counter
            );
          }, node => {
            eachCb(node, range);
          });
        }
      });
      endCb();
    });
  }
Wraps the indicated ranges across all HTML elements in all contexts
@param {Mark~setOfRanges} ranges
@param {Mark~wrapRangeFromIndexFilterCallback} filterCb
@param {Mark~wrapRangeFromIndexEachCallback} eachCb
@param {Mark~wrapRangeFromIndexEndCallback} endCb
@access protected