while (--i) {
      item = parts.slice(0, i).join('.');
      if (!memo[item]) {
        memo[item] = true;
        if (i === parts.length) {