Oct 10, 2012: libphonenumber-5.2
* Code changes:
 - Adds isNumberGeographical() method.
 - Adds getRegionCodesForCountryCode() method.
 - Fixing issue with getSupportedGlobalNetworkCallingCodes()
   [http://code.google.com/p/libphonenumber/issues/detail?id=202]
 - Ensures that returned collections are unmodifiable where necessary
   [there is a very slight risk that this may break existing users who were relying on being able
   to modify these collections, but doing so would be breaking lots of other assumptions that this
   library makes - if you need to modify any affected collections you must copy them first]
* Metadata changes:
 - Updated metadata for region code(s): DE, GR, HR, OM, SB, ZA
 - Removed metadata for region code: AN (Netherlands Antilles)
 - Updated geocoding data for country calling code(s): 30 (el, en)

Sep 27, 2012: libphonenumber-5.1.4
* Metadata changes:
 - Updated metadata for region code(s): AU, EC, KH, LB, TN, US

Sep 17, 2012: libphonenumber-5.1.3
* Metadata changes:
 - Updated metadata for region code(s): EG, LA, LB, LI, PY
 - Updated metadata for non-geographical calling codes: 800, 808, 888, 979
 - Updated geocoding data for country calling code(s): 98 (en), 1 (en)

Sep 11, 2010: libphonenumber-5.1.2
* Bug fix:
 - Fixing regression in AsYouTypeFormatter where it no longer worked for numbers entered in national
   format for countries with no national prefix, e.g. Spain.

Sep 5, 2010: libphonenumber-5.1.1
* Code changes:
  - Added better logging/exception handling for catching cases where metadata is invalid/missing.

Sep 3, 2012: libphonenumber-5.1
* Code changes:
 - Inserting a space after the national prefix in the AsYouTypeFormatter when formatting numbers in
   national format, if the formatting rules for that country dictate that a space is appropriate.
 - Format emergency numbers and short-codes as a block in the AsYouTypeFormatter.
* Metadata changes:
 - Updated metadata for region code(s): BF, BG, DZ, GA, IT, JP, KW, PF

Aug 20, 2012: libphonenumber-5.0.3
* Metadata changes:
 - New alternate formatting data for country calling code(s): 43
 - Updated metadata for region code(s): AT, BF, JO, NG, RU, SL
 - New geocoding data for country calling code(s): 62 (en, id), 98 (fa)

Aug 07, 2012: libphonenumber-5.0.2
* Metadata changes:
 - Updated metadata for region code(s):
   BF, CN, DJ, IL, JO, KH, KZ, MA, MT, MV, MY, NC, NG, SD, SK, SN, TL, UZ
 - New geocoding data for country calling code(s): 7 (ru), 98 (en)
 - Updated geocoding data for country calling code(s): 7 (en)

July 26th, 2012: libphonenumber-5.0.1
* Metadata changes
 - CL, DE ,IN, KR, US
 - New geocoding data for country calling codes 40, 57, 66, 82, 91.
 - Fixed comments for 353 (IE).

July 12th, 2012: libphonenumber-5.0
* Code changes:
 - Support for alternate formats when finding phone numbers.
 - Allowing two-digit numbers to be parsed if they are entered in national-format with no
   punctuation
* Metadata changes
 - IL, GA
* Other
 - Reflowed this file to 100 char width to make it unambiguous as to what the standard should be.

July 6th, 2012: libphonenumber-4.9.1
* Metadata changes
 - AR, BA, BF, CR, DE, EC, ES, KZ, MK, NC, NG, PF, SB, UZ, non-geo entity 882
 - Geocoding data updates for country calling codes 54 (AR) and 81 (JP), new data for 234 (NG)

June 21st, 2012: libphonenumber-4.9
* Bug fix
 - formatInOriginalFormat fixed not to add a star sign if it was not present originally.
* Metadata changes
 - BF, CZ, ES, KW
 - Non-geographical entities with calling code 882 (BebbiCell, Maritime Communications, Oration
   Technologies, Telespazio and Thuraya)
 - Geocoding data updates for country calling codes 221, 224, 226, 242, 244, 245
* Functionality changes:
 - Minimum allowed length for a national significant number (NSN) when parsing changed from 3 to 2.
 - Support parsing of RFC3966-formatted strings with an isdn-subaddress or extra parameters
   specified.
 - Allow soft hyphen to appear in phone numbers (\u00AD)
* Testing changes:
 - Add extra unit tests for non-geographical phone number entities
 - ExampleNumbersTest testEmergency tests now uses ShortNumberUtil

June 14th, 2012: libphonenumber-4.8.5
* Metadata update only:
 - AC, CR, DE, DK, IL, IN, IS, KH, LI, LR, MA, MD, MK, PA, SA, SG, SS

June 6th, 2012: libphonenumber-4.8.4
* Metadata update only:
 - AE, RO
 - Non-geographical entity with calling code 881 (Iridium)

May 30th, 2012: libphonenumber-4.8.3
* Metadata update only:
 - AN, ET, KW, MN, SX, TC, TL

May 16th, 2012: libphonenumber-4.8.2
* Metadata update only:
 - BH, CR, EE, JO, KW, LA, QA, SI, TH
 - Non-geographical entity with calling code 878 (VISIONng)

May 8th, 2012: libphonenumber-4.8.1
* Metadata update only:
 - CA, CI, EG, HK, IN, IR, LB, MA, ME, MM
 - Non-geographical entity with calling code 870 (Inmarsat)
 - Geocoding updates for country calling codes 1 for new area codes

April 24th, 2012: libphonenumber-4.8
* Functionality changes
 - RFC format now outputs a number starting with "tel:"
 - Parsing support for numbers in RFC format that contain the country info in the "phone-context"
   part
 - Support for obtaining area codes for Italy, Vatican City, San Marino
* Metadata changes
 - AM, AO, AR, BE, BF, CD, EG, GH, GM, GN, IN, IR, IT, JO, LA, LC, MD, MS, NO, PA, PK, SI, SJ, SO,
   SY, TC, TN, UZ, VN, ZW
 - Geocoding updates for country calling codes 1, 20, 233, 31, 33, 352, 374, 54, 56, 86
* Refactoring of matching functions, including moving them to PhoneNumberMatcher.

March 16th, 2012: libphonenumber-4.7
* Bug fixes
 - Now return "too long" for input that is longer than 250 chars when parsing
* Metadata changes
 - AC,AM,AT,AZ,BF,BR,BY,BZ,CR,CU,DE,DJ,EE,EG,ET,GA,GH,HK,HN,ID,IN,JP,KE,KG,KH,KR,KW,KY,LB,LU,MA,MD,
   MK,NA,NE,NZ,SA,SB,SC,SE,SL,SN,UZ
* Refactoring of test classes so that tests requiring the test metadata to be loaded have a common
  base class which handles this.

February 9th, 2012: libphonenumber-4.6
* Bug fixes
 - Fix for formatByPattern to enable RFC formatting to work
 - Fix for RFC formatting to work even when the international formatting rule starts with
   punctuation
 - Logging consistency changes - some warnings are no longer printed, others have become only
   WARNINGS
 - Fix for isValidNumberForRegion potentially throwing a NPE
 - Parsing Israeli * numbers written in international format now works
 - PhoneNumberMatcher doesn't match timestamps as phone-numbers
* Metadata changes
 - Updates for AN, AX, BF, BJ, BR, BS, DJ, FI, IN, LV, MW, RS, SC, VN
 - New countries supported: SS (South Sudan), CW (Curaçao) and BQ (Bonaire, Sint Eustatius and Saba)
* Refactoring of the private formatting functions in PhoneNumberUtil to ensure names are more
  descriptive and to reduce code duplication.

January 19th, 2012: libphonenumber-4.5
* Code changes
 - Support for non-geographical country calling codes (e.g. +800).
 - Modify formatInOriginalFormat to not insert/remove/modify digits in the original number passed
   in.
 - Fix formatOutOfCountryKeepingAlphaChars to not throw a NPE.

* Metadata changes
 - Updates for AR, BH, CI, CN, CR, DE, GA, IL, JO, JP, KE, KZ, LB, LK, LT, MV, MW, MZ, NA, NL, NZ,
   PL, RO, SA, SV, TM, UG, US
 - New country calling codes: 800, 808, 883, 888, 979
 - Geocoding data updates: AR, US

December 9th, 2011: libphonenumber-4.4
* Code changes
 - Support for Voicemail numbers
 - Support prefixes "xt" and "xtn" to indicate extensions of phone numbers
 - Change formatInOriginalFormat to use raw_input for numbers with incorrect leading zeroes, instead
   of all invalid numbers.

* Metadata changes
 - Updates for AR, BD, CH, CI, IL, IR, IS, IT, JP, KW, LR, MM, NG, SA, SC, UZ

November 24th, 2011: libphonenumber-4.3
* Code changes
 - Fix the problems with AYTF crashing for longer numbers entered with +CountryCode, and incorrectly
   removing national prefix for some numbers.
 - Improve PhoneNumberMatcher to not match numbers ending with '%'.
 - Fix formatNumberForMobileDialing to handle Israeli star numbers, Peruvian and Colombian numbers.
 - Modify formatInOriginalFormat to use the raw input if we don't have a formatting pattern for a
   number.
 - Simple offline geocoding function which takes into account the user's region.

* Metadata changes
 - Updates for CR, GN, JP, KE, PL, SG, SR, SX, TH, TK

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
 - Fixed AYTF to not accept plus signs in the middle of input
 - PhoneNumberMatcher improvements - added STRICT_GROUPING and EXACT_GROUPING levels, numbers
   followed/preceded by a currency symbol will not match, multiple numbers separated by phone-number
   punctuation will now match. ", " is no longer accepted as an extension symbol when matching, only
   when parsing. "x" is only accepted as a carrier code or extension marker, not otherwise.
 - Changes to handling of leading zeroes - these will not be silently ignored anymore, but will be
   stored as part of the number.
 - PhoneNumberOfflineGeocoder - new method to get the description of a number that assumes the
   validity of the number has already been checked and will not re-verify it.
 - Split geocoding US binary data into multiple files.

* Metadata changes
 - Updates: AR, AT, AU, AZ, BE, BF, BH, BY, CA, CN, CO, CR, HT, HU, IT, KG, KH,
   LB, LI, ME, NC, RS, SE, TT, US, VG, ZA
 - New geocoding data for: AL, AM, AO, BF, BJ, BW, CD, CI, CZ, DZ, EE, GH, GM,
   GN, GR, GW, HU, IS, KE, LK, LS, LT, LU, LV, MD, MG, MR, NA, PE, QN, SD, SK,
   SN, SZ, TN, VE, VN, ZA, ZW
 - Updated geocoding data for: GB, PT, US
 - Revised sorting of geocoding data

July 5th, 2011
* Code changes
 - Refactored AreaCodeMap to minimize binary and memory footprint by using 2 different strategies.
 - Refactored BuildMetadataFromXml.java and added unittests.

* Metadata changes
 - Regenerate binaries for all existing area code mapping data with smaller sizes.
 - Added city-level area code data mapping for US and Canada.

June 29th, 2011
* Code changes
 - Fixed issue 38, issue 39, issue 41 and issue 43

* Metadata changes
 - Added phone number area mapping files for
   - JP in Japanese
   - FR in French
   - TW in English, Simplified and Traditional Chinese
   - RU in English
   - IT in English and Italian
   - PT in Portuguese
   - TR in English and Turkish
   - CH in English, German, French and Italian
 - Updates: CR, GE, IT, JP, KW, MH, MP, MU, PE, PM, RW, TG, TJ, TK

June 14th, 2011
* Code changes
 - Added PhoneNumberOfflineGeocoder, supporting classes and their unittests.
 - Added GenerateAreaCodeData to transform phone number area mapping files from text files to binary
   files.
 - Modified PhoneNumberParserServlet.java and phonenumberparser.jsp to incorporate
   PhoneNumberOfflineGeocoding in the appengine demo.

* Metadata changes
 - Added phone number area mapping files for NANPA countries and GB in English, NL in Dutch, AR, CL
   and ES in Spanish, AT and DE in German, SE in Swedish, BR in Portuguese, KR in English, Korean,
   Simplified and Traditional Chinese, and CN in Simplified Chinese.

June 10th, 2011
* Code changes:
 - Fixes for PhoneNumberMatcher to be more restrictive in valid mode and not match numbers
   surrounded by Latin characters. This ensures, for example, the string abc123456789acg will not be
   marked as a phone numbers.
 - Enable PhoneNumberUtil to handle all digits, rather than a subset
 - Fix for AYTF issue36 and improvement for US AYTF behaviour.
* Metadata changes:
 - Updates: BG, EG, ES, GH, PF, SC, SY, VA

May 24th, 2011
* Code changes:
 - Phonenumber now implements Serializable.
 - findNumbers doesn't accept numbers with mis-matched brackets as phone-numbers
 - An offline phone number geocoder has been added. The current implementation just returns the
   region name for the phone number; more detailed geocoding will be added later.
* Metadata changes:
 - New countries: GF, KP, NC, PA, PF, PW, PY, SB, SR, TO, UY, VU
 - Updates: CY, CZ, ES, GB, GQ, JM, MQ, TN, VI

May 9th, 2011
* Code changes:
 - Fixed potential for a null-ptr exception in getExampleNumber
 - Potential speed improvement with replacement of StringBuffer with StringBuilder
* Metadata changes
 - Changed way that international formats are specified to make it easier to do so
 - New countries: AX, CC, CX, WF
 - Updates: AM, AR, AU, AW, CN, CO, CR, DM, EC, ET, FI, FJ, GH, IN, JP, KE, KM,
   KN, LR, MD, MQ, MX, NP, PH, SC, SE, SM, SN, SY, UG, US, VC, VI, ZM

Apr 26th, 2011
* Code changes:
 - Improved PhoneNumberMatcher for cases with other numbers before or after the phone number.
 - Improved AsYouTypeFormatter not to use formatting rules containing non-formatting characters
   (e.g. '*' in Israeli star numbers).
* Metadata changes:
 - New countries: FJ, FM, GY, NF, NI, NR, TV.
 - Updates: AM, AZ, BF, BW, BZ, CI, CR, GB, GP, HK, JM, KH, LB, LY, MV, PE, PK, SZ, TJ, US.
* Minor documentation updates

Apr 11th, 2011
* Bug fixes:
 - Adding date exclusion pattern in PhoneNumberMatcher.
 - Fixing bug with selecting a suitable region for numbers with leading zeros where mutiple regions
   for that country code are possible.
* Metadata changes:
 - Updates: AG, AI, AS, BB, BM, BS, CA, DM, DO, ET, FO, GD, GE, GU, IN, JM, KN, KY, LC, MN, MP, MR,
   MS, NO, PR, TC, TR, TT, US, VC, VG, VI
 - New countries: CK, FK, GT, IO, KI, SJ, SV
* Documentation updates and some small refactoring to AsYouTypeFormatter

Mar 31st, 2011
* New functionality:
 - Can parse and format numbers in RFC-3966 format.
 - Added isAlphaNumber to check to see if a number is a "vanity" or "alpha" number
 - Can format a number made up of alpha-characters in an "out-of-country" format (e.g. 0011 1
   800-SIX-FLAG to dial an American alpha-number from Australia).
* Code changes:
 - Renamed private vars, private methods and fixed comments to try and differentiate between country
   (calling) codes and region codes.
 == Non-backwards-compatible API changes: ==
 - Renamed getSupportedCountries to getSupportedRegions, as this more accurately reflects that the
   library is based around region codes.
 - getNationalSignificantNumber is no longer a static method, but is instead an instance method.
* Metadata changes:
 - Bug-fixes and updates for AU, AZ, EE, FI, IN, JO, KW, KZ, MV, RU, RR, VA
 - New country: ME

Mar 22nd, 2011
* Metadata changes:
 - New mobile-number pattern for AU

Mar 10th, 2011
* New functionality:
 - New function to format a number with the preferred domestic carrier code used when parsing,
   falling back to a default calling code otherwise (formatNationalNumberWithPreferredCarrierCode).
 - We now store the preferred domestic carrier code used when the user calls parseAndKeepRawInput
 - New functionality to extract phone-numbers from text (findNumbers). This is just the first
   version - it does not extract ALPHA numbers such as 0800 CALL ME, or numbers where alternate
   endings are specified (such as 03-331 6005/6006).
* Code changes:
 - Tidying up the test file to use several pre-defined phone number constants
 - Fixing several lint errors
 - Added javadoc to formatNationalNumberWithCarrierCode
 - Fixed bug where a null pointer exception was thrown when getAsYouTypeFormatter was called with an
   invalid region code
 - Improved AsYouTypeFormatter to deal with countries with variable-length patterns such as LU
* Metadata changes:
 - Bug-fixes and updates for the following countries: BF, BO, BR, CL, CO, CR, DK, FO, GE, KR, KW,
   LA, LU, MU, SC, SH, TR, VE
 - New country: SH

Mar 10th, 2011
* Code changes:
  - releasing the code to run the demo on localhost or appengine.

Mar 7th, 2011
* Metadata changes:
 - Adding support for AC

Feb 11th, 2011
* Metadata changes:
 - Update UAN number ranges for IM and JE.

Feb 9th, 2011
* Code changes:
  - Better isNumberMatch method. This will now recognise numbers starting with a national prefix as
    an NSN_MATCH, instead of SHORT_NSN_MATCH.
    == Note Non-backwards-compatible API change here! ==
      This will no longer throw a NumberParseException - instead we will return NOT_A_NUMBER if one
      or other of the numbers provided do not match.
  - New number-type UAN now supported in the code. This represents Company Numbers or Universally
    Accessible Numbers.
* Metadata changes:
  - Bug-fixes and updates for the following countries: AG, AZ, BA, BE, CA, CU, ES, FI, GB, GD, GG,
    IE, IL, IM, IN, IR, IT, JE, JP, KR, KW, NG, NZ, PK, PS, PT, RU, SE, SG, SY, US
  - New countries: CO, LU, LY, MC, SM
  - Addition of "Personal Number" ranges to all NANPA countries

Jan 31st, 2011
* Code changes:
  - Introducing equals() and hashCode() methods for the Phonenumber.PhoneNumber class

Jan 28th, 2011
* Code changes:
  - Fixing critical bug with non-Android-compatible code. isEmpty() was being used and CANON_EQ in
    reg-ex matches.

Jan 20th, 2011
* Code improvements:
  - Handle null phone-numbers when parsing by throwing a NumberParseException.
  - Handle extension written with an accented "o", as per Spanish, when parsing.
  - Handle U+30FC dashes as phone-number punctuation.
  - Allow "ZZ" or null regions to be specified for numbers starting with a full-width "+" symbol, or
    with other characters (such as whitespace) before the leading +.
  - new getLengthOfNationalDestinationCode function
* Metadata changes:
  - New types of numbers introduced: UAN (universal or "company" numbers) and short codes. Note that
    "generalDesc" patterns do not encompass short-codes.  No code-support for these has been
    introduced as of yet. We are also now enabling the collection of data for information such as
    area-code-optional, and no-international-dialling ranges.
  - Data updates as per ITU notifications/bug fixes for the following countries: AM, BH, CD, CG, CR,
    DE, DJ, EE, GB, GN, HU, IE, JO, JP, LB, LR, MA, MK, MN, MR, NA, PG, SC, SG, SO, SZ, VN, ZA, ZW
  - Data added for the following countries: BZ, CU, EC, FO, GI, HN, HT, LK, MT, MV, NU, PS, SD
  - Indentation fixes in reg-exes for the following countries: BG, GB
  - Allow nationalPrefixForParsing to be specified for countries with no national prefix, to handle
    possible carrier prefixes

Jan 3rd, 2011
* Metadata changes:
  - Updates to JE
  - Updated comments for GB/GG/IM/JE

November 25th, 2010
* Metadata changes:
  - Updates to existing countries: AD, AG, AI, AN, AS, BB, BG, BM, BS, BW, CA, DM, DO, GD, GH, GM,
    GU, IN, JM, KN, KY, KZ, LB, LC, MP, MS, PR, SY, TC, TT, TZ, US, VC, VG, VI.
  - Reorganize reg-exes for better readability.
  - Updated comments.

October 22nd, 2010
* Metadata changes:
  - Updates to existing countries: AE, GB, GG, IM, JE

October 15th, 2010
* Code improvements:
  - Allowed parsing of numbers that start with "++" or a full-width "+" symbol
  - Allowed reg-exes for national and possible number patterns to have white space in them in the
    source XML file
  - Added a more useful toString method for the phone number proto class
* Metadata changes:
  - Updates to existing countries: AF, BF, BO, ES, GB, GG, IM, IS, JE, JE, JP, KR, PE, PT, RU, SE,
    TT, ZW
* Bug fixes:
  - Parsing empty strings with invalid region codes no longer throws a null pointer exception

September 4th, 2010
* Code improvement:
  - Added new phone number type: pager
* Metadata change:
  - update to existing country: GG, IM, JE, RS, RU
* Bug fixes:
  - ArrayOutOfBoundException in AsYouTypeFormatter.getRememberedPosition()
  - AsYouTypeFormatter for UK childline number

September 1st, 2010
* Bug fix on KZ metadata.

August 17th, 2010
* Code improvement:
  - Refactored BuildMetadataProtoFromXml.java into BuildMetadataFromXml.java and
    BuildMetadataProtoFromXml.java
  - Added BuildMetadataProtoFromXml.java and JSArrayBuilder.java
  - Refactored CountryCodeToRegionCodeMap and CountryCodeToRegionCodeMapForTesting into separate
    files.

August 16th, 2010
* Bug fixes
  - AsYouTypeFormatter for formatting Chinese geographical numbers entered in national format.
  - AsYouTypeFormatter for formatting Chinese 400/800 numbers entered in national format.
* Metadata change:
  - new countries: AM, AN, BH, GL, IS
  - adding national prefix 1 to all NANPA countries.
  - update to existing countries: BF, FR, UK, PK, RE

August 4th, 2010
* Further improve startup performance
  - Preload no country specific metadata at startup.
  - Stop creating the file containing mapping from country calling code to region code and loading
    it at startup; instead, do the initialization in PhoneNumberUtil.

July 31th, 2010

* Improve startup performance
  - Separate generated metadata binary file to one file per region
  - Preload US at start up, and load other region at the time when needed
  - Create a file containing mapping from country calling code to region code, and load it at
    startup
  - Same change also applied to unittests

July 30th, 2010
* Metadata change:
  - new country: TL
  - update to existing country: AZ, CN, FR, GH, JO, LA, PG, PK, QA, SZ, UA, VN

* Code improvement
  - China local number formatting for AsYouTypeFormatter
  - improve extension parsing to handle number in the form of +1 (645) 123 1234 ext. 910#
