diff --git a/README.android b/README.android
index cb1eb5d..352969a 100644
--- a/README.android
+++ b/README.android
@@ -1,5 +1,5 @@
 URL: http://code.google.com/p/libphonenumber/
-Version: 3.8 (r325)
+Version: 4.2 (r385)
 License: Apache 2
 Description: Google Phone Number Library.
 Local Modification:
diff --git a/java/release_notes.txt b/java/release_notes.txt
index f915803..0fb5dc6 100644
--- a/java/release_notes.txt
+++ b/java/release_notes.txt
@@ -1,3 +1,73 @@
+November 10th, 2011: libphonenumber-4.2
+* Code changes
+ - Providing an "exact match" isEmergencyNumber method
+ - Improvement to PhoneNumberMatcher: requires national prefix to be present
+   when matching national-format numbers, unless matching for a region where it
+   is explicitly marked in the metadata that they may be omitted. Applies to
+   leniency level VALID and higher.
+ - Change formatNumberForMobileDialing not to modify the phoneNumber passed in.
+
+* Metadata changes
+ - Emergency numbers added for all remaining countries
+ - Collected data on which numbers we format with a national prefix are
+   commonly written without one and added this
+ - Updates for AR, AT, BH, CZ, GR, IR, KM, LT, MX, PT, SE, SO, UG
+ - Addition of SX (Sint Maarten)
+
+October 19th, 2011: libphonenumber-4.1
+* Code changes
+ - Update code and metadata for countries with IDD "8~10" to accept phone
+   numbers where the "~" is omitted.
+ - Modify formatInOriginalFormat to use raw_input (when present) when the number
+   is considered as invalid by the library.
+ - Add ShortNumberUtil to deal with international short phone numbers, such as
+   short codes and emergency numbers.
+ - Increase the maximum phone-number length accepted when parsing (now set to
+   16).
+
+* Metadata changes
+ - Updates: BF, BN, CN, DE, DK, DO, FR, IN, KI, KW, MC, MD, ML, PA, QA, SB, UK,
+   WS
+ - Emergency number information also added to: AE, AF, AL, AM, AR, AT, AU, BA,
+   BB, BD, BE, BG, BH, BO, BR, BY, CA, CH, CL, CN, CO, CR, CY, CZ, DE, DJ, DK,
+   DO, DZ, EC, EE, EG, ES, FI, FJ, FO, FR, GB, GE, GF, GH, GI, GL, GR, GT, GY,
+   HK, HN, HR, HU, ID, IE, IL, IN, IR, IS, IT, JM, JO, JP, KR, KW, KY, KZ, LB,
+   LK, LT, LU, LV, MA, MC, MD, ME, MK, ML, MM, MN, MO, MT, MU, MV, MX, MY, NG,
+   NI, NL, NO, NP, OM, PA, PE, PH, PK, PL, PM, PT, PY, QA, RO, RS, RU, RW, SA,
+   SB, SD, SE, SG, SI, SK, SL, SM, SR, SV, SY, TD, TH, TJ, TM, TN, TR, TT, TW,
+   UA, UG, US, UY, UZ, VA, VE, VN, VU, ZA, ZM, ZW
+
+October 6th, 2011: libphonenumber-4.0
+* Code changes
+ - New function formatNumberForMobileDialing, which attempts to format a number in
+   such a way that the call can be connected from a mobile phone. If this is
+   impossible, for example for numbers that cannot be internationally dialled,
+   then an empty string is returned.
+ - Fallback functionality to English for non-CJK languages for geocoding
+
+* Metadata changes
+ - Collecting data for emergency numbers
+ - Updates: AR, AU, BR, CN, CZ, EG, GD, IE, IL, JM, KW, KH, SD, SO, TR, UG, UZ
+ - Geocoding data changes: AO, AR, AT, BJ, BR, CD, CG, CI, CL, CN, CV, DE, ES,
+   FR, GR, GW, HU, KM, MR, MZ, NL, PL, PT, SE, ST, SZ
+
+September 13th, 2011: libphonenumber-3.9
+* Code changes
+ - Enable AsYouTypeFormatter to handle long IDD and NDD.
+ - Allow the presence of an IDD following a +.
+ - Fix formatting of phone numbers which contain only 0s in the national number.
+ - Refactored some code in geocoding including AreaCodeMap and the storage
+   strategies.
+
+* Metadata changes
+ - Updates: AM, BE, BH, BJ, BR, BT, BZ, CI, CL, CN, DE, DK, DM, DZ, EC, EG, FJ,
+   GR, HR, HT, IN, IQ, IS, JM, KE, KG, KH, KR, LA, LB, LR, MA, MD, ML, MO, MX,
+   MY, NE, NG, PG, PH, PK, PY, QA, SA, SD, SG, SN, TD, TG, TH, TN, TT, UG, YE,
+   ZA, ZM
+ - New geocoding data for: AC, CG, CU, CV, EG, ET, FI, FI, FI, GL, JP, KM, MA,
+   MA, MU, MU, MU, MZ, RS, SH, SH, SL, SO, ST, TG, TG, TG, UG, ZM
+ - Updated geocoding data for: AR, DE
+
 August 11th, 2011: libphonenumber-3.8
 * Code changes
  - Fix to demo to not throw null-ptr exceptions for invalid NANPA numbers
diff --git a/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java b/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
index 7c713c8..d658086 100644
--- a/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
+++ b/java/src/com/android/i18n/phonenumbers/AsYouTypeFormatter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -45,7 +45,11 @@
   private String currentFormattingPattern = "";
   private StringBuilder accruedInput = new StringBuilder();
   private StringBuilder accruedInputWithoutFormatting = new StringBuilder();
+  // This indicates whether AsYouTypeFormatter is currently doing the formatting.
   private boolean ableToFormat = true;
+  // Set to true when users enter their own formatting. AsYouTypeFormatter will do no formatting at
+  // all when this is set to true.
+  private boolean inputHasFormatting = false;
   private boolean isInternationalFormatting = false;
   private boolean isExpectingCountryCallingCode = false;
   private final PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
@@ -91,7 +95,13 @@
   // The position of a digit upon which inputDigitAndRememberPosition is most recently invoked, as
   // found in accruedInputWithoutFormatting.
   private int positionToRemember = 0;
+  // This contains anything that has been entered so far preceding the national significant number,
+  // and it is formatted (e.g. with space inserted). For example, this can contain IDD, country
+  // code, and/or NDD, etc.
   private StringBuilder prefixBeforeNationalNumber = new StringBuilder();
+  // This contains the national prefix that has been extracted. It contains only digits without
+  // formatting.
+  private String nationalPrefixExtracted = "";
   private StringBuilder nationalNumber = new StringBuilder();
   private List<NumberFormat> possibleFormats = new ArrayList<NumberFormat>();
 
@@ -137,6 +147,9 @@
       }
       if (createFormattingTemplate(numberFormat)) {
         currentFormattingPattern = pattern;
+        // With a new formatting template, the matched position using the old template needs to be
+        // reset.
+        lastMatchPosition = 0;
         return true;
       } else {  // Remove the current number format from possibleFormats.
         it.remove();
@@ -236,8 +249,10 @@
     lastMatchPosition = 0;
     currentFormattingPattern = "";
     prefixBeforeNationalNumber.setLength(0);
+    nationalPrefixExtracted = "";
     nationalNumber.setLength(0);
     ableToFormat = true;
+    inputHasFormatting = false;
     positionToRemember = 0;
     originalPosition = 0;
     isInternationalFormatting = false;
@@ -283,13 +298,29 @@
     // sign (accepted at the start of the number only).
     if (!isDigitOrLeadingPlusSign(nextChar)) {
       ableToFormat = false;
+      inputHasFormatting = true;
+    } else {
+      nextChar = normalizeAndAccrueDigitsAndPlusSign(nextChar, rememberPosition);
     }
     if (!ableToFormat) {
+      // When we are unable to format because of reasons other than that formatting chars have been
+      // entered, it can be due to really long IDDs or NDDs. If that is the case, we might be able
+      // to do formatting again after extracting them.
+      if (inputHasFormatting) {
+        return accruedInput.toString();
+      } else if (attemptToExtractIdd()) {
+        if (attemptToExtractCountryCallingCode()) {
+          return attemptToChoosePatternWithPrefixExtracted();
+        }
+      } else if (ableToExtractLongerNdd()) {
+        // Add an additional space to separate long NDD and national significant number for
+        // readability.
+        prefixBeforeNationalNumber.append(" ");
+        return attemptToChoosePatternWithPrefixExtracted();
+      }
       return accruedInput.toString();
     }
 
-    nextChar = normalizeAndAccrueDigitsAndPlusSign(nextChar, rememberPosition);
-
     // We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH digits (the plus
     // sign is counted as a digit as well for this purpose) have been entered.
     switch (accruedInputWithoutFormatting.length()) {
@@ -300,26 +331,17 @@
       case 3:
         if (attemptToExtractIdd()) {
           isExpectingCountryCallingCode = true;
-        } else {  // No IDD or plus sign is found, must be entering in national format.
-          removeNationalPrefixFromNationalNumber();
+        } else {  // No IDD or plus sign is found, might be entering in national format.
+          nationalPrefixExtracted = removeNationalPrefixFromNationalNumber();
           return attemptToChooseFormattingPattern();
         }
-      case 4:
-      case 5:
+      default:
         if (isExpectingCountryCallingCode) {
           if (attemptToExtractCountryCallingCode()) {
             isExpectingCountryCallingCode = false;
           }
           return prefixBeforeNationalNumber + nationalNumber.toString();
         }
-      // We make a last attempt to extract a country calling code at the 6th digit because the
-      // maximum length of IDD and country calling code are both 3.
-      case 6:
-        if (isExpectingCountryCallingCode && !attemptToExtractCountryCallingCode()) {
-          ableToFormat = false;
-          return accruedInput.toString();
-        }
-      default:
         if (possibleFormats.size() > 0) {  // The formatting pattern is already chosen.
           String tempNationalNumber = inputDigitHelper(nextChar);
           // See if the accrued digits can be formatted properly already. If not, use the results
@@ -341,6 +363,28 @@
     }
   }
 
+  private String attemptToChoosePatternWithPrefixExtracted() {
+    ableToFormat = true;
+    isExpectingCountryCallingCode = false;
+    possibleFormats.clear();
+    return attemptToChooseFormattingPattern();
+  }
+
+  // Some national prefixes are a substring of others. If extracting the shorter NDD doesn't result
+  // in a number we can format, we try to see if we can extract a longer version here.
+  private boolean ableToExtractLongerNdd() {
+    if (nationalPrefixExtracted.length() > 0) {
+      // Put the extracted NDD back to the national number before attempting to extract a new NDD.
+      nationalNumber.insert(0, nationalPrefixExtracted);
+      // Remove the previously extracted NDD from prefixBeforeNationalNumber. We cannot simply set
+      // it to empty string because people sometimes enter national prefix after country code, e.g
+      // +44 (0)20-1234-5678.
+      int indexOfPreviousNdd = prefixBeforeNationalNumber.lastIndexOf(nationalPrefixExtracted);
+      prefixBeforeNationalNumber.setLength(indexOfPreviousNdd);
+    }
+    return !nationalPrefixExtracted.equals(removeNationalPrefixFromNationalNumber());
+  }
+
   private boolean isDigitOrLeadingPlusSign(char nextChar) {
     return Character.isDigit(nextChar) ||
         (accruedInput.length() == 1 &&
@@ -408,13 +452,14 @@
     }
   }
 
-  private void removeNationalPrefixFromNationalNumber() {
+  // Returns the national prefix extracted, or an empty string if it is not present.
+  private String removeNationalPrefixFromNationalNumber() {
     int startOfNationalNumber = 0;
     if (currentMetaData.getCountryCode() == 1 && nationalNumber.charAt(0) == '1') {
       startOfNationalNumber = 1;
       prefixBeforeNationalNumber.append("1 ");
       isInternationalFormatting = true;
-    } else if (currentMetaData.hasNationalPrefix()) {
+    } else if (currentMetaData.hasNationalPrefixForParsing()) {
       Pattern nationalPrefixForParsing =
         regexCache.getPatternForRegex(currentMetaData.getNationalPrefixForParsing());
       Matcher m = nationalPrefixForParsing.matcher(nationalNumber);
@@ -427,7 +472,9 @@
         prefixBeforeNationalNumber.append(nationalNumber.substring(0, startOfNationalNumber));
       }
     }
+    String nationalPrefix = nationalNumber.substring(0, startOfNationalNumber);
     nationalNumber.delete(0, startOfNationalNumber);
+    return nationalPrefix;
   }
 
   /**
@@ -447,6 +494,7 @@
       int startOfCountryCallingCode = iddMatcher.end();
       nationalNumber.setLength(0);
       nationalNumber.append(accruedInputWithoutFormatting.substring(startOfCountryCallingCode));
+      prefixBeforeNationalNumber.setLength(0);
       prefixBeforeNationalNumber.append(
           accruedInputWithoutFormatting.substring(0, startOfCountryCallingCode));
       if (accruedInputWithoutFormatting.charAt(0) != PhoneNumberUtil.PLUS_SIGN) {
diff --git a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
index c80da97..3600f82 100644
--- a/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
+++ b/java/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,7 +38,7 @@
 
     ArrayList<String> listWithRegionCode;
 
-    listWithRegionCode = new ArrayList<String>(24);
+    listWithRegionCode = new ArrayList<String>(25);
     listWithRegionCode.add("US");
     listWithRegionCode.add("AG");
     listWithRegionCode.add("AI");
@@ -58,6 +58,7 @@
     listWithRegionCode.add("MP");
     listWithRegionCode.add("MS");
     listWithRegionCode.add("PR");
+    listWithRegionCode.add("SX");
     listWithRegionCode.add("TC");
     listWithRegionCode.add("TT");
     listWithRegionCode.add("VC");
diff --git a/java/src/com/android/i18n/phonenumbers/NumberParseException.java b/java/src/com/android/i18n/phonenumbers/NumberParseException.java
index 598723d..038c473 100644
--- a/java/src/com/android/i18n/phonenumbers/NumberParseException.java
+++ b/java/src/com/android/i18n/phonenumbers/NumberParseException.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java
index ac51111..336ecac 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberMatch.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java
index 44efdf7..1cd106c 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -279,6 +279,7 @@
    * combining marks should also return true since we assume they have been added to a preceding
    * Latin character.
    */
+  // @VisibleForTesting
   static boolean isLatinLetter(char letter) {
     // Combining marks are a subset of non-spacing-mark.
     if (!Character.isLetter(letter) && Character.getType(letter) != Character.NON_SPACING_MARK) {
@@ -420,8 +421,14 @@
         }
       }
 
-      PhoneNumber number = phoneUtil.parse(candidate, preferredRegion);
+      PhoneNumber number = phoneUtil.parseAndKeepRawInput(candidate, preferredRegion);
       if (leniency.verify(number, candidate, phoneUtil)) {
+        // We used parseAndKeepRawInput to create this number, but for now we don't return the extra
+        // values parsed. TODO: stop clearing all values here and switch all users over
+        // to using rawInput() rather than the rawString() of PhoneNumberMatch.
+        number.clearCountryCodeSource();
+        number.clearRawInput();
+        number.clearPreferredDomesticCarrierCode();
         return new PhoneNumberMatch(offset, candidate, number);
       }
     } catch (NumberParseException e) {
diff --git a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
index 7c40d18..4a435b8 100644
--- a/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
+++ b/java/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -59,7 +59,8 @@
   static final int REGEX_FLAGS = Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE;
   // The minimum and maximum length of the national significant number.
   private static final int MIN_LENGTH_FOR_NSN = 3;
-  static final int MAX_LENGTH_FOR_NSN = 15;
+  // The ITU says the maximum length should be 15, but we have found longer numbers in Germany.
+  static final int MAX_LENGTH_FOR_NSN = 16;
   // The maximum length of the country calling code.
   static final int MAX_LENGTH_COUNTRY_CODE = 3;
   static final String META_DATA_FILE_PREFIX =
@@ -87,6 +88,10 @@
   private final Set<String> nanpaRegions = new HashSet<String>(35);
   private static final int NANPA_COUNTRY_CODE = 1;
 
+  // The prefix that needs to be inserted in front of a Colombian landline number when dialed from
+  // a mobile phone in Colombia.
+  private static final String COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = "3";
+
   // The PLUS_SIGN signifies the international prefix.
   static final char PLUS_SIGN = '+';
 
@@ -415,15 +420,18 @@
     /**
      * Phone numbers accepted are
      * {@linkplain PhoneNumberUtil#isPossibleNumber(Phonenumber.PhoneNumber) possible} and
-     * {@linkplain PhoneNumberUtil#isValidNumber(Phonenumber.PhoneNumber) valid}.
+     * {@linkplain PhoneNumberUtil#isValidNumber(Phonenumber.PhoneNumber) valid}. Numbers written
+     * in national format must have their national-prefix present if it is usually written for a
+     * number of this type.
      */
     VALID {
       @Override
       boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
-        if (!util.isValidNumber(number)) {
+        if (!util.isValidNumber(number) ||
+            !containsOnlyValidXChars(number, candidate, util)) {
           return false;
         }
-        return containsOnlyValidXChars(number, candidate, util);
+        return isNationalPrefixPresentIfRequired(number, util);
       }
     },
     /**
@@ -442,7 +450,8 @@
       boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
         if (!util.isValidNumber(number) ||
             !containsOnlyValidXChars(number, candidate, util) ||
-            containsMoreThanOneSlash(candidate)) {
+            containsMoreThanOneSlash(candidate) ||
+            !isNationalPrefixPresentIfRequired(number, util)) {
           return false;
         }
         // TODO: Evaluate how this works for other locales (testing has been
@@ -496,7 +505,8 @@
       boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util) {
         if (!util.isValidNumber(number) ||
             !containsOnlyValidXChars(number, candidate, util) ||
-            containsMoreThanOneSlash(candidate)) {
+            containsMoreThanOneSlash(candidate) ||
+            !isNationalPrefixPresentIfRequired(number, util)) {
           return false;
         }
         // TODO: Evaluate how this works for other locales (testing has been
@@ -586,6 +596,51 @@
       return true;
     }
 
+    private static boolean isNationalPrefixPresentIfRequired(
+        PhoneNumber number, PhoneNumberUtil util) {
+      // First, check how we deduced the country code. If it was written in international format,
+      // then the national prefix is not required.
+      if (number.getCountryCodeSource() != CountryCodeSource.FROM_DEFAULT_COUNTRY) {
+        return true;
+      }
+      String phoneNumberRegion =
+          util.getRegionCodeForCountryCode(number.getCountryCode());
+      PhoneMetadata metadata = util.getMetadataForRegion(phoneNumberRegion);
+      if (metadata == null) {
+        return true;
+      }
+      // Check if a national prefix should be present when formatting this number.
+      String nationalNumber = util.getNationalSignificantNumber(number);
+      NumberFormat formatRule =
+          util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
+      // To do this, we check that a national prefix formatting rule was present and that it wasn't
+      // just the first-group symbol ($1) with punctuation.
+      if ((formatRule != null) && formatRule.getNationalPrefixFormattingRule().length() > 0) {
+        if (formatRule.isNationalPrefixOptionalWhenFormatting()) {
+          // The national-prefix is optional in these cases, so we don't need to check if it was
+          // present.
+          return true;
+        }
+        // Remove the first-group symbol.
+        String candidateNationalPrefixRule = formatRule.getNationalPrefixFormattingRule();
+        // We assume that the first-group symbol will never be _before_ the national prefix.
+        candidateNationalPrefixRule =
+            candidateNationalPrefixRule.substring(0, candidateNationalPrefixRule.indexOf("$1"));
+        candidateNationalPrefixRule = util.normalizeDigitsOnly(candidateNationalPrefixRule);
+        if (candidateNationalPrefixRule.length() == 0) {
+          // National Prefix not needed for this number.
+          return true;
+        }
+        // Normalize the remainder.
+        String rawInputCopy = util.normalizeDigitsOnly(number.getRawInput());
+        StringBuilder rawInput = new StringBuilder(rawInputCopy);
+        // Check if we found a national prefix and/or carrier code at the start of the raw input,
+        // and return the result.
+        return util.maybeStripNationalPrefixAndCarrierCode(rawInput, metadata, null);
+      }
+      return true;
+    }
+
     /** Returns true if {@code number} is a verified number according to this leniency. */
     abstract boolean verify(PhoneNumber number, String candidate, PhoneNumberUtil util);
   }
@@ -622,7 +677,7 @@
     }
   }
 
-  private void close(InputStream in) {
+  private static void close(InputStream in) {
     if (in != null) {
       try {
         in.close();
@@ -678,6 +733,7 @@
    * @param number  string to be checked for viability as a phone number
    * @return        true if the number could be a phone number of some sort, otherwise false
    */
+  // @VisibleForTesting
   static boolean isViablePhoneNumber(String number) {
     if (number.length() < MIN_LENGTH_FOR_NSN) {
       return false;
@@ -867,7 +923,7 @@
       return 0;
     }
 
-    if (getRegionCodeForNumber(number).equals("AR") &&
+    if (getRegionCodeForCountryCode(number.getCountryCode()).equals("AR") &&
         getNumberType(number) == PhoneNumberType.MOBILE) {
       // Argentinian mobile numbers, when formatted in the international format, are in the form of
       // +54 9 NDC XXXX.... As a result, we take the length of the third group (NDC) and add 1 for
@@ -929,7 +985,7 @@
   }
 
   /**
-   * Convenience method to enable tests to get a list of what regions the library has metadata for.
+   * Convenience method to get a list of what regions the library has metadata for.
    */
   public Set<String> getSupportedRegions() {
     return supportedRegions;
@@ -1153,6 +1209,52 @@
   }
 
   /**
+   * Returns a number formatted in such a way that it can be dialed from a mobile phone in a
+   * specific region. If the number cannot be reached from the region (e.g. some countries block
+   * toll-free numbers from being called outside of the country), the method returns an empty
+   * string.
+   *
+   * @param number  the phone number to be formatted
+   * @param regionCallingFrom  the region where the call is being placed
+   * @param withFormatting  whether the number should be returned with formatting symbols, such as
+   *     spaces and dashes.
+   * @return  the formatted phone number
+   */
+  public String formatNumberForMobileDialing(PhoneNumber number, String regionCallingFrom,
+                                             boolean withFormatting) {
+    String regionCode = getRegionCodeForNumber(number);
+    if (!isValidRegionCode(regionCode)) {
+      return number.hasRawInput() ? number.getRawInput() : "";
+    }
+
+    String formattedNumber;
+    // Clear the extension, as that part cannot normally be dialed together with the main number.
+    PhoneNumber numberNoExt = new PhoneNumber().mergeFrom(number).clearExtension();
+    PhoneNumberType numberType = getNumberType(numberNoExt);
+    if ((regionCode.equals("CO")) && (regionCallingFrom.equals("CO")) &&
+        (numberType == PhoneNumberType.FIXED_LINE)) {
+      formattedNumber =
+          formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX);
+    } else if ((regionCode.equals("BR")) && (regionCallingFrom.equals("BR")) &&
+        ((numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE) ||
+         (numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE))) {
+      formattedNumber = numberNoExt.hasPreferredDomesticCarrierCode()
+          ? formatNationalNumberWithPreferredCarrierCode(numberNoExt, "")
+          // Brazilian fixed line and mobile numbers need to be dialed with a carrier code when
+          // called within Brazil. Without that, most of the carriers won't connect the call.
+          // Because of that, we return an empty string here.
+          : "";
+    } else if (canBeInternationallyDialled(numberNoExt)) {
+      return withFormatting ? format(numberNoExt, PhoneNumberFormat.INTERNATIONAL)
+                            : format(numberNoExt, PhoneNumberFormat.E164);
+    } else {
+      formattedNumber = (regionCallingFrom.equals(regionCode))
+          ? format(numberNoExt, PhoneNumberFormat.NATIONAL) : "";
+    }
+    return withFormatting ? formattedNumber : normalizeDigitsOnly(formattedNumber);
+  }
+
+  /**
    * Formats a phone number for out-of-country dialing purposes. If no regionCallingFrom is
    * supplied, we format the number in its INTERNATIONAL format. If the country calling code is the
    * same as that of the region where the number is from, then NATIONAL formatting will be applied.
@@ -1400,7 +1502,7 @@
         formattedNumber.insert(0, " ").insert(0, countryCallingCode).insert(0, PLUS_SIGN);
         return;
       case RFC3966:
-        formattedNumber.insert(0, "-").insert(0, countryCallingCode) .insert(0, PLUS_SIGN);
+        formattedNumber.insert(0, "-").insert(0, countryCallingCode).insert(0, PLUS_SIGN);
         return;
       case NATIONAL:
       default:
@@ -1469,44 +1571,37 @@
                                           List<NumberFormat> availableFormats,
                                           PhoneNumberFormat numberFormat,
                                           String carrierCode) {
-    for (NumberFormat numFormat : availableFormats) {
-      int size = numFormat.leadingDigitsPatternSize();
-      if (size == 0 || regexCache.getPatternForRegex(
-              // We always use the last leading_digits_pattern, as it is the most detailed.
-              numFormat.getLeadingDigitsPattern(size - 1)).matcher(nationalNumber).lookingAt()) {
-        Matcher m = regexCache.getPatternForRegex(numFormat.getPattern()).matcher(nationalNumber);
-        if (m.matches()) {
-          String numberFormatRule = numFormat.getFormat();
-          if (numberFormat == PhoneNumberFormat.NATIONAL &&
-              carrierCode != null && carrierCode.length() > 0 &&
-              numFormat.getDomesticCarrierCodeFormattingRule().length() > 0) {
-            // Replace the $CC in the formatting rule with the desired carrier code.
-            String carrierCodeFormattingRule = numFormat.getDomesticCarrierCodeFormattingRule();
-            carrierCodeFormattingRule =
-                CC_PATTERN.matcher(carrierCodeFormattingRule).replaceFirst(carrierCode);
-            // Now replace the $FG in the formatting rule with the first group and the carrier code
-            // combined in the appropriate way.
-            numberFormatRule = FIRST_GROUP_PATTERN.matcher(numberFormatRule)
-                .replaceFirst(carrierCodeFormattingRule);
-            return m.replaceAll(numberFormatRule);
-          } else {
-            // Use the national prefix formatting rule instead.
-            String nationalPrefixFormattingRule = numFormat.getNationalPrefixFormattingRule();
-            if (numberFormat == PhoneNumberFormat.NATIONAL &&
-                nationalPrefixFormattingRule != null &&
-                nationalPrefixFormattingRule.length() > 0) {
-              Matcher firstGroupMatcher = FIRST_GROUP_PATTERN.matcher(numberFormatRule);
-              return m.replaceAll(firstGroupMatcher.replaceFirst(nationalPrefixFormattingRule));
-            } else {
-              return m.replaceAll(numberFormatRule);
-            }
-          }
-        }
+    NumberFormat numFormat = chooseFormattingPatternForNumber(availableFormats, nationalNumber);
+    if (numFormat == null) {
+      // If no pattern above is matched, we format the number as a whole.
+      return nationalNumber;
+    }
+    String numberFormatRule = numFormat.getFormat();
+    Matcher m = regexCache.getPatternForRegex(numFormat.getPattern()).matcher(nationalNumber);
+    if (numberFormat == PhoneNumberFormat.NATIONAL &&
+        carrierCode != null && carrierCode.length() > 0 &&
+        numFormat.getDomesticCarrierCodeFormattingRule().length() > 0) {
+      // Replace the $CC in the formatting rule with the desired carrier code.
+      String carrierCodeFormattingRule = numFormat.getDomesticCarrierCodeFormattingRule();
+      carrierCodeFormattingRule =
+          CC_PATTERN.matcher(carrierCodeFormattingRule).replaceFirst(carrierCode);
+      // Now replace the $FG in the formatting rule with the first group and the carrier code
+      // combined in the appropriate way.
+      numberFormatRule = FIRST_GROUP_PATTERN.matcher(numberFormatRule)
+          .replaceFirst(carrierCodeFormattingRule);
+      return m.replaceAll(numberFormatRule);
+    } else {
+      // Use the national prefix formatting rule instead.
+      String nationalPrefixFormattingRule = numFormat.getNationalPrefixFormattingRule();
+      if (numberFormat == PhoneNumberFormat.NATIONAL &&
+          nationalPrefixFormattingRule != null &&
+          nationalPrefixFormattingRule.length() > 0) {
+        Matcher firstGroupMatcher = FIRST_GROUP_PATTERN.matcher(numberFormatRule);
+        return m.replaceAll(firstGroupMatcher.replaceFirst(nationalPrefixFormattingRule));
+      } else {
+        return m.replaceAll(numberFormatRule);
       }
     }
-
-    // If no pattern above is matched, we format the number as a whole.
-    return nationalNumber;
   }
 
   /**
@@ -1531,7 +1626,7 @@
   public PhoneNumber getExampleNumberForType(String regionCode, PhoneNumberType type) {
     // Check the region code is valid.
     if (!isValidRegionCode(regionCode)) {
-      LOGGER.log(Level.WARNING, "Invalid or unknown region code provided.");
+      LOGGER.log(Level.SEVERE, "Invalid or unknown region code provided: " + regionCode);
       return null;
     }
     PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode), type);
@@ -2015,6 +2110,10 @@
   // 0 if fullNumber doesn't start with a valid country calling code, and leaves nationalNumber
   // unmodified.
   int extractCountryCode(StringBuilder fullNumber, StringBuilder nationalNumber) {
+    if ((fullNumber.length() == 0) || (fullNumber.charAt(0) == '0')) {
+      // Country codes do not begin with a '0'.
+      return 0;
+    }
     int potentialCountryCode;
     int numberLength = fullNumber.length();
     for (int i = 1; i <= MAX_LENGTH_COUNTRY_CODE && i <= numberLength; i++) {
@@ -2058,6 +2157,7 @@
    *     only populated when keepCountryCodeSource is true.
    * @return  the country calling code extracted or 0 if none could be extracted
    */
+  // @VisibleForTesting
   int maybeExtractCountryCode(String number, PhoneMetadata defaultRegionMetadata,
                               StringBuilder nationalNumber, boolean keepRawInput,
                               PhoneNumber phoneNumber)
@@ -2106,7 +2206,8 @@
         PhoneNumberDesc generalDesc = defaultRegionMetadata.getGeneralDesc();
         Pattern validNumberPattern =
             regexCache.getPatternForRegex(generalDesc.getNationalNumberPattern());
-        maybeStripNationalPrefixAndCarrierCode(potentialNationalNumber, defaultRegionMetadata);
+        maybeStripNationalPrefixAndCarrierCode(
+            potentialNationalNumber, defaultRegionMetadata, null /* Don't need the carrier code */);
         Pattern possibleNumberPattern =
             regexCache.getPatternForRegex(generalDesc.getPossibleNumberPattern());
         // If the number was not valid before but is valid now, or if it was too long before, we
@@ -2165,6 +2266,7 @@
    *     removed from the number, otherwise CountryCodeSource.FROM_DEFAULT_COUNTRY if the number did
    *     not seem to be in international format.
    */
+  // @VisibleForTesting
   CountryCodeSource maybeStripInternationalPrefixAndNormalize(
       StringBuilder number,
       String possibleIddPrefix) {
@@ -2181,13 +2283,6 @@
     }
     // Attempt to parse the first digits as an international prefix.
     Pattern iddPattern = regexCache.getPatternForRegex(possibleIddPrefix);
-    if (parsePrefixAsIdd(iddPattern, number)) {
-      normalize(number);
-      return CountryCodeSource.FROM_NUMBER_WITH_IDD;
-    }
-    // If still not found, then try and normalize the number and then try again. This shouldn't be
-    // done before, since non-numeric characters (+ and ~) may legally be in the international
-    // prefix.
     normalize(number);
     return parsePrefixAsIdd(iddPattern, number)
            ? CountryCodeSource.FROM_NUMBER_WITH_IDD
@@ -2200,15 +2295,17 @@
    * @param number  the normalized telephone number that we wish to strip any national
    *     dialing prefix from
    * @param metadata  the metadata for the region that we think this number is from
-   * @return the carrier code extracted if it is present, otherwise return an empty string.
+   * @param carrierCode  a place to insert the carrier code if one is extracted
+   * @return true if a national prefix or carrier code (or both) could be extracted.
    */
-  String maybeStripNationalPrefixAndCarrierCode(StringBuilder number, PhoneMetadata metadata) {
-    String carrierCode = "";
+  // @VisibleForTesting
+  boolean maybeStripNationalPrefixAndCarrierCode(
+      StringBuilder number, PhoneMetadata metadata, StringBuilder carrierCode) {
     int numberLength = number.length();
     String possibleNationalPrefix = metadata.getNationalPrefixForParsing();
     if (numberLength == 0 || possibleNationalPrefix.length() == 0) {
       // Early return for numbers of zero length.
-      return "";
+      return false;
     }
     // Attempt to parse the first digits as a national prefix.
     Matcher prefixMatcher = regexCache.getPatternForRegex(possibleNationalPrefix).matcher(number);
@@ -2227,12 +2324,13 @@
         // If the original number was viable, and the resultant number is not, we return.
         if (isViableOriginalNumber &&
             !nationalNumberRule.matcher(number.substring(prefixMatcher.end())).matches()) {
-          return "";
+          return false;
         }
-        if (numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {
-          carrierCode = prefixMatcher.group(1);
+        if (carrierCode != null && numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {
+          carrierCode.append(prefixMatcher.group(1));
         }
         number.delete(0, prefixMatcher.end());
+        return true;
       } else {
         // Check that the resultant number is still viable. If not, return. Check this by copying
         // the string buffer and making the transformation on the copy first.
@@ -2240,15 +2338,16 @@
         transformedNumber.replace(0, numberLength, prefixMatcher.replaceFirst(transformRule));
         if (isViableOriginalNumber &&
             !nationalNumberRule.matcher(transformedNumber.toString()).matches()) {
-          return "";
+          return false;
         }
-        if (numOfGroups > 1) {
-          carrierCode = prefixMatcher.group(1);
+        if (carrierCode != null && numOfGroups > 1) {
+          carrierCode.append(prefixMatcher.group(1));
         }
         number.replace(0, number.length(), transformedNumber.toString());
+        return true;
       }
     }
-    return carrierCode;
+    return false;
   }
 
   /**
@@ -2258,6 +2357,7 @@
    * @param number  the non-normalized telephone number that we wish to strip the extension from
    * @return        the phone extension
    */
+  // @VisibleForTesting
   String maybeStripExtension(StringBuilder number) {
     Matcher m = EXTN_PATTERN.matcher(number);
     // If we find a potential extension, and the number preceding this is a viable number, we assume
@@ -2445,8 +2545,29 @@
     // Check to see if the number is given in international format so we know whether this number is
     // from the default region or not.
     StringBuilder normalizedNationalNumber = new StringBuilder();
-    int countryCode = maybeExtractCountryCode(nationalNumber.toString(), regionMetadata,
-                                              normalizedNationalNumber, keepRawInput, phoneNumber);
+    int countryCode = 0;
+    try {
+      // TODO: This method should really just take in the string buffer that has already
+      // been created, and just remove the prefix, rather than taking in a string and then
+      // outputting a string buffer.
+      countryCode = maybeExtractCountryCode(nationalNumber.toString(), regionMetadata,
+                                            normalizedNationalNumber, keepRawInput, phoneNumber);
+    } catch (NumberParseException e) {
+      Matcher matcher = PLUS_CHARS_PATTERN.matcher(nationalNumber.toString());
+      if (e.getErrorType() == NumberParseException.ErrorType.INVALID_COUNTRY_CODE &&
+          matcher.lookingAt()) {
+        // Strip the plus-char, and try again.
+        countryCode = maybeExtractCountryCode(nationalNumber.substring(matcher.end()),
+                                              regionMetadata, normalizedNationalNumber,
+                                              keepRawInput, phoneNumber);
+        if (countryCode == 0) {
+          throw new NumberParseException(NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
+                                         "Could not interpret numbers after plus-sign.");
+        }
+      } else {
+        throw new NumberParseException(e.getErrorType(), e.getMessage());
+      }
+    }
     if (countryCode != 0) {
       String phoneNumberRegion = getRegionCodeForCountryCode(countryCode);
       if (!phoneNumberRegion.equals(defaultRegion)) {
@@ -2469,10 +2590,10 @@
                                      "The string supplied is too short to be a phone number.");
     }
     if (regionMetadata != null) {
-      String carrierCode =
-          maybeStripNationalPrefixAndCarrierCode(normalizedNationalNumber, regionMetadata);
+      StringBuilder carrierCode = new StringBuilder();
+      maybeStripNationalPrefixAndCarrierCode(normalizedNationalNumber, regionMetadata, carrierCode);
       if (keepRawInput) {
-        phoneNumber.setPreferredDomesticCarrierCode(carrierCode);
+        phoneNumber.setPreferredDomesticCarrierCode(carrierCode.toString());
       }
     }
     int lengthOfNationalNumber = normalizedNationalNumber.length();
diff --git a/java/src/com/android/i18n/phonenumbers/Phonemetadata.java b/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
index 3642b34..927a6c3 100644
--- a/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
+++ b/java/src/com/android/i18n/phonenumbers/Phonemetadata.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -102,6 +102,19 @@
       return this;
     }
 
+    // optional bool national_prefix_optional_when_formatting = 6;
+    private boolean hasNationalPrefixOptionalWhenFormatting;
+    private boolean nationalPrefixOptionalWhenFormatting_ = false;
+    public boolean hasNationalPrefixOptionalWhenFormatting() {
+      return hasNationalPrefixOptionalWhenFormatting; }
+    public boolean isNationalPrefixOptionalWhenFormatting() {
+      return nationalPrefixOptionalWhenFormatting_; }
+    public NumberFormat setNationalPrefixOptionalWhenFormatting(boolean value) {
+      hasNationalPrefixOptionalWhenFormatting = true;
+      nationalPrefixOptionalWhenFormatting_ = value;
+      return this;
+    }
+
     // optional string domestic_carrier_code_formatting_rule = 5;
     private boolean hasDomesticCarrierCodeFormattingRule;
     private String domesticCarrierCodeFormattingRule_ = "";
@@ -132,6 +145,7 @@
       if (other.hasDomesticCarrierCodeFormattingRule()) {
         setDomesticCarrierCodeFormattingRule(other.getDomesticCarrierCodeFormattingRule());
       }
+      setNationalPrefixOptionalWhenFormatting(other.isNationalPrefixOptionalWhenFormatting());
       return this;
     }
 
@@ -152,6 +166,7 @@
       if (hasDomesticCarrierCodeFormattingRule) {
         objectOutput.writeUTF(domesticCarrierCodeFormattingRule_);
       }
+      objectOutput.writeBoolean(nationalPrefixOptionalWhenFormatting_);
     }
 
     public void readExternal(ObjectInput objectInput) throws IOException {
@@ -167,6 +182,7 @@
       if (objectInput.readBoolean()) {
         setDomesticCarrierCodeFormattingRule(objectInput.readUTF());
       }
+      setNationalPrefixOptionalWhenFormatting(objectInput.readBoolean());
     }
   }
 
@@ -430,6 +446,20 @@
       return this;
     }
 
+    // required PhoneNumberDesc emergency = 27;
+    private boolean hasEmergency;
+    private PhoneNumberDesc emergency_ = null;
+    public boolean hasEmergency() { return hasEmergency; }
+    public PhoneNumberDesc getEmergency() { return emergency_; }
+    public PhoneMetadata setEmergency(PhoneNumberDesc value) {
+      if (value == null) {
+        throw new NullPointerException();
+      }
+      hasEmergency = true;
+      emergency_ = value;
+      return this;
+    }
+
     // required PhoneNumberDesc noInternationalDialling = 24;
     private boolean hasNoInternationalDialling;
     private PhoneNumberDesc noInternationalDialling_ = null;
@@ -660,6 +690,10 @@
       if (hasUan) {
         uan_.writeExternal(objectOutput);
       }
+      objectOutput.writeBoolean(hasEmergency);
+      if (hasEmergency) {
+        emergency_.writeExternal(objectOutput);
+      }
       objectOutput.writeBoolean(hasNoInternationalDialling);
       if (hasNoInternationalDialling) {
         noInternationalDialling_.writeExternal(objectOutput);
@@ -783,6 +817,12 @@
       if (hasDesc) {
         PhoneNumberDesc desc = new PhoneNumberDesc();
         desc.readExternal(objectInput);
+        setEmergency(desc);
+      }
+      hasDesc = objectInput.readBoolean();
+      if (hasDesc) {
+        PhoneNumberDesc desc = new PhoneNumberDesc();
+        desc.readExternal(objectInput);
         setNoInternationalDialling(desc);
       }
 
diff --git a/java/src/com/android/i18n/phonenumbers/Phonenumber.java b/java/src/com/android/i18n/phonenumbers/Phonenumber.java
index 86afef1..73fa884 100644
--- a/java/src/com/android/i18n/phonenumbers/Phonenumber.java
+++ b/java/src/com/android/i18n/phonenumbers/Phonenumber.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/src/com/android/i18n/phonenumbers/RegexCache.java b/java/src/com/android/i18n/phonenumbers/RegexCache.java
index 1d90390..d2e9b2a 100644
--- a/java/src/com/android/i18n/phonenumbers/RegexCache.java
+++ b/java/src/com/android/i18n/phonenumbers/RegexCache.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/src/com/android/i18n/phonenumbers/ShortNumberUtil.java b/java/src/com/android/i18n/phonenumbers/ShortNumberUtil.java
new file mode 100644
index 0000000..951164d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/ShortNumberUtil.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
+import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc;
+
+import java.util.regex.Pattern;
+
+/*
+ * Utility for international short phone numbers, such as short codes and emergency numbers. Note
+ * most commercial short numbers are not handled here, but by the PhoneNumberUtil.
+ *
+ * @author Shaopeng Jia
+ */
+public class ShortNumberUtil {
+
+  private final PhoneNumberUtil phoneUtil;
+
+  public ShortNumberUtil() {
+    phoneUtil = PhoneNumberUtil.getInstance();
+  }
+
+  // @VisibleForTesting
+  ShortNumberUtil(PhoneNumberUtil util) {
+    phoneUtil = util;
+  }
+
+  /**
+   * Returns true if the number might be used to connect to an emergency service in the given
+   * region.
+   *
+   * This method takes into account cases where the number might contain formatting, or might have
+   * additional digits appended (when it is okay to do that in the region specified).
+   *
+   * @param number  the phone number to test
+   * @param regionCode  the region where the phone number is being dialed
+   * @return  if the number might be used to connect to an emergency service in the given region.
+   */
+  public boolean connectsToEmergencyNumber(String number, String regionCode) {
+    return matchesEmergencyNumberHelper(number, regionCode, true /* allows prefix match */);
+  }
+
+  /**
+   * Returns true if the number exactly matches an emergency service number in the given region.
+   *
+   * This method takes into account cases where the number might contain formatting, but doesn't
+   * allow additional digits to be appended.
+   *
+   * @param number  the phone number to test
+   * @param regionCode  the region where the phone number is being dialed
+   * @return  if the number exactly matches an emergency services number in the given region.
+   */
+  public boolean isEmergencyNumber(String number, String regionCode) {
+    return matchesEmergencyNumberHelper(number, regionCode, false /* doesn't allow prefix match */);
+  }
+
+  private boolean matchesEmergencyNumberHelper(String number, String regionCode,
+      boolean allowPrefixMatch) {
+    number = PhoneNumberUtil.extractPossibleNumber(number);
+    if (PhoneNumberUtil.PLUS_CHARS_PATTERN.matcher(number).lookingAt()) {
+      // Returns false if the number starts with a plus sign. We don't believe dialing the country
+      // code before emergency numbers (e.g. +1911) works, but later, if that proves to work, we can
+      // add additional logic here to handle it.
+      return false;
+    }
+    PhoneMetadata metadata = phoneUtil.getMetadataForRegion(regionCode);
+    if (metadata == null || !metadata.hasEmergency()) {
+      return false;
+    }
+    Pattern emergencyNumberPattern =
+        Pattern.compile(metadata.getEmergency().getNationalNumberPattern());
+    String normalizedNumber = PhoneNumberUtil.normalizeDigitsOnly(number);
+    // In Brazil, it is impossible to append additional digits to an emergency number to dial the
+    // number.
+    return (!allowPrefixMatch || regionCode.equals("BR"))
+        ? emergencyNumberPattern.matcher(normalizedNumber).matches()
+        : emergencyNumberPattern.matcher(normalizedNumber).lookingAt();
+  }
+}
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
index d0069f1..63a0784 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD
index 2f5199b..5651404 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
index 2f543e1..5ce6bd9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF
index 0120a23..ce0b677 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
index ce1d508..0fb852a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
index 2bdd9da..5ec108b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL
index 15cbd77..e7f2d42 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
index 7d0f2a2..5af20f5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
index e2aa056..27c2ae3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO
index 13a5285..77b08cb 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
index a4f9793..a39c601 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
index 76f517c..3b38675 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
index 6cdcf99..c38a56c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
index 0b96301..2fa06cf 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW
index 5e69468..fb3aad4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX
index 8abd003..c0dbabf 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ
index 8b6224b..e4b14a6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA
index c5e36f6..ad4662f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
index 553a1de..982cff9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
index f335c39..b6c204a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE
index 2463660..b37f61f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
index 9cd27d8..48d20e7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
index f3645fd..2b3c0ae 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
index 9e7b9c8..841ea9a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI
index 2b67b00..293ebbc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ
index e5ef1ec..e3c5863 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL
index b410d02..4987820 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
index c50e099..d014b2a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN
index 46b0177..c257c58 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO
index 8e8857c..f5919ff 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
index 9aa4d28..ec29af2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
index 23bbf75..f52796e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT
index 139f181..e549cd7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW
index 641043d..21fd265 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY
index b07157e..a679105 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ
index 3e4f371..5a4d052 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
index 396702d..5bf386d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC
index 948af63..2f2f8aa 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD
index 4456d29..cf7bba2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF
index eeb5eeb..e3ce491 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG
index 6b809d4..2b4128d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH
index 1b520c3..409254a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
index dadad8e..98198b8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK
index ce2a8ec..2f6fe63 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
index 8fabf74..0e90d89 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM
index 5fb3c1f..4018df4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
index 697b08c..67a7f5e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
index e87ef01..b1dbb84 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
index 5090575..cbc064b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU
index 3d2e499..97e9838 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV
index 947e660..4517244 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX
index 585d96a..cb8dfd9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY
index fb374ed..de1e004 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
index 43ec39e..5c41a79 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
index 87844f3..cfc5b19 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
index 2978ffe..5511381 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
index cbb0f4c..0082966 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
index 8713673..723ea80 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
index c48d82c..0305f76 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
index c3d52a0..4107335 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
index 6578ddd..343743d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
index 8387a3b..28bd9fb 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
index a00edb4..38e39b3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER
index 5c25636..ae89200 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
index c5717d0..9b855f1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
index 6aacbc5..8843e54 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI
index bd871b6..604d7ff 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ
index d123c00..cdd713c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK
index 47e774d..6c19901 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM
index 678e85d..b4031f0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO
index f6641dd..46dac92 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
index 7a2adfd..66d244e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
index 800c4f2..dddd714 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
index d1ae758..bd6e72a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
index ef111dd..e120fa5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE
index 9b0cc6e..ac5bb57 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF
index b84bf20..da17df2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
index 7d24686..0e6809f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
index 4e97d13..dea89c7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI
index 6625331..7dcc9ff 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
index f50ade6..d327b75 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM
index abef42b..3bf3e41 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN
index c865a17..b0b7406 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP
index fdce952..e03584b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ
index 2444a74..424b068 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
index 2c4a828..655b5b4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT
index 2f9f995..a2a20cf 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
index 7cd7701..9a006f1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW
index 9ca2299..77b6398 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY
index 1636ed4..eb36761 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
index 89a9cff..dfd2d09 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN
index 8aa3857..6dd47c0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
index 9766d56..27a0c8a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT
index 6ee3bd1..245ee93 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
index 98f85c9..6ef1306 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID
index c2d6738..3d0f8cc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE
index bd1e9ed..12bc792 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
index f784b0f..a0f1071 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM
index ab78e3a..8d8c881 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
index 8354c60..05b4b50 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO
index 7731fb8..a9aa569 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ
index 475492f..4009946 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
index a5b3394..9edbc87 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
index eb45cb4..d281347 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
index da951bc..d5c2c71 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE
index 37dc706..1908b64 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
index dce03a8..81be1e1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
index cc0d091..47058ad 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
index 9b020a4..9db7e6e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
index 4c35cb2..68de57a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG
index dc63e31..617ce07 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
index f88db2f..9f757d4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI
index 1b754cc..82bdb90 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM
index b691649..21570ae 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
index 9045dfb..5a5f4e8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP
index aa771a1..42a4b26 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
index 47f4390..816ed3f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
index e0df426..77f805a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
index 5bfc93e..cfd2678 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
index 06708a2..b129ff6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
index 7f78cb8..62db7dc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
index f1dfbca..65b3c94 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
index 3239dd6..c8a6ad5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
index e1d137c..c29d890 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK
index 2b06a38..a9a9d2e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
index dd7306b..f1ce4be 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS
index e65316e..e04c603 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT
index 02ad948..0c11315 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU
index ef5e720..4ffc791 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV
index 80c3aa3..a76eab9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY
index a3c6000..8fc1ee7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
index dd0beb5..ef1522a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC
index 1a80b90..79fac1a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
index 0763f61..b17e4af 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
index 7cce967..24937fd 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF
index 2daec61..3813149 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG
index 7eef113..072379f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH
index ec542a9..fc64213 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
index 040a791..3bbd43e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML
index c7d6d18..5cce562 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
index fbe65bc..4f3ea91 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
index b96b7f9..0a7e31a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO
index d0bb6ae..4cf9625 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
index 83c50af..0f9476d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
index 889f649..c48db34 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR
index d4e34bc..36db9e4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
index c6d5fe5..969cafc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
index e4ef74a..c2aaa53 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
index 51ef9b2..d69bd68 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
index 7e2e0b3..8841a29 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW
index 36fe6c9..7bf7d43 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
index dc44efb..fa3cb40 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
index 35b8414..07b6b85 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ
index 5128f4e..3d0967a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA
index 5c54aa0..86d10bc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
index 6e85722..6e5d3f7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE
index 62309e5..b9cd0ac 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF
index 59991ff..622d39f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
index 4e12b36..0f478ca 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI
index 95e956a..64d3eb0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL
index f0a7b30..aaefdd9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO
index cf7b46e..6838854 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP
index e54df79..2868f9c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR
index 65dd064..c8ec23e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU
index ac5a701..50dbafd 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ
index 199e3c2..6c3535b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
index a3ce6c1..84cded4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
index ad660fc..2c032e6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE
index 7c9e801..6b89b38 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
index f09ce4c..60c6d30 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG
index 767f47c..9fbb7bc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH
index cf6ad8d..56a53cb 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
index 6b0027d..e1114b6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL
index 012f5b7..69d172c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM
index b91198c..f8da61b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
index ed7165b..3b8c4a2 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS
index 1114659..da7d297 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT
index 9c691cc..6baccc7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW
index f51d0d1..45398fa 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
index 628bd87..6bc931e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
index da69ee2..8ec44a0 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
index 0a282a4..e2af509 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
index d45708a..a55d60f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS
index d3691b5..5a803f9 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
index 189e57f..28bb82d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW
index 22f3ec7..cb6329e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
index a938bbf..aefd945 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
index 5524740..e35361f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC
index 95fa89a..f012a55 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
index 37871a1..060bd91 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE
index 8851346..e5850c7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
index 6020eb3..e8dfd31 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
index e928407..dcf690a 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
index b9df92b..ca7c517 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ
index aca19d3..17122cc 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
index 50b4e3a..48323b5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
index 5ab8432..e942566 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
index 176add7..9432784 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
index 853bd40..549ff61 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO
index 2db9450..0b4edc7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR
index a215045..a7260aa 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST
index 9a8a7ec..265f3af 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV
index 695ef3f..436b979 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
new file mode 100644
index 0000000..50b2362
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY
index 858b5da..4a6a7b8 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ
index b487a13..c1ed388 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
index 0db9395..dc62e4c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD
index dc573d1..b92127f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG
index 924a860..176b9bf 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
index 119af7d..8b56a1f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ
index e683407..efce54e 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK
index 83d8bfc..849f1c7 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
index 3e96e18..46a855f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM
index b3b4ad8..cf1c21d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
index b4c0747..50a7217 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO
index 256eebf..e2cd8de 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
index df54d35..060cc34 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
index a023922..945011b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV
index 973582a..3b53210 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW
index 08b4172..acda89f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ
index b5c29af..5450858 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA
index f74e132..5019f02 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
index 97fd6fb..d154f24 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
index d6ac18f..1046ec6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY
index ebf41e1..f9e4805 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
index 05c6854..f894a1f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA
index 0b7f9ee..42367de 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
index 5817468..294335d 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE
index 1db7196..645c9a5 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
index 3c4a379..bda87e4 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
index 3f93a89..987acec 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN
index 6f2b378..ad1e62b 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU
index fe110d2..26ecb82 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF
index f6b6c15..2337ed6 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS
index 9022baa..03fa87f 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE
index b18ec98..be646a1 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT
index ae7df49..e5eb105 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
index b036930..c742d5c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM
index 5e0253d..dd3dea3 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW
index 45b6bc1..2766b3c 100644
--- a/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW
+++ b/java/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMap.java b/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMap.java
index cab8818..c22bde5 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMap.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMap.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -129,12 +129,15 @@
    * Supports Java Serialization.
    */
   public void writeExternal(ObjectOutput objectOutput) throws IOException {
-    objectOutput.writeBoolean(areaCodeMapStorage.isFlyweight());
+    objectOutput.writeBoolean(areaCodeMapStorage instanceof FlyweightMapStorage);
     areaCodeMapStorage.writeExternal(objectOutput);
   }
 
   /**
-   * Returns the description of the geographical area the {@code number} corresponds to.
+   * Returns the description of the geographical area the {@code number} corresponds to. This method
+   * distinguishes the case of an invalid prefix and a prefix for which the name is not available in
+   * the current language. If the description is not available in the current language an empty
+   * string is returned. If no description was found for the provided number, null is returned.
    *
    * @param number  the phone number to look up
    * @return  the description of the geographical area
@@ -142,7 +145,7 @@
   String lookup(PhoneNumber number) {
     int numOfEntries = areaCodeMapStorage.getNumOfEntries();
     if (numOfEntries == 0) {
-      return "";
+      return null;
     }
     long phonePrefix =
         Long.parseLong(number.getCountryCode() + phoneUtil.getNationalSignificantNumber(number));
@@ -156,7 +159,7 @@
       }
       currentIndex = binarySearch(0, currentIndex, phonePrefix);
       if (currentIndex < 0) {
-        return "";
+        return null;
       }
       int currentPrefix = areaCodeMapStorage.getPrefix(currentIndex);
       if (phonePrefix == currentPrefix) {
@@ -164,7 +167,7 @@
       }
       currentSetOfLengths = currentSetOfLengths.headSet(possibleLength);
     }
-    return "";
+    return null;
   }
 
   /**
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMapStorageStrategy.java b/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMapStorageStrategy.java
index 2d88c12..c91f5d1 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMapStorageStrategy.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/AreaCodeMapStorageStrategy.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -29,35 +29,10 @@
  *
  * @author Philippe Liard
  */
-// @VisibleForTesting
 abstract class AreaCodeMapStorageStrategy {
   protected int numOfEntries = 0;
   protected final TreeSet<Integer> possibleLengths = new TreeSet<Integer>();
 
-  public AreaCodeMapStorageStrategy() {}
-
-  /**
-   * Returns whether the underlying implementation of this abstract class is flyweight.
-   * It is expected to be flyweight if it implements the {@code FlyweightMapStorage} class.
-   *
-   * @return  whether the underlying implementation of this abstract class is flyweight
-   */
-  public abstract boolean isFlyweight();
-
-  /**
-   * @return  the number of entries contained in the area code map
-   */
-  public int getNumOfEntries() {
-    return numOfEntries;
-  }
-
-  /**
-   * @return  the set containing the possible lengths of prefixes
-   */
-  public TreeSet<Integer> getPossibleLengths() {
-    return possibleLengths;
-  }
-
   /**
    * Gets the phone number prefix located at the provided {@code index}.
    *
@@ -68,7 +43,8 @@
 
   /**
    * Gets the description corresponding to the phone number prefix located at the provided {@code
-   * index}.
+   * index}. If the description is not available in the current language an empty string is
+   * returned.
    *
    * @param index  the index of the phone number prefix that needs to be returned
    * @return  the description corresponding to the phone number prefix at the provided index
@@ -102,16 +78,30 @@
    */
   public abstract void writeExternal(ObjectOutput objectOutput) throws IOException;
 
+  /**
+   * @return  the number of entries contained in the area code map
+   */
+  public int getNumOfEntries() {
+    return numOfEntries;
+  }
+
+  /**
+   * @return  the set containing the possible lengths of prefixes
+   */
+  public TreeSet<Integer> getPossibleLengths() {
+    return possibleLengths;
+  }
+
   @Override
   public String toString() {
     StringBuilder output = new StringBuilder();
     int numOfEntries = getNumOfEntries();
 
     for (int i = 0; i < numOfEntries; i++) {
-      output.append(getPrefix(i));
-      output.append("|");
-      output.append(getDescription(i));
-      output.append("\n");
+      output.append(getPrefix(i))
+          .append("|")
+          .append(getDescription(i))
+          .append("\n");
     }
     return output.toString();
   }
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/DefaultMapStorage.java b/java/src/com/android/i18n/phonenumbers/geocoding/DefaultMapStorage.java
index 00f40fd..8cae4c7 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/DefaultMapStorage.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/DefaultMapStorage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,11 +36,6 @@
   private String[] descriptions;
 
   @Override
-  public boolean isFlyweight() {
-    return false;
-  }
-
-  @Override
   public int getPrefix(int index) {
     return phoneNumberPrefixes[index];
   }
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorage.java b/java/src/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorage.java
index 453856f..f0b27bb 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorage.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorage.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@
 import java.io.ObjectOutput;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
-import java.util.Comparator;
 import java.util.Map.Entry;
 import java.util.SortedMap;
 import java.util.SortedSet;
@@ -34,10 +33,10 @@
  *
  * @author Philippe Liard
  */
-class FlyweightMapStorage extends AreaCodeMapStorageStrategy {
+final class FlyweightMapStorage extends AreaCodeMapStorageStrategy {
   // Size of short and integer types in bytes.
-  private static final int SHORT_SIZE = Short.SIZE / 8;
-  private static final int INT_SIZE = Integer.SIZE / 8;
+  private static final int SHORT_NUM_BYTES = Short.SIZE / 8;
+  private static final int INT_NUM_BYTES = Integer.SIZE / 8;
 
   // The number of bytes used to store a phone number prefix.
   private int prefixSizeInBytes;
@@ -51,103 +50,142 @@
   // Sorted string array of unique description strings.
   private String[] descriptionPool;
 
-  public FlyweightMapStorage() {}
-
-  @Override
-  public boolean isFlyweight() {
-    return true;
-  }
-
-  /**
-   * Gets the minimum number of bytes that can be used to store the provided {@code value}.
-   */
-  private static int getOptimalNumberOfBytesForValue(int value) {
-    return value <= Short.MAX_VALUE ? SHORT_SIZE : INT_SIZE;
-  }
-
-  /**
-   * Stores the provided {@code value} to the provided byte {@code buffer} at the specified {@code
-   * index} using the provided {@code wordSize} in bytes. Note that only integer and short sizes are
-   * supported.
-   *
-   * @param buffer  the byte buffer to which the value is stored
-   * @param wordSize  the number of bytes used to store the provided value
-   * @param index  the index to which the value is stored
-   * @param value  the value that is stored assuming it does not require more than the specified
-   *    number of bytes.
-   */
-  private static void storeWordInBuffer(ByteBuffer buffer, int wordSize, int index, int value) {
-    index *= wordSize;
-
-    if (wordSize == SHORT_SIZE) {
-      buffer.putShort(index, (short) value);
-    } else {
-      buffer.putInt(index, value);
-    }
-  }
-
-  /**
-   * Reads the {@code value} at the specified {@code index} from the provided byte {@code buffer}.
-   * Note that only integer and short sizes are supported.
-   *
-   * @param buffer  the byte buffer from which the value is read
-   * @param wordSize  the number of bytes used to store the value
-   * @param index  the index where the value is read from
-   *
-   * @return  the value read from the buffer
-   */
-  private static int readWordFromBuffer(ByteBuffer buffer, int wordSize, int index) {
-    index *= wordSize;
-    return wordSize == SHORT_SIZE ? buffer.getShort(index) : buffer.getInt(index);
-  }
-
   @Override
   public int getPrefix(int index) {
     return readWordFromBuffer(phoneNumberPrefixes, prefixSizeInBytes, index);
   }
 
+  /**
+   * This implementation returns the same string (same identity) when called for multiple indexes
+   * corresponding to prefixes that have the same description.
+   */
   @Override
   public String getDescription(int index) {
-    return descriptionPool[readWordFromBuffer(descriptionIndexes, descIndexSizeInBytes, index)];
+    int indexInDescriptionPool =
+        readWordFromBuffer(descriptionIndexes, descIndexSizeInBytes, index);
+    return descriptionPool[indexInDescriptionPool];
   }
 
   @Override
-  public void readFromSortedMap(SortedMap<Integer, String> sortedAreaCodeMap) {
+  public void readFromSortedMap(SortedMap<Integer, String> areaCodeMap) {
     SortedSet<String> descriptionsSet = new TreeSet<String>();
-    numOfEntries = sortedAreaCodeMap.size();
-    prefixSizeInBytes = getOptimalNumberOfBytesForValue(sortedAreaCodeMap.lastKey());
+    numOfEntries = areaCodeMap.size();
+    prefixSizeInBytes = getOptimalNumberOfBytesForValue(areaCodeMap.lastKey());
     phoneNumberPrefixes = ByteBuffer.allocate(numOfEntries * prefixSizeInBytes);
 
     // Fill the phone number prefixes byte buffer, the set of possible lengths of prefixes and the
     // description set.
     int index = 0;
-    for (Entry<Integer, String> entry : sortedAreaCodeMap.entrySet()) {
+    for (Entry<Integer, String> entry : areaCodeMap.entrySet()) {
       int prefix = entry.getKey();
-      storeWordInBuffer(phoneNumberPrefixes, prefixSizeInBytes, index++, prefix);
+      storeWordInBuffer(phoneNumberPrefixes, prefixSizeInBytes, index, prefix);
       possibleLengths.add((int) Math.log10(prefix) + 1);
       descriptionsSet.add(entry.getValue());
+      ++index;
     }
+    createDescriptionPool(descriptionsSet, areaCodeMap);
+  }
 
-    // Create the description pool.
+  /**
+   * Creates the description pool from the provided set of string descriptions and area code map.
+   */
+  private void createDescriptionPool(SortedSet<String> descriptionsSet,
+      SortedMap<Integer, String> areaCodeMap) {
     descIndexSizeInBytes = getOptimalNumberOfBytesForValue(descriptionsSet.size() - 1);
     descriptionIndexes = ByteBuffer.allocate(numOfEntries * descIndexSizeInBytes);
     descriptionPool = new String[descriptionsSet.size()];
     descriptionsSet.toArray(descriptionPool);
 
     // Map the phone number prefixes to the descriptions.
-    index = 0;
+    int index = 0;
     for (int i = 0; i < numOfEntries; i++) {
       int prefix = readWordFromBuffer(phoneNumberPrefixes, prefixSizeInBytes, i);
-      String description = sortedAreaCodeMap.get(prefix);
-      int positionInDescriptionPool =
-          Arrays.binarySearch(descriptionPool, description, new Comparator<String>() {
-            public int compare(String o1, String o2) { return o1.compareTo(o2); }
-          });
-      storeWordInBuffer(descriptionIndexes, descIndexSizeInBytes, index++,
-                        positionInDescriptionPool);
+      String description = areaCodeMap.get(prefix);
+      int positionInDescriptionPool = Arrays.binarySearch(descriptionPool, description);
+      storeWordInBuffer(descriptionIndexes, descIndexSizeInBytes, index, positionInDescriptionPool);
+      ++index;
     }
   }
 
+  @Override
+  public void readExternal(ObjectInput objectInput) throws IOException {
+    // Read binary words sizes.
+    prefixSizeInBytes = objectInput.readInt();
+    descIndexSizeInBytes = objectInput.readInt();
+
+    // Read possible lengths.
+    int sizeOfLengths = objectInput.readInt();
+    possibleLengths.clear();
+    for (int i = 0; i < sizeOfLengths; i++) {
+      possibleLengths.add(objectInput.readInt());
+    }
+
+    // Read description pool size.
+    int descriptionPoolSize = objectInput.readInt();
+    // Read description pool.
+    if (descriptionPool == null || descriptionPool.length < descriptionPoolSize) {
+      descriptionPool = new String[descriptionPoolSize];
+    }
+    for (int i = 0; i < descriptionPoolSize; i++) {
+      String description = objectInput.readUTF();
+      descriptionPool[i] = description;
+    }
+    readEntries(objectInput);
+  }
+
+  /**
+   * Reads the area code entries from the provided input stream and stores them to the internal byte
+   * buffers.
+   */
+  private void readEntries(ObjectInput objectInput) throws IOException {
+    numOfEntries = objectInput.readInt();
+    if (phoneNumberPrefixes == null || phoneNumberPrefixes.capacity() < numOfEntries) {
+      phoneNumberPrefixes = ByteBuffer.allocate(numOfEntries * prefixSizeInBytes);
+    }
+    if (descriptionIndexes == null || descriptionIndexes.capacity() < numOfEntries) {
+      descriptionIndexes = ByteBuffer.allocate(numOfEntries * descIndexSizeInBytes);
+    }
+    for (int i = 0; i < numOfEntries; i++) {
+      readExternalWord(objectInput, prefixSizeInBytes, phoneNumberPrefixes, i);
+      readExternalWord(objectInput, descIndexSizeInBytes, descriptionIndexes, i);
+    }
+  }
+
+  @Override
+  public void writeExternal(ObjectOutput objectOutput) throws IOException {
+    // Write binary words sizes.
+    objectOutput.writeInt(prefixSizeInBytes);
+    objectOutput.writeInt(descIndexSizeInBytes);
+
+    // Write possible lengths.
+    int sizeOfLengths = possibleLengths.size();
+    objectOutput.writeInt(sizeOfLengths);
+    for (Integer length : possibleLengths) {
+      objectOutput.writeInt(length);
+    }
+
+    // Write description pool size.
+    objectOutput.writeInt(descriptionPool.length);
+    // Write description pool.
+    for (String description : descriptionPool) {
+      objectOutput.writeUTF(description);
+    }
+
+    // Write entries.
+    objectOutput.writeInt(numOfEntries);
+    for (int i = 0; i < numOfEntries; i++) {
+      writeExternalWord(objectOutput, prefixSizeInBytes, phoneNumberPrefixes, i);
+      writeExternalWord(objectOutput, descIndexSizeInBytes, descriptionIndexes, i);
+    }
+  }
+
+  /**
+   * Gets the minimum number of bytes that can be used to store the provided {@code value}.
+   */
+  private static int getOptimalNumberOfBytesForValue(int value) {
+    return value <= Short.MAX_VALUE ? SHORT_NUM_BYTES : INT_NUM_BYTES;
+  }
+
   /**
    * Stores a value which is read from the provided {@code objectInput} to the provided byte {@code
    * buffer} at the specified {@code index}.
@@ -159,47 +197,12 @@
    * @throws IOException  if an error occurred reading from the object input stream
    */
   private static void readExternalWord(ObjectInput objectInput, int wordSize,
-                                       ByteBuffer outputBuffer, int index) throws IOException {
-    index *= wordSize;
-    if (wordSize == SHORT_SIZE) {
-      outputBuffer.putShort(index, objectInput.readShort());
+      ByteBuffer outputBuffer, int index) throws IOException {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      outputBuffer.putShort(wordIndex, objectInput.readShort());
     } else {
-      outputBuffer.putInt(index, objectInput.readInt());
-    }
-  }
-
-  @Override
-  public void readExternal(ObjectInput objectInput) throws IOException {
-    // Read binary words sizes.
-    prefixSizeInBytes = objectInput.readInt();
-    descIndexSizeInBytes = objectInput.readInt();
-    // Read possible lengths.
-    int sizeOfLengths = objectInput.readInt();
-    possibleLengths.clear();
-    for (int i = 0; i < sizeOfLengths; i++) {
-      possibleLengths.add(objectInput.readInt());
-    }
-    // Read description pool size.
-    int descriptionPoolSize = objectInput.readInt();
-    // Read description pool.
-    if (descriptionPool == null || descriptionPool.length < descriptionPoolSize) {
-      descriptionPool = new String[descriptionPoolSize];
-    }
-    for (int i = 0; i < descriptionPoolSize; i++) {
-      String description = objectInput.readUTF();
-      descriptionPool[i] = description;
-    }
-    // Read entries.
-    numOfEntries = objectInput.readInt();
-    if (phoneNumberPrefixes == null || phoneNumberPrefixes.capacity() < numOfEntries) {
-        phoneNumberPrefixes = ByteBuffer.allocate(numOfEntries * prefixSizeInBytes);
-    }
-    if (descriptionIndexes == null || descriptionIndexes.capacity() < numOfEntries) {
-      descriptionIndexes = ByteBuffer.allocate(numOfEntries * descIndexSizeInBytes);
-    }
-    for (int i = 0; i < numOfEntries; i++) {
-      readExternalWord(objectInput, prefixSizeInBytes, phoneNumberPrefixes, i);
-      readExternalWord(objectInput, descIndexSizeInBytes, descriptionIndexes, i);
+      outputBuffer.putInt(wordIndex, objectInput.readInt());
     }
   }
 
@@ -214,37 +217,47 @@
    * @throws IOException if an error occurred writing to the provided object output stream
    */
   private static void writeExternalWord(ObjectOutput objectOutput, int wordSize,
-                                        ByteBuffer inputBuffer, int index) throws IOException {
-    index *= wordSize;
-    if (wordSize == SHORT_SIZE) {
-      objectOutput.writeShort(inputBuffer.getShort(index));
+      ByteBuffer inputBuffer, int index) throws IOException {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      objectOutput.writeShort(inputBuffer.getShort(wordIndex));
     } else {
-      objectOutput.writeInt(inputBuffer.getInt(index));
+      objectOutput.writeInt(inputBuffer.getInt(wordIndex));
     }
   }
 
-  @Override
-  public void writeExternal(ObjectOutput objectOutput) throws IOException {
-    // Write binary words sizes.
-    objectOutput.writeInt(prefixSizeInBytes);
-    objectOutput.writeInt(descIndexSizeInBytes);
-    // Write possible lengths.
-    int sizeOfLengths = possibleLengths.size();
-    objectOutput.writeInt(sizeOfLengths);
-    for (Integer length : possibleLengths) {
-      objectOutput.writeInt(length);
-    }
-    // Write description pool size.
-    objectOutput.writeInt(descriptionPool.length);
-    // Write description pool.
-    for (String description : descriptionPool) {
-      objectOutput.writeUTF(description);
-    }
-    // Write entries.
-    objectOutput.writeInt(numOfEntries);
-    for (int i = 0; i < numOfEntries; i++) {
-      writeExternalWord(objectOutput, prefixSizeInBytes, phoneNumberPrefixes, i);
-      writeExternalWord(objectOutput, descIndexSizeInBytes, descriptionIndexes, i);
+  /**
+   * Reads the {@code value} at the specified {@code index} from the provided byte {@code buffer}.
+   * Note that only integer and short sizes are supported.
+   *
+   * @param buffer  the byte buffer from which the value is read
+   * @param wordSize  the number of bytes used to store the value
+   * @param index  the index where the value is read from
+   *
+   * @return  the value read from the buffer
+   */
+  private static int readWordFromBuffer(ByteBuffer buffer, int wordSize, int index) {
+    int wordIndex = index * wordSize;
+    return wordSize == SHORT_NUM_BYTES ? buffer.getShort(wordIndex) : buffer.getInt(wordIndex);
+  }
+
+  /**
+   * Stores the provided {@code value} to the provided byte {@code buffer} at the specified {@code
+   * index} using the provided {@code wordSize} in bytes. Note that only integer and short sizes are
+   * supported.
+   *
+   * @param buffer  the byte buffer to which the value is stored
+   * @param wordSize  the number of bytes used to store the provided value
+   * @param index  the index to which the value is stored
+   * @param value  the value that is stored assuming it does not require more than the specified
+   *    number of bytes.
+   */
+  private static void storeWordInBuffer(ByteBuffer buffer, int wordSize, int index, int value) {
+    int wordIndex = index * wordSize;
+    if (wordSize == SHORT_NUM_BYTES) {
+      buffer.putShort(wordIndex, (short) value);
+    } else {
+      buffer.putInt(wordIndex, value);
     }
   }
 }
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/MappingFileProvider.java b/java/src/com/android/i18n/phonenumbers/geocoding/MappingFileProvider.java
index 2c294c4..481655a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/MappingFileProvider.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/MappingFileProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java b/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
index a577e10..1845f28 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -71,8 +71,8 @@
   }
 
   private AreaCodeMap getPhonePrefixDescriptions(
-      int countryCallingCode, String language, String script, String region) {
-    String fileName = mappingFileProvider.getFileName(countryCallingCode, language, script, region);
+      int prefixMapKey, String language, String script, String region) {
+    String fileName = mappingFileProvider.getFileName(prefixMapKey, language, script, region);
     if (fileName.length() == 0) {
       return null;
     }
@@ -98,7 +98,7 @@
     }
   }
 
-  private void close(InputStream in) {
+  private static void close(InputStream in) {
     if (in != null) {
       try {
         in.close();
@@ -193,6 +193,25 @@
         countryCallingCode : (1000 + (int) (number.getNationalNumber() / 10000000));
     AreaCodeMap phonePrefixDescriptions =
         getPhonePrefixDescriptions(phonePrefix, lang, script, region);
-    return (phonePrefixDescriptions != null) ? phonePrefixDescriptions.lookup(number) : "";
+    String description = (phonePrefixDescriptions != null)
+        ? phonePrefixDescriptions.lookup(number)
+        : null;
+    // When a location is not available in the requested language, fall back to English.
+    if ((description == null || description.length() == 0) && mayFallBackToEnglish(lang)) {
+      AreaCodeMap defaultMap = getPhonePrefixDescriptions(phonePrefix, "en", "", "");
+      if (defaultMap == null) {
+        return "";
+      }
+      description = defaultMap.lookup(number);
+    }
+    return description != null ? description : "";
+  }
+
+  private boolean mayFallBackToEnglish(String lang) {
+    // Don't fall back to English if the requested language is among the following:
+    // - Chinese
+    // - Japanese
+    // - Korean
+    return !lang.equals("zh") && !lang.equals("ja") && !lang.equals("ko");
   }
 }
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/20_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/20_en
new file mode 100644
index 0000000..76b227e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/20_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/212_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/212_en
new file mode 100644
index 0000000..ad7f944
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/212_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/212_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/212_fr
new file mode 100644
index 0000000..9016b0d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/212_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/213_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/213_en
new file mode 100644
index 0000000..7a1379c
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/213_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/216_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/216_en
new file mode 100644
index 0000000..9af2d13
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/216_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/220_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/220_en
new file mode 100644
index 0000000..29941e6
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/220_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en
new file mode 100644
index 0000000..b876d30
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/221_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/222_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/222_en
new file mode 100644
index 0000000..7b4ec36
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/222_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/222_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/222_fr
new file mode 100644
index 0000000..ceb0870
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/222_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en
new file mode 100644
index 0000000..e63507d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/224_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/225_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/225_en
new file mode 100644
index 0000000..e290e50
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/225_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/225_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/225_fr
new file mode 100644
index 0000000..e290e50
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/225_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en
new file mode 100644
index 0000000..ed31886
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/226_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/228_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_en
new file mode 100644
index 0000000..192a5d7
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/228_es b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_es
new file mode 100644
index 0000000..7c124ef
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_es
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/228_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_fr
new file mode 100644
index 0000000..884ca42
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/228_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/229_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/229_en
new file mode 100644
index 0000000..21b5b82
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/229_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/229_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/229_fr
new file mode 100644
index 0000000..6002a86
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/229_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/230_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_en
new file mode 100644
index 0000000..3cf3259
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/230_es b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_es
new file mode 100644
index 0000000..49f2050
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_es
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/230_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_fr
new file mode 100644
index 0000000..bf51072
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/230_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/232_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/232_en
new file mode 100644
index 0000000..9cb3996
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/232_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/233_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/233_en
new file mode 100644
index 0000000..aca1927
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/233_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/238_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/238_en
new file mode 100644
index 0000000..092d85a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/238_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/238_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/238_pt
new file mode 100644
index 0000000..092d85a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/238_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/239_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/239_en
new file mode 100644
index 0000000..37a5e89
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/239_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/239_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/239_pt
new file mode 100644
index 0000000..8610e0a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/239_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en
new file mode 100644
index 0000000..86c316f
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/242_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_fr
new file mode 100644
index 0000000..2ad2a1a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/242_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/243_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/243_en
new file mode 100644
index 0000000..14b51a0
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/243_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/243_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/243_fr
new file mode 100644
index 0000000..ac48d42
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/243_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en
new file mode 100644
index 0000000..59c00b9
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
new file mode 100644
index 0000000..34cf12b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/244_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en
new file mode 100644
index 0000000..2738fe8
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
new file mode 100644
index 0000000..2738fe8
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/245_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/247_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/247_en
new file mode 100644
index 0000000..259944a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/247_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/249_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/249_en
new file mode 100644
index 0000000..d605df8
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/249_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/251_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/251_en
new file mode 100644
index 0000000..e389d1c
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/251_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/252_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/252_en
new file mode 100644
index 0000000..241ed68
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/252_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/254_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/254_en
new file mode 100644
index 0000000..b21858b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/254_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/256_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/256_en
new file mode 100644
index 0000000..6043317
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/256_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/258_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/258_en
new file mode 100644
index 0000000..6f11df7
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/258_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/258_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/258_pt
new file mode 100644
index 0000000..18ddf2e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/258_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/260_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/260_en
new file mode 100644
index 0000000..b469b16
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/260_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/261_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/261_en
new file mode 100644
index 0000000..af8affb
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/261_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/263_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/263_en
new file mode 100644
index 0000000..7ec8339
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/263_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/264_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/264_en
new file mode 100644
index 0000000..ef92fe5
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/264_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/266_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/266_en
new file mode 100644
index 0000000..3fc9c6f
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/266_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/267_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/267_en
new file mode 100644
index 0000000..4c52bd2
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/267_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/268_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/268_en
new file mode 100644
index 0000000..16067ff
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/268_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/269_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/269_en
new file mode 100644
index 0000000..bbc053b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/269_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/269_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/269_fr
new file mode 100644
index 0000000..bbc053b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/269_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/27_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/27_en
new file mode 100644
index 0000000..c86a27c
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/27_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/290_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/290_en
new file mode 100644
index 0000000..b65865d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/290_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/290_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/290_fr
new file mode 100644
index 0000000..a9df787
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/290_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/299_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/299_en
new file mode 100644
index 0000000..2e0fee5
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/299_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el
new file mode 100644
index 0000000..3ae0b10
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_el
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en
new file mode 100644
index 0000000..8211506
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/30_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/31_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/31_en
new file mode 100644
index 0000000..7565cac
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/31_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/31_nl b/java/src/com/android/i18n/phonenumbers/geocoding/data/31_nl
index c1807c8..78768ba 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/31_nl
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/31_nl
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/33_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/33_en
new file mode 100644
index 0000000..7e9655f
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/33_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/33_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/33_fr
index c18f305..85f2c6b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/33_fr
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/33_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/34_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/34_en
new file mode 100644
index 0000000..3ec6b10
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/34_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/34_es b/java/src/com/android/i18n/phonenumbers/geocoding/data/34_es
index e4719ca..749b162 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/34_es
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/34_es
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/351_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/351_en
new file mode 100644
index 0000000..61f0da1
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/351_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/351_pt b/java/src/com/android/i18n/phonenumbers/geocoding/data/351_pt
index 04dc74e..eb08045 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/351_pt
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/351_pt
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/352_de b/java/src/com/android/i18n/phonenumbers/geocoding/data/352_de
new file mode 100644
index 0000000..d20ebca
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/352_de
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/352_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/352_en
new file mode 100644
index 0000000..e510e7b
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/352_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/354_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/354_en
new file mode 100644
index 0000000..2e85aa2
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/354_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/355_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/355_en
new file mode 100644
index 0000000..b903bcd
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/355_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/358_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_en
new file mode 100644
index 0000000..3e9c6c3
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/358_fi b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_fi
new file mode 100644
index 0000000..3824cfb
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_fi
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/358_se b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_se
new file mode 100644
index 0000000..3c49760
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/358_se
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/36_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/36_en
new file mode 100644
index 0000000..d9f2a71
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/36_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/36_hu b/java/src/com/android/i18n/phonenumbers/geocoding/data/36_hu
new file mode 100644
index 0000000..6eaf151
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/36_hu
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/370_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/370_en
new file mode 100644
index 0000000..52b47bd
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/370_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/371_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/371_en
new file mode 100644
index 0000000..5273f0e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/371_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/372_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/372_en
new file mode 100644
index 0000000..aaaa338
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/372_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/373_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_en
new file mode 100644
index 0000000..9ef1b6e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ro b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ro
new file mode 100644
index 0000000..3ef4931
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ro
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ru b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ru
new file mode 100644
index 0000000..b643821
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/373_ru
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/374_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/374_en
new file mode 100644
index 0000000..8bdf764
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/374_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/381_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/381_en
new file mode 100644
index 0000000..8cde57a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/381_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/381_sr b/java/src/com/android/i18n/phonenumbers/geocoding/data/381_sr
new file mode 100644
index 0000000..2a5deaa
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/381_sr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/39_it b/java/src/com/android/i18n/phonenumbers/geocoding/data/39_it
index 2bd7c5c..db32682 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/39_it
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/39_it
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_de b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_de
index 86723f3..e62c797 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_de
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_de
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_fr b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_fr
index b62ae33..6fb2df8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_fr
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_fr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_it b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_it
index 847fc3f..9cc1e5b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/41_it
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/41_it
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/420_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/420_en
new file mode 100644
index 0000000..6e39c43
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/420_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/421_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/421_en
new file mode 100644
index 0000000..5a5dc09
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/421_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/43_de b/java/src/com/android/i18n/phonenumbers/geocoding/data/43_de
index 3143ede..5687e97 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/43_de
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/43_de
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/43_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/43_en
new file mode 100644
index 0000000..050418d
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/43_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/46_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/46_en
new file mode 100644
index 0000000..934bb3e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/46_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/46_sv b/java/src/com/android/i18n/phonenumbers/geocoding/data/46_sv
index 016fd62..31a27a8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/46_sv
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/46_sv
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/48_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/48_en
new file mode 100644
index 0000000..969da0c
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/48_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/48_pl b/java/src/com/android/i18n/phonenumbers/geocoding/data/48_pl
new file mode 100644
index 0000000..cd5eb5a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/48_pl
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/49_de b/java/src/com/android/i18n/phonenumbers/geocoding/data/49_de
index 2da69ea..428b8bf 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/49_de
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/49_de
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/49_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/49_en
new file mode 100644
index 0000000..40b3748
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/49_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/51_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/51_en
new file mode 100644
index 0000000..7f84d3e
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/51_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/53_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/53_en
new file mode 100644
index 0000000..5d15867
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/53_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/54_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/54_en
new file mode 100644
index 0000000..ae2fbdd
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/54_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/54_es b/java/src/com/android/i18n/phonenumbers/geocoding/data/54_es
index 7d89c05..afd958b 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/54_es
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/54_es
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/55_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/55_en
new file mode 100644
index 0000000..753576a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/55_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/56_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/56_en
new file mode 100644
index 0000000..9126f78
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/56_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/58_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/58_en
new file mode 100644
index 0000000..9c7a787
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/58_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/58_es b/java/src/com/android/i18n/phonenumbers/geocoding/data/58_es
new file mode 100644
index 0000000..8407816
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/58_es
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/81_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/81_en
new file mode 100644
index 0000000..f9d096f
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/81_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/84_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/84_en
new file mode 100644
index 0000000..5221729
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/84_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/84_vi b/java/src/com/android/i18n/phonenumbers/geocoding/data/84_vi
new file mode 100644
index 0000000..1b0e2d7
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/84_vi
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/86_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/86_en
new file mode 100644
index 0000000..b5b21b7
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/86_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/86_zh b/java/src/com/android/i18n/phonenumbers/geocoding/data/86_zh
index afa8d67..bbd7660 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/86_zh
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/86_zh
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/90_tr b/java/src/com/android/i18n/phonenumbers/geocoding/data/90_tr
index 7ba238e..cfcf99a 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/90_tr
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/90_tr
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/94_en b/java/src/com/android/i18n/phonenumbers/geocoding/data/94_en
new file mode 100644
index 0000000..0794d2a
--- /dev/null
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/94_en
Binary files differ
diff --git a/java/src/com/android/i18n/phonenumbers/geocoding/data/config b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
index b40fe26..c7db9c8 100644
--- a/java/src/com/android/i18n/phonenumbers/geocoding/data/config
+++ b/java/src/com/android/i18n/phonenumbers/geocoding/data/config
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java b/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
index 93a58f2..857561b 100644
--- a/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
+++ b/java/test/com/android/i18n/phonenumbers/AsYouTypeFormatterTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -35,7 +35,7 @@
   }
 
   public void testInvalidRegion() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+4", formatter.inputDigit('4'));
     assertEquals("+48 ", formatter.inputDigit('8'));
@@ -57,7 +57,7 @@
   }
 
   public void testInvalidPlusSign() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+4", formatter.inputDigit('4'));
     assertEquals("+48 ", formatter.inputDigit('8'));
@@ -77,7 +77,7 @@
     // See http://code.google.com/p/libphonenumber/issues/detail?id=36
     // The bug occurred last time for countries which have two formatting rules with exactly the
     // same leading digits pattern but differ in length.
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("ZZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.ZZ);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+81 ", formatter.inputDigit('1'));
@@ -96,7 +96,7 @@
   }
 
   public void testAYTFUS() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("6", formatter.inputDigit('6'));
     assertEquals("65", formatter.inputDigit('5'));
     assertEquals("650", formatter.inputDigit('0'));
@@ -190,7 +190,7 @@
   }
 
   public void testAYTFUSFullWidthCharacters() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("\uFF16", formatter.inputDigit('\uFF16'));
     assertEquals("\uFF16\uFF15", formatter.inputDigit('\uFF15'));
     assertEquals("650", formatter.inputDigit('\uFF10'));
@@ -204,7 +204,7 @@
   }
 
   public void testAYTFUSMobileShortCode() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("*", formatter.inputDigit('*'));
     assertEquals("*1", formatter.inputDigit('1'));
     assertEquals("*12", formatter.inputDigit('2'));
@@ -213,7 +213,7 @@
   }
 
   public void testAYTFUSVanityNumber() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("8", formatter.inputDigit('8'));
     assertEquals("80", formatter.inputDigit('0'));
     assertEquals("800", formatter.inputDigit('0'));
@@ -229,7 +229,7 @@
   }
 
   public void testAYTFAndRememberPositionUS() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("US");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.US);
     assertEquals("1", formatter.inputDigitAndRememberPosition('1'));
     assertEquals(1, formatter.getRememberedPosition());
     assertEquals("16", formatter.inputDigit('6'));
@@ -365,7 +365,7 @@
   }
 
   public void testAYTFGBFixedLine() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("02", formatter.inputDigit('2'));
     assertEquals("020", formatter.inputDigit('0'));
@@ -382,7 +382,7 @@
   }
 
   public void testAYTFGBTollFree() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("08", formatter.inputDigit('8'));
     assertEquals("080", formatter.inputDigit('0'));
@@ -397,7 +397,7 @@
   }
 
   public void testAYTFGBPremiumRate() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("GB");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.GB);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("09", formatter.inputDigit('9'));
     assertEquals("090", formatter.inputDigit('0'));
@@ -412,7 +412,7 @@
   }
 
   public void testAYTFNZMobile() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("NZ");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.NZ);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("02", formatter.inputDigit('2'));
     assertEquals("021", formatter.inputDigit('1'));
@@ -426,7 +426,7 @@
   }
 
   public void testAYTFDE() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("DE");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.DE);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("03", formatter.inputDigit('3'));
     assertEquals("030", formatter.inputDigit('0'));
@@ -477,7 +477,7 @@
   }
 
   public void testAYTFAR() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR);
     assertEquals("0", formatter.inputDigit('0'));
     assertEquals("01", formatter.inputDigit('1'));
     assertEquals("011", formatter.inputDigit('1'));
@@ -492,7 +492,7 @@
   }
 
   public void testAYTFARMobile() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.AR);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+5", formatter.inputDigit('5'));
     assertEquals("+54 ", formatter.inputDigit('4'));
@@ -511,7 +511,7 @@
 
   public void testAYTFKR() {
     // +82 51 234 5678
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.KR);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+82 ", formatter.inputDigit('2'));
@@ -600,7 +600,7 @@
   }
 
   public void testAYTF_MX() {
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("MX");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.MX);
 
     // +52 800 123 4567
     assertEquals("+", formatter.inputDigit('+'));
@@ -686,7 +686,7 @@
 
   public void testAYTFMultipleLeadingDigitPatterns() {
     // +81 50 2345 6789
-    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("JP");
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter(RegionCode.JP);
     assertEquals("+", formatter.inputDigit('+'));
     assertEquals("+8", formatter.inputDigit('8'));
     assertEquals("+81 ", formatter.inputDigit('1'));
@@ -731,4 +731,137 @@
     assertEquals("+81 3332 2 567", formatter.inputDigit('7'));
     assertEquals("+81 3332 2 5678", formatter.inputDigit('8'));
   }
+
+  public void testAYTFLongIDD_AU() {
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("AU");
+    // 0011 1 650 253 2250
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("00", formatter.inputDigit('0'));
+    assertEquals("001", formatter.inputDigit('1'));
+    assertEquals("0011", formatter.inputDigit('1'));
+    assertEquals("0011 1 ", formatter.inputDigit('1'));
+    assertEquals("0011 1 6", formatter.inputDigit('6'));
+    assertEquals("0011 1 65", formatter.inputDigit('5'));
+    assertEquals("0011 1 650", formatter.inputDigit('0'));
+    assertEquals("0011 1 650 2", formatter.inputDigit('2'));
+    assertEquals("0011 1 650 25", formatter.inputDigit('5'));
+    assertEquals("0011 1 650 253", formatter.inputDigit('3'));
+    assertEquals("0011 1 650 253 2", formatter.inputDigit('2'));
+    assertEquals("0011 1 650 253 22", formatter.inputDigit('2'));
+    assertEquals("0011 1 650 253 222", formatter.inputDigit('2'));
+    assertEquals("0011 1 650 253 2222", formatter.inputDigit('2'));
+
+    // 0011 81 3332 2 5678
+    formatter.clear();
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("00", formatter.inputDigit('0'));
+    assertEquals("001", formatter.inputDigit('1'));
+    assertEquals("0011", formatter.inputDigit('1'));
+    assertEquals("00118", formatter.inputDigit('8'));
+    assertEquals("0011 81 ", formatter.inputDigit('1'));
+    assertEquals("0011 81 3", formatter.inputDigit('3'));
+    assertEquals("0011 81 33", formatter.inputDigit('3'));
+    assertEquals("0011 81 33 3", formatter.inputDigit('3'));
+    assertEquals("0011 81 3332", formatter.inputDigit('2'));
+    assertEquals("0011 81 3332 2", formatter.inputDigit('2'));
+    assertEquals("0011 81 3332 2 5", formatter.inputDigit('5'));
+    assertEquals("0011 81 3332 2 56", formatter.inputDigit('6'));
+    assertEquals("0011 81 3332 2 567", formatter.inputDigit('7'));
+    assertEquals("0011 81 3332 2 5678", formatter.inputDigit('8'));
+
+    // 0011 244 250 253 222
+    formatter.clear();
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("00", formatter.inputDigit('0'));
+    assertEquals("001", formatter.inputDigit('1'));
+    assertEquals("0011", formatter.inputDigit('1'));
+    assertEquals("00112", formatter.inputDigit('2'));
+    assertEquals("001124", formatter.inputDigit('4'));
+    assertEquals("0011 244 ", formatter.inputDigit('4'));
+    assertEquals("0011 244 2", formatter.inputDigit('2'));
+    assertEquals("0011 244 25", formatter.inputDigit('5'));
+    assertEquals("0011 244 250", formatter.inputDigit('0'));
+    assertEquals("0011 244 250 2", formatter.inputDigit('2'));
+    assertEquals("0011 244 250 25", formatter.inputDigit('5'));
+    assertEquals("0011 244 250 253", formatter.inputDigit('3'));
+    assertEquals("0011 244 250 253 2", formatter.inputDigit('2'));
+    assertEquals("0011 244 250 253 22", formatter.inputDigit('2'));
+    assertEquals("0011 244 250 253 222", formatter.inputDigit('2'));
+  }
+
+  public void testAYTFLongIDD_KR() {
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+    // 00300 1 650 253 2222
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("00", formatter.inputDigit('0'));
+    assertEquals("003", formatter.inputDigit('3'));
+    assertEquals("0030", formatter.inputDigit('0'));
+    assertEquals("00300", formatter.inputDigit('0'));
+    assertEquals("00300 1 ", formatter.inputDigit('1'));
+    assertEquals("00300 1 6", formatter.inputDigit('6'));
+    assertEquals("00300 1 65", formatter.inputDigit('5'));
+    assertEquals("00300 1 650", formatter.inputDigit('0'));
+    assertEquals("00300 1 650 2", formatter.inputDigit('2'));
+    assertEquals("00300 1 650 25", formatter.inputDigit('5'));
+    assertEquals("00300 1 650 253", formatter.inputDigit('3'));
+    assertEquals("00300 1 650 253 2", formatter.inputDigit('2'));
+    assertEquals("00300 1 650 253 22", formatter.inputDigit('2'));
+    assertEquals("00300 1 650 253 222", formatter.inputDigit('2'));
+    assertEquals("00300 1 650 253 2222", formatter.inputDigit('2'));
+  }
+
+  public void testAYTFLongNDD_KR() {
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("KR");
+    // 08811-9876-7890
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("08", formatter.inputDigit('8'));
+    assertEquals("088", formatter.inputDigit('8'));
+    assertEquals("0881", formatter.inputDigit('1'));
+    assertEquals("08811", formatter.inputDigit('1'));
+    assertEquals("08811-9", formatter.inputDigit('9'));
+    assertEquals("08811-98", formatter.inputDigit('8'));
+    assertEquals("08811-987", formatter.inputDigit('7'));
+    assertEquals("08811-9876", formatter.inputDigit('6'));
+    assertEquals("08811-9876-7", formatter.inputDigit('7'));
+    assertEquals("08811-9876-78", formatter.inputDigit('8'));
+    assertEquals("08811-9876-789", formatter.inputDigit('9'));
+    assertEquals("08811-9876-7890", formatter.inputDigit('0'));
+
+    // 08500 11-9876-7890
+    formatter.clear();
+    assertEquals("0", formatter.inputDigit('0'));
+    assertEquals("08", formatter.inputDigit('8'));
+    assertEquals("085", formatter.inputDigit('5'));
+    assertEquals("0850", formatter.inputDigit('0'));
+    assertEquals("08500 ", formatter.inputDigit('0'));
+    assertEquals("08500 1", formatter.inputDigit('1'));
+    assertEquals("08500 11", formatter.inputDigit('1'));
+    assertEquals("08500 11-9", formatter.inputDigit('9'));
+    assertEquals("08500 11-98", formatter.inputDigit('8'));
+    assertEquals("08500 11-987", formatter.inputDigit('7'));
+    assertEquals("08500 11-9876", formatter.inputDigit('6'));
+    assertEquals("08500 11-9876-7", formatter.inputDigit('7'));
+    assertEquals("08500 11-9876-78", formatter.inputDigit('8'));
+    assertEquals("08500 11-9876-789", formatter.inputDigit('9'));
+    assertEquals("08500 11-9876-7890", formatter.inputDigit('0'));
+  }
+
+  public void testAYTFLongNDD_SG() {
+    AsYouTypeFormatter formatter = phoneUtil.getAsYouTypeFormatter("SG");
+    // 777777 9876 7890
+    assertEquals("7", formatter.inputDigit('7'));
+    assertEquals("77", formatter.inputDigit('7'));
+    assertEquals("777", formatter.inputDigit('7'));
+    assertEquals("7777", formatter.inputDigit('7'));
+    assertEquals("77777", formatter.inputDigit('7'));
+    assertEquals("777777 ", formatter.inputDigit('7'));
+    assertEquals("777777 9", formatter.inputDigit('9'));
+    assertEquals("777777 98", formatter.inputDigit('8'));
+    assertEquals("777777 987", formatter.inputDigit('7'));
+    assertEquals("777777 9876", formatter.inputDigit('6'));
+    assertEquals("777777 9876 7", formatter.inputDigit('7'));
+    assertEquals("777777 9876 78", formatter.inputDigit('8'));
+    assertEquals("777777 9876 789", formatter.inputDigit('9'));
+    assertEquals("777777 9876 7890", formatter.inputDigit('0'));
+  }
 }
diff --git a/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java b/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
index 6201f14..075f8eb 100644
--- a/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
+++ b/java/test/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -31,10 +31,10 @@
   // countries sharing a calling code, such as the NANPA countries, the one
   // indicated with "isMainCountryForCode" in the metadata should be first.
   static Map<Integer, List<String>> getCountryCodeToRegionCodeMap() {
-    // The capacity is set to 20 as there are 15 different country codes,
+    // The capacity is set to 21 as there are 16 different country codes,
     // and this offers a load factor of roughly 0.75.
     Map<Integer, List<String>> countryCodeToRegionCodeMap =
-        new HashMap<Integer, List<String>>(20);
+        new HashMap<Integer, List<String>>(21);
 
     ArrayList<String> listWithRegionCode;
 
@@ -68,6 +68,10 @@
     countryCodeToRegionCodeMap.put(54, listWithRegionCode);
 
     listWithRegionCode = new ArrayList<String>(1);
+    listWithRegionCode.add("BR");
+    countryCodeToRegionCodeMap.put(55, listWithRegionCode);
+
+    listWithRegionCode = new ArrayList<String>(1);
     listWithRegionCode.add("AU");
     countryCodeToRegionCodeMap.put(61, listWithRegionCode);
 
diff --git a/java/test/com/android/i18n/phonenumbers/ExampleNumbersTest.java b/java/test/com/android/i18n/phonenumbers/ExampleNumbersTest.java
index 5800049..9f19826 100644
--- a/java/test/com/android/i18n/phonenumbers/ExampleNumbersTest.java
+++ b/java/test/com/android/i18n/phonenumbers/ExampleNumbersTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -166,4 +166,11 @@
     }
     assertEquals(0, wrongTypeCases.size());
   }
+
+  public void testEveryRegionHasAnExampleNumber() throws Exception {
+    for (String regionCode : phoneNumberUtil.getSupportedRegions()) {
+      PhoneNumber exampleNumber = phoneNumberUtil.getExampleNumber(regionCode);
+      assertNotNull("None found for region " + regionCode, exampleNumber);
+    }
+  }
 }
diff --git a/java/test/com/android/i18n/phonenumbers/PhoneNumberMatchTest.java b/java/test/com/android/i18n/phonenumbers/PhoneNumberMatchTest.java
index b54ff57..7f14ba1 100644
--- a/java/test/com/android/i18n/phonenumbers/PhoneNumberMatchTest.java
+++ b/java/test/com/android/i18n/phonenumbers/PhoneNumberMatchTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/test/com/android/i18n/phonenumbers/PhoneNumberMatcherTest.java b/java/test/com/android/i18n/phonenumbers/PhoneNumberMatcherTest.java
index a37b122..7bbbf2c 100644
--- a/java/test/com/android/i18n/phonenumbers/PhoneNumberMatcherTest.java
+++ b/java/test/com/android/i18n/phonenumbers/PhoneNumberMatcherTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -44,141 +44,142 @@
   /** See {@link PhoneNumberUtilTest#testParseNationalNumber()}. */
   public void testFindNationalNumber() throws Exception {
     // same cases as in testParseNationalNumber
-    doTestFindInContext("033316005", "NZ");
-    doTestFindInContext("33316005", "NZ");
+    doTestFindInContext("033316005", RegionCode.NZ);
+    // ("33316005", RegionCode.NZ) is omitted since the national prefix is obligatory for these
+    // types of numbers in New Zealand.
     // National prefix attached and some formatting present.
-    doTestFindInContext("03-331 6005", "NZ");
-    doTestFindInContext("03 331 6005", "NZ");
+    doTestFindInContext("03-331 6005", RegionCode.NZ);
+    doTestFindInContext("03 331 6005", RegionCode.NZ);
     // Testing international prefixes.
     // Should strip country code.
-    doTestFindInContext("0064 3 331 6005", "NZ");
+    doTestFindInContext("0064 3 331 6005", RegionCode.NZ);
     // Try again, but this time we have an international number with Region Code US. It should
     // recognize the country code and parse accordingly.
-    doTestFindInContext("01164 3 331 6005", "US");
-    doTestFindInContext("+64 3 331 6005", "US");
+    doTestFindInContext("01164 3 331 6005", RegionCode.US);
+    doTestFindInContext("+64 3 331 6005", RegionCode.US);
 
-    doTestFindInContext("64(0)64123456", "NZ");
+    doTestFindInContext("64(0)64123456", RegionCode.NZ);
     // Check that using a "/" is fine in a phone number.
-    doTestFindInContext("123/45678", "DE");
-    doTestFindInContext("123-456-7890", "US");
+    doTestFindInContext("123/45678", RegionCode.DE);
+    doTestFindInContext("123-456-7890", RegionCode.US);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithInternationalPrefixes()}. */
   public void testFindWithInternationalPrefixes() throws Exception {
-    doTestFindInContext("+1 (650) 333-6000", "NZ");
-    doTestFindInContext("1-650-333-6000", "US");
+    doTestFindInContext("+1 (650) 333-6000", RegionCode.NZ);
+    doTestFindInContext("1-650-333-6000", RegionCode.US);
     // Calling the US number from Singapore by using different service providers
     // 1st test: calling using SingTel IDD service (IDD is 001)
-    doTestFindInContext("0011-650-333-6000", "SG");
+    doTestFindInContext("0011-650-333-6000", RegionCode.SG);
     // 2nd test: calling using StarHub IDD service (IDD is 008)
-    doTestFindInContext("0081-650-333-6000", "SG");
+    doTestFindInContext("0081-650-333-6000", RegionCode.SG);
     // 3rd test: calling using SingTel V019 service (IDD is 019)
-    doTestFindInContext("0191-650-333-6000", "SG");
+    doTestFindInContext("0191-650-333-6000", RegionCode.SG);
     // Calling the US number from Poland
-    doTestFindInContext("0~01-650-333-6000", "PL");
+    doTestFindInContext("0~01-650-333-6000", RegionCode.PL);
     // Using "++" at the start.
-    doTestFindInContext("++1 (650) 333-6000", "PL");
+    doTestFindInContext("++1 (650) 333-6000", RegionCode.PL);
     // Using a full-width plus sign.
-    doTestFindInContext("\uFF0B1 (650) 333-6000", "SG");
+    doTestFindInContext("\uFF0B1 (650) 333-6000", RegionCode.SG);
     // The whole number, including punctuation, is here represented in full-width form.
     doTestFindInContext("\uFF0B\uFF11\u3000\uFF08\uFF16\uFF15\uFF10\uFF09" +
         "\u3000\uFF13\uFF13\uFF13\uFF0D\uFF16\uFF10\uFF10\uFF10",
-        "SG");
+        RegionCode.SG);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithLeadingZero()}. */
   public void testFindWithLeadingZero() throws Exception {
-    doTestFindInContext("+39 02-36618 300", "NZ");
-    doTestFindInContext("02-36618 300", "IT");
-    doTestFindInContext("312 345 678", "IT");
+    doTestFindInContext("+39 02-36618 300", RegionCode.NZ);
+    doTestFindInContext("02-36618 300", RegionCode.IT);
+    doTestFindInContext("312 345 678", RegionCode.IT);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNationalNumberArgentina()}. */
   public void testFindNationalNumberArgentina() throws Exception {
     // Test parsing mobile numbers of Argentina.
-    doTestFindInContext("+54 9 343 555 1212", "AR");
-    doTestFindInContext("0343 15 555 1212", "AR");
+    doTestFindInContext("+54 9 343 555 1212", RegionCode.AR);
+    doTestFindInContext("0343 15 555 1212", RegionCode.AR);
 
-    doTestFindInContext("+54 9 3715 65 4320", "AR");
-    doTestFindInContext("03715 15 65 4320", "AR");
+    doTestFindInContext("+54 9 3715 65 4320", RegionCode.AR);
+    doTestFindInContext("03715 15 65 4320", RegionCode.AR);
 
     // Test parsing fixed-line numbers of Argentina.
-    doTestFindInContext("+54 11 3797 0000", "AR");
-    doTestFindInContext("011 3797 0000", "AR");
+    doTestFindInContext("+54 11 3797 0000", RegionCode.AR);
+    doTestFindInContext("011 3797 0000", RegionCode.AR);
 
-    doTestFindInContext("+54 3715 65 4321", "AR");
-    doTestFindInContext("03715 65 4321", "AR");
+    doTestFindInContext("+54 3715 65 4321", RegionCode.AR);
+    doTestFindInContext("03715 65 4321", RegionCode.AR);
 
-    doTestFindInContext("+54 23 1234 0000", "AR");
-    doTestFindInContext("023 1234 0000", "AR");
+    doTestFindInContext("+54 23 1234 0000", RegionCode.AR);
+    doTestFindInContext("023 1234 0000", RegionCode.AR);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseWithXInNumber()}. */
   public void testFindWithXInNumber() throws Exception {
-    doTestFindInContext("(0xx) 123456789", "AR");
+    doTestFindInContext("(0xx) 123456789", RegionCode.AR);
     // A case where x denotes both carrier codes and extension symbol.
-    doTestFindInContext("(0xx) 123456789 x 1234", "AR");
+    doTestFindInContext("(0xx) 123456789 x 1234", RegionCode.AR);
 
     // This test is intentionally constructed such that the number of digit after xx is larger than
     // 7, so that the number won't be mistakenly treated as an extension, as we allow extensions up
     // to 7 digits. This assumption is okay for now as all the countries where a carrier selection
     // code is written in the form of xx have a national significant number of length larger than 7.
-    doTestFindInContext("011xx5481429712", "US");
+    doTestFindInContext("011xx5481429712", RegionCode.US);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNumbersMexico()}. */
   public void testFindNumbersMexico() throws Exception {
     // Test parsing fixed-line numbers of Mexico.
-    doTestFindInContext("+52 (449)978-0001", "MX");
-    doTestFindInContext("01 (449)978-0001", "MX");
-    doTestFindInContext("(449)978-0001", "MX");
+    doTestFindInContext("+52 (449)978-0001", RegionCode.MX);
+    doTestFindInContext("01 (449)978-0001", RegionCode.MX);
+    doTestFindInContext("(449)978-0001", RegionCode.MX);
 
     // Test parsing mobile numbers of Mexico.
-    doTestFindInContext("+52 1 33 1234-5678", "MX");
-    doTestFindInContext("044 (33) 1234-5678", "MX");
-    doTestFindInContext("045 33 1234-5678", "MX");
+    doTestFindInContext("+52 1 33 1234-5678", RegionCode.MX);
+    doTestFindInContext("044 (33) 1234-5678", RegionCode.MX);
+    doTestFindInContext("045 33 1234-5678", RegionCode.MX);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseNumbersWithPlusWithNoRegion()}. */
   public void testFindNumbersWithPlusWithNoRegion() throws Exception {
-    // "ZZ" is allowed only if the number starts with a '+' - then the country code can be
+    // RegionCode.ZZ is allowed only if the number starts with a '+' - then the country code can be
     // calculated.
-    doTestFindInContext("+64 3 331 6005", "ZZ");
+    doTestFindInContext("+64 3 331 6005", RegionCode.ZZ);
     // Null is also allowed for the region code in these cases.
     doTestFindInContext("+64 3 331 6005", null);
   }
 
   /** See {@link PhoneNumberUtilTest#testParseExtensions()}. */
   public void testFindExtensions() throws Exception {
-    doTestFindInContext("03 331 6005 ext 3456", "NZ");
-    doTestFindInContext("03-3316005x3456", "NZ");
-    doTestFindInContext("03-3316005 int.3456", "NZ");
-    doTestFindInContext("03 3316005 #3456", "NZ");
-    doTestFindInContext("0~0 1800 7493 524", "PL");
-    doTestFindInContext("(1800) 7493.524", "US");
+    doTestFindInContext("03 331 6005 ext 3456", RegionCode.NZ);
+    doTestFindInContext("03-3316005x3456", RegionCode.NZ);
+    doTestFindInContext("03-3316005 int.3456", RegionCode.NZ);
+    doTestFindInContext("03 3316005 #3456", RegionCode.NZ);
+    doTestFindInContext("0~0 1800 7493 524", RegionCode.PL);
+    doTestFindInContext("(1800) 7493.524", RegionCode.US);
     // Check that the last instance of an extension token is matched.
-    doTestFindInContext("0~0 1800 7493 524 ~1234", "PL");
+    doTestFindInContext("0~0 1800 7493 524 ~1234", RegionCode.PL);
     // Verifying bug-fix where the last digit of a number was previously omitted if it was a 0 when
     // extracting the extension. Also verifying a few different cases of extensions.
-    doTestFindInContext("+44 2034567890x456", "NZ");
-    doTestFindInContext("+44 2034567890x456", "GB");
-    doTestFindInContext("+44 2034567890 x456", "GB");
-    doTestFindInContext("+44 2034567890 X456", "GB");
-    doTestFindInContext("+44 2034567890 X 456", "GB");
-    doTestFindInContext("+44 2034567890 X  456", "GB");
-    doTestFindInContext("+44 2034567890  X 456", "GB");
+    doTestFindInContext("+44 2034567890x456", RegionCode.NZ);
+    doTestFindInContext("+44 2034567890x456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 x456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X 456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890 X  456", RegionCode.GB);
+    doTestFindInContext("+44 2034567890  X 456", RegionCode.GB);
 
-    doTestFindInContext("(800) 901-3355 x 7246433", "US");
-    doTestFindInContext("(800) 901-3355 , ext 7246433", "US");
-    doTestFindInContext("(800) 901-3355 ,extension 7246433", "US");
+    doTestFindInContext("(800) 901-3355 x 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 , ext 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 ,extension 7246433", RegionCode.US);
     // The next test differs from PhoneNumberUtil -> when matching we don't consider a lone comma to
     // indicate an extension, although we accept it when parsing.
-    doTestFindInContext("(800) 901-3355 ,x 7246433", "US");
-    doTestFindInContext("(800) 901-3355 ext: 7246433", "US");
+    doTestFindInContext("(800) 901-3355 ,x 7246433", RegionCode.US);
+    doTestFindInContext("(800) 901-3355 ext: 7246433", RegionCode.US);
   }
 
   public void testFindInterspersedWithSpace() throws Exception {
-    doTestFindInContext("0 3   3 3 1   6 0 0 5", "NZ");
+    doTestFindInContext("0 3   3 3 1   6 0 0 5", RegionCode.NZ);
   }
 
   /**
@@ -205,10 +206,10 @@
   public void testMatchWithSurroundingZipcodes() throws Exception {
     String number = "415-666-7777";
     String zipPreceding = "My address is CA 34215 - " + number + " is my number.";
-    PhoneNumber expectedResult = phoneUtil.parse(number, "US");
+    PhoneNumber expectedResult = phoneUtil.parse(number, RegionCode.US);
 
     Iterator<PhoneNumberMatch> iterator =
-        phoneUtil.findNumbers(zipPreceding, "US").iterator();
+        phoneUtil.findNumbers(zipPreceding, RegionCode.US).iterator();
     PhoneNumberMatch match = iterator.hasNext() ? iterator.next() : null;
     assertNotNull("Did not find a number in '" + zipPreceding + "'; expected " + number, match);
     assertEquals(expectedResult, match.number());
@@ -218,7 +219,7 @@
     number = "(415) 666 7777";
 
     String zipFollowing = "My number is " + number + ". 34215 is my zip-code.";
-    iterator = phoneUtil.findNumbers(zipFollowing, "US").iterator();
+    iterator = phoneUtil.findNumbers(zipFollowing, RegionCode.US).iterator();
 
     PhoneNumberMatch matchWithSpaces = iterator.hasNext() ? iterator.next() : null;
     assertNotNull("Did not find a number in '" + zipFollowing + "'; expected " + number,
@@ -286,8 +287,8 @@
     // considered possible.
     String numberWithPlus = "+14156667777";
     String numberWithBrackets = "(415)6667777";
-    findMatchesInContexts(possibleOnlyContexts, false, true, "US", numberWithPlus);
-    findMatchesInContexts(possibleOnlyContexts, false, true, "US", numberWithBrackets);
+    findMatchesInContexts(possibleOnlyContexts, false, true, RegionCode.US, numberWithPlus);
+    findMatchesInContexts(possibleOnlyContexts, false, true, RegionCode.US, numberWithBrackets);
 
     ArrayList<NumberContext> validContexts = new ArrayList<NumberContext>();
     validContexts.add(new NumberContext("abc", ""));
@@ -296,8 +297,8 @@
     validContexts.add(new NumberContext("\u00C9", " def"));  // Trailing white-space.
 
     // Numbers should be considered valid, since they start with punctuation.
-    findMatchesInContexts(validContexts, true, true, "US", numberWithPlus);
-    findMatchesInContexts(validContexts, true, true, "US", numberWithBrackets);
+    findMatchesInContexts(validContexts, true, true, RegionCode.US, numberWithPlus);
+    findMatchesInContexts(validContexts, true, true, RegionCode.US, numberWithBrackets);
   }
 
   public void testMatchesWithSurroundingChineseChars() throws Exception {
@@ -323,7 +324,7 @@
 
   public void testMatchesMultiplePhoneNumbersSeparatedByPhoneNumberPunctuation() throws Exception {
     String text = "Call 650-253-4561 -- 455-234-3451";
-    String region = "US";
+    String region = RegionCode.US;
 
     PhoneNumber number1 = new PhoneNumber();
     number1.setCountryCode(phoneUtil.getCountryCodeForRegion(region));
@@ -343,7 +344,7 @@
   public void testDoesNotMatchMultiplePhoneNumbersSeparatedWithNoWhiteSpace() throws Exception {
     // No white-space found between numbers - neither is found.
     String text = "Call 650-253-4561--455-234-3451";
-    String region = "US";
+    String region = RegionCode.US;
 
     assertTrue(hasNoMatches(phoneUtil.findNumbers(text, region)));
   }
@@ -352,29 +353,30 @@
    * Strings with number-like things that shouldn't be found under any level.
    */
   private static final NumberTest[] IMPOSSIBLE_CASES = {
-    new NumberTest("12345", "US"),
-    new NumberTest("23456789", "US"),
-    new NumberTest("234567890112", "US"),
-    new NumberTest("650+253+1234", "US"),
-    new NumberTest("3/10/1984", "CA"),
-    new NumberTest("03/27/2011", "US"),
-    new NumberTest("31/8/2011", "US"),
-    new NumberTest("1/12/2011", "US"),
-    new NumberTest("10/12/82", "DE"),
+    new NumberTest("12345", RegionCode.US),
+    new NumberTest("23456789", RegionCode.US),
+    new NumberTest("234567890112", RegionCode.US),
+    new NumberTest("650+253+1234", RegionCode.US),
+    new NumberTest("3/10/1984", RegionCode.CA),
+    new NumberTest("03/27/2011", RegionCode.US),
+    new NumberTest("31/8/2011", RegionCode.US),
+    new NumberTest("1/12/2011", RegionCode.US),
+    new NumberTest("10/12/82", RegionCode.DE),
   };
 
   /**
    * Strings with number-like things that should only be found under "possible".
    */
   private static final NumberTest[] POSSIBLE_ONLY_CASES = {
-    new NumberTest("abc8002345678", "US"),
+    new NumberTest("abc8002345678", RegionCode.US),
     // US numbers cannot start with 7 in the test metadata to be valid.
-    new NumberTest("7121115678", "US"),
+    new NumberTest("7121115678", RegionCode.US),
     // 'X' should not be found in numbers at leniencies stricter than POSSIBLE, unless it represents
     // a carrier code or extension.
-    new NumberTest("1650 x 253 - 1234", "US"),
-    new NumberTest("650 x 253 - 1234", "US"),
-    new NumberTest("650x2531234", "US"),
+    new NumberTest("1650 x 253 - 1234", RegionCode.US),
+    new NumberTest("650 x 253 - 1234", RegionCode.US),
+    new NumberTest("650x2531234", RegionCode.US),
+    new NumberTest("(20) 3346 1234", RegionCode.GB),  // Non-optional NP omitted
   };
 
   /**
@@ -382,16 +384,18 @@
    * leniency level.
    */
   private static final NumberTest[] VALID_CASES = {
-    new NumberTest("65 02 53 00 00.", "US"),
-    new NumberTest("6502 538365", "US"),
-    new NumberTest("650//253-1234", "US"),  // 2 slashes are illegal at higher levels
-    new NumberTest("650/253/1234", "US"),
-    new NumberTest("9002309. 158", "US"),
-    new NumberTest("21 7/8 - 14 12/34 - 5", "US"),
-    new NumberTest("12.1 - 23.71 - 23.45", "US"),
-    new NumberTest("1979-2011 100%", "US"),
-    new NumberTest("800 234 1 111x1111", "US"),
-    new NumberTest("+494949-4-94", "DE"),  // National number in wrong format
+    new NumberTest("65 02 53 00 00.", RegionCode.US),
+    new NumberTest("6502 538365", RegionCode.US),
+    new NumberTest("650//253-1234", RegionCode.US),  // 2 slashes are illegal at higher levels
+    new NumberTest("650/253/1234", RegionCode.US),
+    new NumberTest("9002309. 158", RegionCode.US),
+    new NumberTest("21 7/8 - 14 12/34 - 5", RegionCode.US),
+    new NumberTest("12.1 - 23.71 - 23.45", RegionCode.US),
+    new NumberTest("1979-2011 100%", RegionCode.US),
+    new NumberTest("800 234 1 111x1111", RegionCode.US),
+    new NumberTest("+494949-4-94", RegionCode.DE),  // National number in wrong format
+    new NumberTest("\uFF14\uFF11\uFF15\uFF16\uFF16\uFF16\uFF16-\uFF17\uFF17\uFF17\uFF17",
+                   RegionCode.US),
   };
 
   /**
@@ -399,40 +403,40 @@
    * "strict_grouping" leniency level.
    */
   private static final NumberTest[] STRICT_GROUPING_CASES = {
-    new NumberTest("(415) 6667777", "US"),
-    new NumberTest("415-6667777", "US"),
+    new NumberTest("(415) 6667777", RegionCode.US),
+    new NumberTest("415-6667777", RegionCode.US),
     // Should be found by strict grouping but not exact grouping, as the last two groups are
     // formatted together as a block.
-    new NumberTest("800-2491234", "DE"),
+    new NumberTest("0800-2491234", RegionCode.DE),
   };
 
   /**
    * Strings with number-like things that should found at all levels.
    */
   private static final NumberTest[] EXACT_GROUPING_CASES = {
-    new NumberTest("\uFF14\uFF11\uFF15\uFF16\uFF16\uFF16\uFF17\uFF17\uFF17\uFF17", "US"),
-    new NumberTest("\uFF14\uFF11\uFF15-\uFF16\uFF16\uFF16-\uFF17\uFF17\uFF17\uFF17", "US"),
-    new NumberTest("4156667777", "US"),
-    new NumberTest("4156667777 x 123", "US"),
-    new NumberTest("415-666-7777", "US"),
-    new NumberTest("415/666-7777", "US"),
-    new NumberTest("415-666-7777 ext. 503", "US"),
-    new NumberTest("1 415 666 7777 x 123", "US"),
-    new NumberTest("+1 415-666-7777", "US"),
-    new NumberTest("+494949 49", "DE"),
-    new NumberTest("+49-49-34", "DE"),
-    new NumberTest("+49-4931-49", "DE"),
-    new NumberTest("04931-49", "DE"),  // With National Prefix
-    new NumberTest("+49-494949", "DE"),  // One group with country code
-    new NumberTest("+49-494949 ext. 49", "DE"),
-    new NumberTest("+49494949 ext. 49", "DE"),
-    new NumberTest("0494949", "DE"),
-    new NumberTest("0494949 ext. 49", "DE"),
+    new NumberTest("\uFF14\uFF11\uFF15\uFF16\uFF16\uFF16\uFF17\uFF17\uFF17\uFF17", RegionCode.US),
+    new NumberTest("\uFF14\uFF11\uFF15-\uFF16\uFF16\uFF16-\uFF17\uFF17\uFF17\uFF17", RegionCode.US),
+    new NumberTest("4156667777", RegionCode.US),
+    new NumberTest("4156667777 x 123", RegionCode.US),
+    new NumberTest("415-666-7777", RegionCode.US),
+    new NumberTest("415/666-7777", RegionCode.US),
+    new NumberTest("415-666-7777 ext. 503", RegionCode.US),
+    new NumberTest("1 415 666 7777 x 123", RegionCode.US),
+    new NumberTest("+1 415-666-7777", RegionCode.US),
+    new NumberTest("+494949 49", RegionCode.DE),
+    new NumberTest("+49-49-34", RegionCode.DE),
+    new NumberTest("+49-4931-49", RegionCode.DE),
+    new NumberTest("04931-49", RegionCode.DE),  // With National Prefix
+    new NumberTest("+49-494949", RegionCode.DE),  // One group with country code
+    new NumberTest("+49-494949 ext. 49", RegionCode.DE),
+    new NumberTest("+49494949 ext. 49", RegionCode.DE),
+    new NumberTest("0494949", RegionCode.DE),
+    new NumberTest("0494949 ext. 49", RegionCode.DE),
+    new NumberTest("01 (33) 3461 2234", RegionCode.MX),  // Optional NP present
+    new NumberTest("(33) 3461 2234", RegionCode.MX),  // Optional NP omitted
   };
 
   public void testMatchesWithStrictGroupingLeniency() throws Exception {
-    int noMatchFoundCount = 0;
-    int wrongMatchFoundCount = 0;
     List<NumberTest> testCases = new ArrayList<NumberTest>();
     testCases.addAll(Arrays.asList(STRICT_GROUPING_CASES));
     testCases.addAll(Arrays.asList(EXACT_GROUPING_CASES));
@@ -440,8 +444,8 @@
   }
 
   public void testNonMatchesWithStrictGroupLeniency() throws Exception {
-    int matchFoundCount = 0;
     List<NumberTest> testCases = new ArrayList<NumberTest>();
+    testCases.addAll(Arrays.asList(IMPOSSIBLE_CASES));
     testCases.addAll(Arrays.asList(POSSIBLE_ONLY_CASES));
     testCases.addAll(Arrays.asList(VALID_CASES));
     doTestNumberNonMatchesForLeniency(testCases, Leniency.STRICT_GROUPING);
@@ -455,6 +459,7 @@
 
   public void testNonMatchesExactGroupLeniency() throws Exception {
     List<NumberTest> testCases = new ArrayList<NumberTest>();
+    testCases.addAll(Arrays.asList(IMPOSSIBLE_CASES));
     testCases.addAll(Arrays.asList(POSSIBLE_ONLY_CASES));
     testCases.addAll(Arrays.asList(VALID_CASES));
     testCases.addAll(Arrays.asList(STRICT_GROUPING_CASES));
@@ -534,7 +539,7 @@
    */
   private void findMatchesInContexts(List<NumberContext> contexts, boolean isValid,
                                      boolean isPossible) {
-    String region = "US";
+    String region = RegionCode.US;
     String number = "415-666-7777";
 
     findMatchesInContexts(contexts, isValid, isPossible, region, number);
@@ -544,19 +549,19 @@
     // The digits up to the ", " form a valid US number, but it shouldn't be matched as one since
     // there was a non-matching bracket present.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 [79.964, 81.191]", "US")));
+        "80.585 [79.964, 81.191]", RegionCode.US)));
 
     // The trailing "]" is thrown away before parsing, so the resultant number, while a valid US
     // number, does not have matching brackets.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 [79.964]", "US")));
+        "80.585 [79.964]", RegionCode.US)));
 
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "80.585 ((79.964)", "US")));
+        "80.585 ((79.964)", RegionCode.US)));
 
     // This case has too many sets of brackets to be valid.
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "(80).(585) (79).(9)64", "US")));
+        "(80).(585) (79).(9)64", RegionCode.US)));
   }
 
   public void testNoMatchIfRegionIsNull() throws Exception {
@@ -566,19 +571,19 @@
   }
 
   public void testNoMatchInEmptyString() throws Exception {
-    assertTrue(hasNoMatches(phoneUtil.findNumbers("", "US")));
-    assertTrue(hasNoMatches(phoneUtil.findNumbers("  ", "US")));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers("", RegionCode.US)));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers("  ", RegionCode.US)));
   }
 
   public void testNoMatchIfNoNumber() throws Exception {
     assertTrue(hasNoMatches(phoneUtil.findNumbers(
-        "Random text body - number is foobar, see you there", "US")));
+        "Random text body - number is foobar, see you there", RegionCode.US)));
   }
 
   public void testSequences() throws Exception {
     // Test multiple occurrences.
     String text = "Call 033316005  or 032316005!";
-    String region = "NZ";
+    String region = RegionCode.NZ;
 
     PhoneNumber number1 = new PhoneNumber();
     number1.setCountryCode(phoneUtil.getCountryCodeForRegion(region));
@@ -598,7 +603,7 @@
   }
 
   public void testNullInput() throws Exception {
-    assertTrue(hasNoMatches(phoneUtil.findNumbers(null, "US")));
+    assertTrue(hasNoMatches(phoneUtil.findNumbers(null, RegionCode.US)));
     assertTrue(hasNoMatches(phoneUtil.findNumbers(null, null)));
   }
 
@@ -617,7 +622,7 @@
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     List<PhoneNumber> actual = new ArrayList<PhoneNumber>(100);
     for (PhoneNumberMatch match : iterable) {
       actual.add(match.number());
@@ -636,7 +641,7 @@
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     assertFalse(iterable.iterator().hasNext());
   }
 
@@ -655,7 +660,7 @@
     }
 
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers(numbers.toString(), "US", Leniency.VALID, 10);
+        phoneUtil.findNumbers(numbers.toString(), RegionCode.US, Leniency.VALID, 10);
     List<PhoneNumber> actual = new ArrayList<PhoneNumber>(100);
     for (PhoneNumberMatch match : iterable) {
       actual.add(match.number());
@@ -664,7 +669,7 @@
   }
 
   public void testEmptyIteration() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("", RegionCode.ZZ);
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
 
     assertFalse(iterator.hasNext());
@@ -677,7 +682,7 @@
   }
 
   public void testSingleIteration() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", RegionCode.ZZ);
 
     // With hasNext() -> next().
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
@@ -703,7 +708,7 @@
 
   public void testDoubleIteration() throws Exception {
     Iterable<PhoneNumberMatch> iterable =
-        phoneUtil.findNumbers("+14156667777 foobar +14156667777 ", "ZZ");
+        phoneUtil.findNumbers("+14156667777 foobar +14156667777 ", RegionCode.ZZ);
 
     // With hasNext() -> next().
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
@@ -736,7 +741,7 @@
    * change iteration behavior.
    */
   public void testRemovalNotSupported() throws Exception {
-    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", "ZZ");
+    Iterable<PhoneNumberMatch> iterable = phoneUtil.findNumbers("+14156667777", RegionCode.ZZ);
 
     Iterator<PhoneNumberMatch> iterator = iterable.iterator();
     try {
@@ -768,7 +773,7 @@
   private void assertEqualRange(CharSequence text, int index, int start, int end) {
     CharSequence sub = text.subSequence(index, text.length());
     Iterator<PhoneNumberMatch> matches =
-      phoneUtil.findNumbers(sub, "NZ", Leniency.POSSIBLE, Long.MAX_VALUE).iterator();
+      phoneUtil.findNumbers(sub, RegionCode.NZ, Leniency.POSSIBLE, Long.MAX_VALUE).iterator();
     assertTrue(matches.hasNext());
     PhoneNumberMatch match = matches.next();
     assertEquals(start - index, match.start());
@@ -892,13 +897,6 @@
     return phoneUtil.findNumbers(text, defaultCountry, leniency, Long.MAX_VALUE).iterator();
   }
 
-  /**
-   * Returns true if there were no matches found.
-   */
-  private boolean hasNoMatches(Iterator<PhoneNumberMatch> iterator) {
-    return !iterator.hasNext();
-  }
-
   private boolean hasNoMatches(Iterable<PhoneNumberMatch> iterable) {
     return !iterable.iterator().hasNext();
   }
diff --git a/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java b/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
index c613977..8033be2 100644
--- a/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
+++ b/java/test/com/android/i18n/phonenumbers/PhoneNumberUtilTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -104,29 +104,6 @@
       new PhoneNumber().setCountryCode(1).setNationalNumber(0L)
           .setRawInput("000-000-0000");
 
-  // Class containing string constants of region codes for easier testing.
-  private static class RegionCode {
-    static final String AD = "AD";
-    static final String AO = "AO";
-    static final String AR = "AR";
-    static final String AU = "AU";
-    static final String BS = "BS";
-    static final String CS = "CS";
-    static final String DE = "DE";
-    static final String GB = "GB";
-    static final String IT = "IT";
-    static final String KR = "KR";
-    static final String MX = "MX";
-    static final String NZ = "NZ";
-    static final String PL = "PL";
-    static final String RE = "RE";
-    static final String SG = "SG";
-    static final String US = "US";
-    static final String YT = "YT";
-    // Official code for the unknown region.
-    static final String ZZ = "ZZ";
-  }
-
   public PhoneNumberUtilTest() {
     phoneUtil = initializePhoneUtilForTesting();
   }
@@ -144,7 +121,7 @@
 
   public void testGetInstanceLoadUSMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.US);
-    assertEquals("US", metadata.getId());
+    assertEquals(RegionCode.US, metadata.getId());
     assertEquals(1, metadata.getCountryCode());
     assertEquals("011", metadata.getInternationalPrefix());
     assertTrue(metadata.hasNationalPrefix());
@@ -165,7 +142,7 @@
 
   public void testGetInstanceLoadDEMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.DE);
-    assertEquals("DE", metadata.getId());
+    assertEquals(RegionCode.DE, metadata.getId());
     assertEquals(49, metadata.getCountryCode());
     assertEquals("00", metadata.getInternationalPrefix());
     assertEquals("0", metadata.getNationalPrefix());
@@ -185,7 +162,7 @@
 
   public void testGetInstanceLoadARMetadata() {
     PhoneMetadata metadata = phoneUtil.getMetadataForRegion(RegionCode.AR);
-    assertEquals("AR", metadata.getId());
+    assertEquals(RegionCode.AR, metadata.getId());
     assertEquals(54, metadata.getCountryCode());
     assertEquals("00", metadata.getInternationalPrefix());
     assertEquals("0", metadata.getNationalPrefix());
@@ -465,7 +442,7 @@
     assertEquals("1 650 253 0000",
                  phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, RegionCode.BS));
 
-    assertEquals("0~0 1 650 253 0000",
+    assertEquals("00 1 650 253 0000",
                  phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, RegionCode.PL));
 
     assertEquals("011 44 7912 345 678",
@@ -500,6 +477,13 @@
                  phoneUtil.formatOutOfCountryCallingNumber(arNumberWithExtn, RegionCode.AR));
   }
 
+  public void testFormatOutOfCountryWithInvalidRegion() {
+    // AQ/Antarctica isn't a valid region code for phone number formatting,
+    // so this falls back to intl formatting.
+    assertEquals("+1 650 253 0000",
+                 phoneUtil.formatOutOfCountryCallingNumber(US_NUMBER, "AQ"));
+  }
+
   public void testFormatOutOfCountryWithPreferredIntlPrefix() {
     // This should use 0011, since that is the preferred international prefix (both 0011 and 0012
     // are accepted as possible international prefixes in our test metadta.)
@@ -626,6 +610,27 @@
         phoneUtil.formatNationalNumberWithPreferredCarrierCode(usNumber, "15"));
   }
 
+  public void testFormatNumberForMobileDialing() {
+    // US toll free numbers are marked as noInternationalDialling in the test metadata for testing
+    // purposes.
+    assertEquals("800 253 0000",
+        phoneUtil.formatNumberForMobileDialing(US_TOLLFREE, RegionCode.US, true));
+    assertEquals("", phoneUtil.formatNumberForMobileDialing(US_TOLLFREE, RegionCode.CN, true));
+    assertEquals("+1 650 253 0000",
+        phoneUtil.formatNumberForMobileDialing(US_NUMBER, RegionCode.US, true));
+    PhoneNumber usNumberWithExtn = new PhoneNumber().mergeFrom(US_NUMBER).setExtension("1234");
+    assertEquals("+1 650 253 0000",
+        phoneUtil.formatNumberForMobileDialing(usNumberWithExtn, RegionCode.US, true));
+
+    assertEquals("8002530000",
+        phoneUtil.formatNumberForMobileDialing(US_TOLLFREE, RegionCode.US, false));
+    assertEquals("", phoneUtil.formatNumberForMobileDialing(US_TOLLFREE, RegionCode.CN, false));
+    assertEquals("+16502530000",
+        phoneUtil.formatNumberForMobileDialing(US_NUMBER, RegionCode.US, false));
+    assertEquals("+16502530000",
+        phoneUtil.formatNumberForMobileDialing(usNumberWithExtn, RegionCode.US, false));
+  }
+
   public void testFormatByPattern() {
     NumberFormat newNumFormat = new NumberFormat();
     newNumFormat.setPattern("(\\d{3})(\\d{3})(\\d{4})");
@@ -717,6 +722,15 @@
     PhoneNumber number5 = phoneUtil.parse("+442087654321", RegionCode.GB);
     assertEquals("(020) 8765 4321", phoneUtil.formatInOriginalFormat(number5, RegionCode.GB));
 
+    // Invalid numbers should be formatted using its raw input when that is available. Note area
+    // codes starting with 7 are intentionally excluded in the test metadata for testing purposes.
+    PhoneNumber number6 = phoneUtil.parseAndKeepRawInput("7345678901", RegionCode.US);
+    assertEquals("7345678901", phoneUtil.formatInOriginalFormat(number6, RegionCode.US));
+
+    // When the raw input is unavailable, format as usual.
+    PhoneNumber number7 = phoneUtil.parse("7345678901", RegionCode.US);
+    assertEquals("734 567 8901", phoneUtil.formatInOriginalFormat(number7, RegionCode.US));
+
     // This number is valid, but we don't have a formatting pattern for it. Fall back to the raw
     // input.
     PhoneNumber number8 = phoneUtil.parseAndKeepRawInput("02-4567-8900", RegionCode.KR);
@@ -979,7 +993,7 @@
     adNumber.setCountryCode(376).setNationalNumber(13L);
     assertEquals(PhoneNumberUtil.ValidationResult.TOO_SHORT,
                  phoneUtil.isPossibleNumberWithReason(adNumber));
-    adNumber.setCountryCode(376).setNationalNumber(1234567890123456L);
+    adNumber.setCountryCode(376).setNationalNumber(12345678901234567L);
     assertEquals(PhoneNumberUtil.ValidationResult.TOO_LONG,
                  phoneUtil.isPossibleNumberWithReason(adNumber));
   }
@@ -1100,24 +1114,24 @@
     metadata.setGeneralDesc(new PhoneNumberDesc().setNationalNumberPattern("\\d{4,8}"));
     StringBuilder numberToStrip = new StringBuilder("34356778");
     String strippedNumber = "356778";
-    phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata);
+    assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
     assertEquals("Should have had national prefix stripped.",
                  strippedNumber, numberToStrip.toString());
     // Retry stripping - now the number should not start with the national prefix, so no more
     // stripping should occur.
-    phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata);
+    assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
     assertEquals("Should have had no change - no national prefix present.",
                  strippedNumber, numberToStrip.toString());
     // Some countries have no national prefix. Repeat test with none specified.
     metadata.setNationalPrefixForParsing("");
-    phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata);
+    assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
     assertEquals("Should not strip anything with empty national prefix.",
                  strippedNumber, numberToStrip.toString());
     // If the resultant number doesn't match the national rule, it shouldn't be stripped.
     metadata.setNationalPrefixForParsing("3");
     numberToStrip = new StringBuilder("3123");
     strippedNumber = "3123";
-    phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata);
+    assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
     assertEquals("Should have had no change - after stripping, it wouldn't have matched " +
                  "the national rule.",
                  strippedNumber, numberToStrip.toString());
@@ -1125,7 +1139,10 @@
     metadata.setNationalPrefixForParsing("0(81)?");
     numberToStrip = new StringBuilder("08122123456");
     strippedNumber = "22123456";
-    assertEquals("81", phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata));
+    StringBuilder carrierCode = new StringBuilder();
+    assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(
+        numberToStrip, metadata, carrierCode));
+    assertEquals("81", carrierCode.toString());
     assertEquals("Should have had national prefix and carrier code stripped.",
                  strippedNumber, numberToStrip.toString());
     // If there was a transform rule, check it was applied.
@@ -1134,7 +1151,7 @@
     metadata.setNationalPrefixForParsing("0(\\d{2})");
     numberToStrip = new StringBuilder("031123");
     String transformedNumber = "5315123";
-    phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata);
+    assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
     assertEquals("Should transform the 031 to a 5315.",
                  transformedNumber, numberToStrip.toString());
   }
@@ -1332,6 +1349,11 @@
     // recognise the country calling code and parse accordingly.
     assertEquals(NZ_NUMBER, phoneUtil.parse("01164 3 331 6005", RegionCode.US));
     assertEquals(NZ_NUMBER, phoneUtil.parse("+64 3 331 6005", RegionCode.US));
+    // We should ignore the leading plus here, since it is not followed by a valid country code but
+    // instead is followed by the IDD for the US.
+    assertEquals(NZ_NUMBER, phoneUtil.parse("+01164 3 331 6005", RegionCode.US));
+    assertEquals(NZ_NUMBER, phoneUtil.parse("+0064 3 331 6005", RegionCode.NZ));
+    assertEquals(NZ_NUMBER, phoneUtil.parse("+ 00 64 3 331 6005", RegionCode.NZ));
 
     PhoneNumber nzNumber = new PhoneNumber();
     nzNumber.setCountryCode(64).setNationalNumber(64123456L);
@@ -1515,6 +1537,16 @@
                    e.getErrorType());
     }
     try {
+      String plusAndIddAndInvalidCountryCode = "+ 00 210 3 331 6005";
+      phoneUtil.parse(plusAndIddAndInvalidCountryCode, RegionCode.NZ);
+      fail("This should not parse without throwing an exception.");
+    } catch (NumberParseException e) {
+      // Expected this exception. 00 is a correct IDD, but 210 is not a valid country code.
+      assertEquals("Wrong error type stored in exception.",
+                   NumberParseException.ErrorType.INVALID_COUNTRY_CODE,
+                   e.getErrorType());
+    }
+    try {
       String someNumber = "123 456 7890";
       phoneUtil.parse(someNumber, RegionCode.ZZ);
       fail("'Unknown' region code not allowed: should fail.");
diff --git a/java/test/com/android/i18n/phonenumbers/PhonenumberTest.java b/java/test/com/android/i18n/phonenumbers/PhonenumberTest.java
index ee93648..b2169d9 100644
--- a/java/test/com/android/i18n/phonenumbers/PhonenumberTest.java
+++ b/java/test/com/android/i18n/phonenumbers/PhonenumberTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc.
+ * Copyright (C) 2009 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/test/com/android/i18n/phonenumbers/RegexCacheTest.java b/java/test/com/android/i18n/phonenumbers/RegexCacheTest.java
index 2f5fa51..544c9e2 100644
--- a/java/test/com/android/i18n/phonenumbers/RegexCacheTest.java
+++ b/java/test/com/android/i18n/phonenumbers/RegexCacheTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc.
+ * Copyright (C) 2010 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/test/com/android/i18n/phonenumbers/RegionCode.java b/java/test/com/android/i18n/phonenumbers/RegionCode.java
new file mode 100644
index 0000000..ecf5660
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/RegionCode.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+/**
+ * Class containing string constants of region codes for easier testing.
+ */
+final class RegionCode {
+  static final String AD = "AD";
+  static final String AO = "AO";
+  static final String AR = "AR";
+  static final String AU = "AU";
+  static final String BR = "BR";
+  static final String BS = "BS";
+  static final String CA = "CA";
+  static final String CN = "CN";
+  static final String CS = "CS";
+  static final String DE = "DE";
+  static final String GB = "GB";
+  static final String IT = "IT";
+  static final String JP = "JP";
+  static final String KR = "KR";
+  static final String MX = "MX";
+  static final String NZ = "NZ";
+  static final String PL = "PL";
+  static final String RE = "RE";
+  static final String SG = "SG";
+  static final String US = "US";
+  static final String YT = "YT";
+  static final String ZW = "ZW";
+  // Official code for the unknown region.
+  static final String ZZ = "ZZ";
+}
diff --git a/java/test/com/android/i18n/phonenumbers/ShortNumberUtilTest.java b/java/test/com/android/i18n/phonenumbers/ShortNumberUtilTest.java
new file mode 100644
index 0000000..b1aaade
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/ShortNumberUtilTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.i18n.phonenumbers;
+
+import junit.framework.TestCase;
+
+import java.io.InputStream;
+
+/**
+ * Unit tests for ShortNumberUtil.java
+ *
+ * @author Shaopeng Jia
+ */
+public class ShortNumberUtilTest extends TestCase {
+  private ShortNumberUtil shortUtil;
+  static final String TEST_META_DATA_FILE_PREFIX =
+      "/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting";
+
+  public ShortNumberUtilTest() {
+    PhoneNumberUtil.resetInstance();
+    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(
+        TEST_META_DATA_FILE_PREFIX,
+        CountryCodeToRegionCodeMapForTesting.getCountryCodeToRegionCodeMap());
+    shortUtil = new ShortNumberUtil(phoneUtil);
+  }
+
+  public void testConnectsToEmergencyNumber_US() {
+    assertTrue(shortUtil.connectsToEmergencyNumber("911", RegionCode.US));
+    assertTrue(shortUtil.connectsToEmergencyNumber("119", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("999", RegionCode.US));
+  }
+
+  public void testConnectsToEmergencyNumberLongNumber_US() {
+    assertTrue(shortUtil.connectsToEmergencyNumber("9116666666", RegionCode.US));
+    assertTrue(shortUtil.connectsToEmergencyNumber("1196666666", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("9996666666", RegionCode.US));
+  }
+
+  public void testConnectsToEmergencyNumberWithFormatting_US() {
+    assertTrue(shortUtil.connectsToEmergencyNumber("9-1-1", RegionCode.US));
+    assertTrue(shortUtil.connectsToEmergencyNumber("1-1-9", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("9-9-9", RegionCode.US));
+  }
+
+  public void testConnectsToEmergencyNumberWithPlusSign_US() {
+    assertFalse(shortUtil.connectsToEmergencyNumber("+911", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("\uFF0B911", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber(" +911", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("+119", RegionCode.US));
+    assertFalse(shortUtil.connectsToEmergencyNumber("+999", RegionCode.US));
+  }
+
+  public void testConnectsToEmergencyNumber_BR() {
+    assertTrue(shortUtil.connectsToEmergencyNumber("911", RegionCode.BR));
+    assertTrue(shortUtil.connectsToEmergencyNumber("190", RegionCode.BR));
+    assertFalse(shortUtil.connectsToEmergencyNumber("999", RegionCode.BR));
+  }
+
+  public void testConnectsToEmergencyNumberLongNumber_BR() {
+    // Brazilian emergency numbers don't work when additional digits are appended.
+    assertFalse(shortUtil.connectsToEmergencyNumber("9111", RegionCode.BR));
+    assertFalse(shortUtil.connectsToEmergencyNumber("1900", RegionCode.BR));
+    assertFalse(shortUtil.connectsToEmergencyNumber("9996", RegionCode.BR));
+  }
+
+  public void testConnectsToEmergencyNumber_AO() {
+    // Angola doesn't have any metadata for emergency numbers in the test metadata.
+    assertFalse(shortUtil.connectsToEmergencyNumber("911", RegionCode.AO));
+    assertFalse(shortUtil.connectsToEmergencyNumber("222123456", RegionCode.AO));
+    assertFalse(shortUtil.connectsToEmergencyNumber("923123456", RegionCode.AO));
+  }
+
+  public void testConnectsToEmergencyNumber_ZW() {
+    // Zimbabwe doesn't have any metadata in the test metadata.
+    assertFalse(shortUtil.connectsToEmergencyNumber("911", RegionCode.ZW));
+    assertFalse(shortUtil.connectsToEmergencyNumber("01312345", RegionCode.ZW));
+    assertFalse(shortUtil.connectsToEmergencyNumber("0711234567", RegionCode.ZW));
+  }
+
+  public void testIsEmergencyNumber_US() {
+    assertTrue(shortUtil.isEmergencyNumber("911", RegionCode.US));
+    assertTrue(shortUtil.isEmergencyNumber("119", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("999", RegionCode.US));
+  }
+
+  public void testIsEmergencyNumberLongNumber_US() {
+    assertFalse(shortUtil.isEmergencyNumber("9116666666", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("1196666666", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("9996666666", RegionCode.US));
+  }
+
+  public void testIsEmergencyNumberWithFormatting_US() {
+    assertTrue(shortUtil.isEmergencyNumber("9-1-1", RegionCode.US));
+    assertTrue(shortUtil.isEmergencyNumber("*911", RegionCode.US));
+    assertTrue(shortUtil.isEmergencyNumber("1-1-9", RegionCode.US));
+    assertTrue(shortUtil.isEmergencyNumber("*119", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("9-9-9", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("*999", RegionCode.US));
+  }
+
+  public void testIsEmergencyNumberWithPlusSign_US() {
+    assertFalse(shortUtil.isEmergencyNumber("+911", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("\uFF0B911", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber(" +911", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("+119", RegionCode.US));
+    assertFalse(shortUtil.isEmergencyNumber("+999", RegionCode.US));
+  }
+
+  public void testIsEmergencyNumber_BR() {
+    assertTrue(shortUtil.isEmergencyNumber("911", RegionCode.BR));
+    assertTrue(shortUtil.isEmergencyNumber("190", RegionCode.BR));
+    assertFalse(shortUtil.isEmergencyNumber("999", RegionCode.BR));
+  }
+
+  public void testIsEmergencyNumberLongNumber_BR() {
+    assertFalse(shortUtil.isEmergencyNumber("9111", RegionCode.BR));
+    assertFalse(shortUtil.isEmergencyNumber("1900", RegionCode.BR));
+    assertFalse(shortUtil.isEmergencyNumber("9996", RegionCode.BR));
+  }
+
+  public void testIsEmergencyNumber_AO() {
+    // Angola doesn't have any metadata for emergency numbers in the test metadata.
+    assertFalse(shortUtil.isEmergencyNumber("911", RegionCode.AO));
+    assertFalse(shortUtil.isEmergencyNumber("222123456", RegionCode.AO));
+    assertFalse(shortUtil.isEmergencyNumber("923123456", RegionCode.AO));
+  }
+
+  public void testIsEmergencyNumber_ZW() {
+    // Zimbabwe doesn't have any metadata in the test metadata.
+    assertFalse(shortUtil.isEmergencyNumber("911", RegionCode.ZW));
+    assertFalse(shortUtil.isEmergencyNumber("01312345", RegionCode.ZW));
+    assertFalse(shortUtil.isEmergencyNumber("0711234567", RegionCode.ZW));
+  }
+}
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD
index 0554c1f..8dba7fa 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO
index 8f829b8..44b042e 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
index 80e8ebf..549bc8b 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU
index ecd6757..b3ee483 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BR b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BR
new file mode 100644
index 0000000..fc33520
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BR
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS
index 2c30b61..7ec5aa3 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE
index 766539f..42d58fe 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB
index 1cbd1f3..171bbc0 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT
index a75f0db..be4d9c1 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP
index cfb8f71..1dbb2b1 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR
index 7f29bca..21c764e 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
index 7f1e18b..854f020 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ
index 5a494e6..d3b27a6 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL
index 424909c..9b082df 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE
index 77a8f8f..02b38fa 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG
index 0838f55..c5df8dc 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
index 0630d77..cf65f6a 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT
index 50db378..ecee4a4 100644
--- a/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT
+++ b/java/test/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/AreaCodeMapTest.java b/java/test/com/android/i18n/phonenumbers/geocoding/AreaCodeMapTest.java
index a01a96c..25ea63f 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/AreaCodeMapTest.java
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/AreaCodeMapTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -84,13 +84,13 @@
   public void testGetSmallerMapStorageChoosesDefaultImpl() {
     AreaCodeMapStorageStrategy mapStorage =
         new AreaCodeMap().getSmallerMapStorage(createDefaultStorageMapCandidate());
-    assertFalse(mapStorage.isFlyweight());
+    assertFalse(mapStorage instanceof FlyweightMapStorage);
   }
 
   public void testGetSmallerMapStorageChoosesFlyweightImpl() {
     AreaCodeMapStorageStrategy mapStorage =
         new AreaCodeMap().getSmallerMapStorage(createFlyweightStorageMapCandidate());
-    assertTrue(mapStorage.isFlyweight());
+    assertTrue(mapStorage instanceof FlyweightMapStorage);
   }
 
   public void testLookupInvalidNumber_US() {
@@ -126,12 +126,12 @@
 
   public void testLookupNumberNotFound_TX() {
     number.setCountryCode(1).setNationalNumber(9724811234L);
-    assertEquals("", areaCodeMapForUS.lookup(number));
+    assertNull(areaCodeMapForUS.lookup(number));
   }
 
   public void testLookupNumber_CH() {
     number.setCountryCode(41).setNationalNumber(446681300L);
-    assertEquals("", areaCodeMapForUS.lookup(number));
+    assertNull(areaCodeMapForUS.lookup(number));
   }
 
   public void testLookupNumber_IT() {
@@ -146,7 +146,7 @@
 
     // A mobile number
     number.setNationalNumber(321123456L).setItalianLeadingZero(false);
-    assertEquals("", areaCodeMapForIT.lookup(number));
+    assertNull(areaCodeMapForIT.lookup(number));
 
     // An invalid number (too short)
     number.setNationalNumber(321123L).setItalianLeadingZero(true);
@@ -173,7 +173,7 @@
   public void testReadWriteExternalWithDefaultStrategy() throws IOException {
     AreaCodeMap localAreaCodeMap = new AreaCodeMap();
     localAreaCodeMap.readAreaCodeMap(createDefaultStorageMapCandidate());
-    assertFalse(localAreaCodeMap.getAreaCodeMapStorage().isFlyweight());
+    assertFalse(localAreaCodeMap.getAreaCodeMapStorage() instanceof FlyweightMapStorage);
 
     AreaCodeMap newAreaCodeMap;
     newAreaCodeMap = createNewAreaCodeMap(localAreaCodeMap);
@@ -183,7 +183,7 @@
   public void testReadWriteExternalWithFlyweightStrategy() throws IOException {
     AreaCodeMap localAreaCodeMap = new AreaCodeMap();
     localAreaCodeMap.readAreaCodeMap(createFlyweightStorageMapCandidate());
-    assertTrue(localAreaCodeMap.getAreaCodeMapStorage().isFlyweight());
+    assertTrue(localAreaCodeMap.getAreaCodeMapStorage() instanceof FlyweightMapStorage);
 
     AreaCodeMap newAreaCodeMap;
     newAreaCodeMap = createNewAreaCodeMap(localAreaCodeMap);
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorageTest.java b/java/test/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorageTest.java
index d254c6a..4f7b78e 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorageTest.java
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/FlyweightMapStorageTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.Collections;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -32,37 +33,48 @@
  * @author Philippe Liard
  */
 public class FlyweightMapStorageTest extends TestCase {
-  private final SortedMap<Integer, String> areaCodeMap = new TreeMap<Integer, String>();
+  private static final SortedMap<Integer, String> areaCodeMap;
+  static {
+    SortedMap<Integer, String> tmpMap = new TreeMap<Integer, String>();
+    tmpMap.put(331402, "Paris");
+    tmpMap.put(331434, "Paris");
+    tmpMap.put(334910, "Marseille");
+    tmpMap.put(334911, "Marseille");
+    tmpMap.put(334912, "");
+    tmpMap.put(334913, "");
+    areaCodeMap = Collections.unmodifiableSortedMap(tmpMap);
+  }
 
-  public FlyweightMapStorageTest() {
-    areaCodeMap.put(331402, "Paris");
-    areaCodeMap.put(331434, "Paris");
-    areaCodeMap.put(334910, "Marseille");
-    areaCodeMap.put(334911, "Marseille");
+  private FlyweightMapStorage mapStorage;
+
+  @Override
+  protected void setUp() throws Exception {
+    mapStorage = new FlyweightMapStorage();
+    mapStorage.readFromSortedMap(areaCodeMap);
   }
 
   public void testReadFromSortedMap() {
-    FlyweightMapStorage mapStorage = new FlyweightMapStorage();
-    mapStorage.readFromSortedMap(areaCodeMap);
-
     assertEquals(331402, mapStorage.getPrefix(0));
     assertEquals(331434, mapStorage.getPrefix(1));
     assertEquals(334910, mapStorage.getPrefix(2));
     assertEquals(334911, mapStorage.getPrefix(3));
 
-    String desc = mapStorage.getDescription(0);
-    assertEquals("Paris", desc);
-    assertTrue(desc == mapStorage.getDescription(1));  // Same identity.
+    assertEquals("Paris", mapStorage.getDescription(0));
+    assertSame(mapStorage.getDescription(0), mapStorage.getDescription(1));
 
-    desc = mapStorage.getDescription(2);
-    assertEquals("Marseille", desc);
-    assertTrue(desc == mapStorage.getDescription(3));  // Same identity.
+    assertEquals("Marseille", mapStorage.getDescription(2));
+    assertSame(mapStorage.getDescription(2), mapStorage.getDescription(3));
+  }
+
+  public void testReadFromSortedMapSupportsEmptyDescription() {
+    assertEquals(334912, mapStorage.getPrefix(4));
+    assertEquals(334913, mapStorage.getPrefix(5));
+
+    assertEquals("", mapStorage.getDescription(4));
+    assertSame(mapStorage.getDescription(4), mapStorage.getDescription(5));
   }
 
   public void testWriteAndReadExternal() throws IOException {
-    FlyweightMapStorage mapStorage = new FlyweightMapStorage();
-    mapStorage.readFromSortedMap(areaCodeMap);
-
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
     mapStorage.writeExternal(objectOutputStream);
@@ -74,7 +86,22 @@
     newMapStorage.readExternal(objectInputStream);
 
     String expected = mapStorage.toString();
-    assertFalse(expected.length() == 0);
     assertEquals(expected, newMapStorage.toString());
   }
+
+  public void testReadExternalThrowsIOExceptionWithMalformedData() throws IOException {
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+    objectOutputStream.writeUTF("hello");
+    objectOutputStream.flush();
+    ObjectInputStream objectInputStream =
+        new ObjectInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));
+    FlyweightMapStorage newMapStorage = new FlyweightMapStorage();
+    try {
+      newMapStorage.readExternal(objectInputStream);
+      fail();
+    } catch (IOException e) {
+      // Exception expected.
+    }
+  }
 }
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/MappingFileProviderTest.java b/java/test/com/android/i18n/phonenumbers/geocoding/MappingFileProviderTest.java
index 95b6184..78e42be 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/MappingFileProviderTest.java
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/MappingFileProviderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java b/java/test/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java
index 553d43c..feb2f36 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Google Inc.
+ * Copyright (C) 2011 The Libphonenumber Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -47,6 +47,8 @@
       new PhoneNumber().setCountryCode(1).setNationalNumber(6509600000L);
   private static final PhoneNumber US_NUMBER3 =
       new PhoneNumber().setCountryCode(1).setNationalNumber(2128120000L);
+  private static final PhoneNumber US_NUMBER4 =
+      new PhoneNumber().setCountryCode(1).setNationalNumber(6174240000L);
   private static final PhoneNumber US_INVALID_NUMBER =
       new PhoneNumber().setCountryCode(1).setNationalNumber(123456789L);
   private static final PhoneNumber BS_NUMBER1 =
@@ -61,8 +63,6 @@
     // a result, the country name of United States in simplified Chinese is returned.
     assertEquals("\u7F8E\u56FD",
         geocoder.getDescriptionForNumber(US_NUMBER1, Locale.SIMPLIFIED_CHINESE));
-    assertEquals("Stati Uniti",
-        geocoder.getDescriptionForNumber(US_NUMBER1, Locale.ITALIAN));
     assertEquals("Bahamas",
         geocoder.getDescriptionForNumber(BS_NUMBER1, new Locale("en", "US")));
     assertEquals("Australia",
@@ -71,6 +71,13 @@
                                                       new Locale("en", "US")));
   }
 
+  public void testGetDescriptionForNumberWithMissingPrefix() {
+    // Test that the name of the country is returned when the number passed in is valid but not
+    // covered by the geocoding data file.
+    assertEquals("United States",
+        geocoder.getDescriptionForNumber(US_NUMBER4, new Locale("en", "US")));
+  }
+
   public void testGetDescriptionForNumber_en_US() {
     assertEquals("CA",
         geocoder.getDescriptionForNumber(US_NUMBER1, new Locale("en", "US")));
@@ -91,7 +98,21 @@
         geocoder.getDescriptionForNumber(KO_NUMBER1, Locale.KOREAN));
     assertEquals("\uC778\uCC9C",
         geocoder.getDescriptionForNumber(KO_NUMBER2, Locale.KOREAN));
-    assertEquals("\uC81C\uC8FC",
+  }
+
+  public void testGetDescriptionForFallBack() {
+    // No fallback, as the location name for the given phone number is available in the requested
+    // language.
+    assertEquals("Kalifornien",
+        geocoder.getDescriptionForNumber(US_NUMBER1, Locale.GERMAN));
+    // German falls back to English.
+    assertEquals("New York, NY",
+        geocoder.getDescriptionForNumber(US_NUMBER3, Locale.GERMAN));
+    // Italian falls back to English.
+    assertEquals("CA",
+        geocoder.getDescriptionForNumber(US_NUMBER1, Locale.ITALIAN));
+    // Korean doesn't fall back to English.
+    assertEquals("\uB300\uD55C\uBBFC\uAD6D",
         geocoder.getDescriptionForNumber(KO_NUMBER3, Locale.KOREAN));
   }
 
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1201_de b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1201_de
new file mode 100644
index 0000000..2a516e0
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1201_de
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1650_de b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1650_de
new file mode 100644
index 0000000..1fa2f0f
--- /dev/null
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/1650_de
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/82_ko b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/82_ko
index cbc3017..dfa91c3 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/82_ko
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/82_ko
Binary files differ
diff --git a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/config b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/config
index 0731ac8..aab8c13 100644
--- a/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/config
+++ b/java/test/com/android/i18n/phonenumbers/geocoding/testing_data/config
Binary files differ
