code: function collate(a, b) {
  
    if (a === b) {
      return 0;
    }
  
    a = normalizeKey(a);
    b = normalizeKey(b);
  
    var ai = collationIndex(a);
    var bi = collationIndex(b);
    if ((ai - bi) !== 0) {
      return ai - bi;
    }
    switch (typeof a) {
      case 'number':
        return a - b;
      case 'boolean':
        return a < b ? -1 : 1;
      case 'string':
        return stringCollate(a, b);
    }
    return Array.isArray(a) ? arrayCollate(a, b) : objectCollate(a, b);
  }
docs: set to '_' for easier debugging