docs: function mergeEnglishElisionExceptions(child, index, sentence) {
    var siblings
    var sibling
    var other
    var length
    var value
  
    if (child.type !== 'PunctuationNode' && child.type !== 'SymbolNode') {
      return
    }
  
    siblings = sentence.children
    length = siblings.length
    value = toString(child)
  
    /* Match abbreviation of `with`, `w/` */
    if (value === '/') {
      sibling = siblings[index - 1]
  
      if (sibling && lower(toString(sibling)) === 'w') {
        /* Remove the slash from the sentence. */
        siblings.splice(index, 1)
  
        /* Append the slash into the children of the
         * previous node. */
        sibling.children.push(child)
  
        /* Update position. */
        if (sibling.position && child.position) {
          sibling.position.end = child.position.end
        }
      }
    } else if (APOSTROPHE.test(value)) {
      /* If two preceding (the first white space and the
       * second a word), and one following (white space)
       * nodes exist... */
      sibling = siblings[index - 1]
  
      if (
        index > 2 &&
        index < length - 1 &&
        sibling.type === 'WordNode' &&
        siblings[index - 2].type === 'WhiteSpaceNode' &&
        siblings[index + 1].type === 'WhiteSpaceNode' &&
        ELISION_PREFIX.test(lower(toString(sibling)))
      ) {
        /* Remove the apostrophe from the sentence. */
        siblings.splice(index, 1)
  
        /* Append the apostrophe into the children of
         * node. */
        sibling.children.push(child)
  
        /* Update position. */
        if (sibling.position && child.position) {
          sibling.position.end = child.position.end
        }
  
        return
      }
  
      /* If a following word exists, and the preceding node
       * is not a word... */
      if (
        index !== length - 1 &&
        siblings[index + 1].type === 'WordNode' &&
        (index === 0 || siblings[index - 1].type !== 'WordNode')
      ) {
        sibling = siblings[index + 1]
        value = lower(toString(sibling))
  
        if (ELISION_AFFIX.test(value)) {
          /* Remove the apostrophe from the sentence. */
          siblings.splice(index, 1)
  
          /* Prepend the apostrophe into the children of
           * node. */
          sibling.children = [child].concat(sibling.children)
  
          /* Update position. */
          if (sibling.position && child.position) {
            sibling.position.start = child.position.start
          }
          /* If both preceded and followed by an apostrophe,
         * and the word is `n`... */
        } else if (
          value === 'n' &&
          index < length - 2 &&
          APOSTROPHE.test(toString(siblings[index + 2]))
        ) {
          other = siblings[index + 2]
  
          /* Remove the apostrophe from the sentence. */
          siblings.splice(index, 1)
          siblings.splice(index + 1, 1)
  
          /* Prepend the preceding apostrophe and append
           * the into the following apostrophe into
           * the children of node. */
          sibling.children = [child].concat(sibling.children, other)
  
          /* Update position. */
          if (sibling.position) {
            /* istanbul ignore else */
            if (child.position) {
              sibling.position.start = child.position.start
            }
  
            /* istanbul ignore else */
            if (other.position) {
              sibling.position.end = other.position.end
            }
          }
        }
      }
    }
  }