function multiMatchAwareSubstrings(k, string, l, i, pi, li) {
  var s = string.length;

  // Note that we need to keep the non-absolute delta for this function
  // to work in both directions, up & down
  var delta = s - l;

  var interval = multiMatchAwareInterval(k, delta, i, s, pi, li);

  var start = interval[0],
      stop = interval[1];

  var currentSubstring = '';

  var substrings = [];

  var substring, j, m;

  for (j = start, m = stop + 1; j < m; j++) {
    substring = string.slice(j, j + li);

    // We skip identical consecutive substrings (to avoid repetition in case
    // of contiguous letter duplication)
    if (substring === currentSubstring)
      continue;

    substrings.push(substring);

    currentSubstring = substring;
  }

  return substrings;
}
Function yielding relevant substrings to lookup using the multi-match-aware
substring selection scheme described in the paper.

@param   {number} k      - Levenshtein distance threshold.
@param   {string} string  - Target string.
@param   {number} l      - Length of strings to match.
@param   {number} i      - k + 1 segment index.
@param   {number} pi     - k + 1 segment position in target string.
@param   {number} li     - k + 1 segment length.
@returns {Array}         - The contiguous substrings.