code: function categorizeAWord(sWordGroup, rules, sentence, words, cntRec) {
      return categorizeAWordWithOffsets(sWordGroup, rules, sentence, words).filter(function (r) { return !r.span && !r.rule.range; });
      /* consider removing the ranged stuff  */
      /*
        var seenIt = words[sWordGroup];
        if (seenIt === undefined) {
          //seenIt = categorizeWordWithRankCutoff(sWordGroup, rules, cntRec);
          seenIt = categorizeWordWithOffsetWithRankCutoff(sWordGroup,rules,cntRec);
          utils.deepFreeze(seenIt);
          words[sWordGroup] = seenIt;
        }
        if (!seenIt || seenIt.length === 0) {
          logger("***WARNING: Did not find any categorization for \"" + sWordGroup + "\" in sentence \""
            + sentence + "\"");
          if (sWordGroup.indexOf(" ") <= 0) {
            debuglog("***WARNING: Did not find any categorization for primitive (!)" + sWordGroup);
          }
          debuglog("***WARNING: Did not find any categorization for " + sWordGroup);
          if (!seenIt) {
            throw new Error("Expecting emtpy list, not undefined for \"" + sWordGroup + "\"")
          }
          words[sWordGroup] = []
          return [];
        }
        return utils.cloneDeep(seenIt);
        */
  }
docs: /*
  export function filterRemovingUncategorizedSentence(oSentence: IFMatch.ICategorizedString[][]): boolean {
  return oSentence.every(function (oWordGroup) {
  return (oWordGroup.length > 0);
  });
  }
  
  
  
  export function filterRemovingUncategorized(arr: IFMatch.ICategorizedString[][][]): IFMatch.ICategorizedString[][][] {
  return arr.filter(function (oSentence) {
  return filterRemovingUncategorizedSentence(oSentence);
  });
  }