whole_func_string: function toTitleCaseTimezoneLocation(location) {
    var match = InternalRegExpMatch(GetTimezoneNameLocationPartRE(), location)
    if (IS_NULL(match)) throw MakeRangeError(kExpectedLocation, location);
  
    var result = toTitleCaseWord(match[1]);
    if (!IS_UNDEFINED(match[2]) && 2 < match.length) {
      // The first character is a separator, '_' or '-'.
      // None of IANA zone names has both '_' and '-'.
      var separator = %_Call(StringSubstring, match[2], 0, 1);
      var parts = %_Call(StringSplit, match[2], separator);
      for (var i = 1; i < parts.length; i++) {
        var part = parts[i]
        var lowercasedPart = %StringToLowerCase(part);
        result = result + separator +
            ((lowercasedPart !== 'es' &&
              lowercasedPart !== 'of' && lowercasedPart !== 'au') ?
            toTitleCaseWord(part) : lowercasedPart);
      }
    }
    return result;
  }
func_code_string: function toTitleCaseTimezoneLocation(location) {
    var match = InternalRegExpMatch(GetTimezoneNameLocationPartRE(), location)
    if (IS_NULL(match)) throw MakeRangeError(kExpectedLocation, location);
  
    var result = toTitleCaseWord(match[1]);
    if (!IS_UNDEFINED(match[2]) && 2 < match.length) {
      // The first character is a separator, '_' or '-'.
      // None of IANA zone names has both '_' and '-'.
      var separator = %_Call(StringSubstring, match[2], 0, 1);
      var parts = %_Call(StringSplit, match[2], separator);
      for (var i = 1; i < parts.length; i++) {
        var part = parts[i]
        var lowercasedPart = %StringToLowerCase(part);
        result = result + separator +
            ((lowercasedPart !== 'es' &&
              lowercasedPart !== 'of' && lowercasedPart !== 'au') ?
            toTitleCaseWord(part) : lowercasedPart);
      }
    }
    return result;
  }
func_documentation_string: Returns titlecased location, bueNos_airES -> Buenos_Aires
  or ho_cHi_minH -> Ho_Chi_Minh. It is locale-agnostic and only
  deals with ASCII only characters.
  'of', 'au' and 'es' are special-cased and lowercased.