code: @Nonnull
  	public static String[] extractEmailAddresses(@Nonnull final String emailAddressList) {
  		checkNonEmptyArgument(emailAddressList, "emailAddressList");
  		// recognize value tails and replace the delimiters there, disambiguating delimiters
  		final String unambiguousDelimitedList = COMMA_DELIMITER_PATTERN.matcher(emailAddressList).replaceAll("$1<|>");
  		final String withoutTrailingDelimeter = TRAILING_TOKEN_DELIMITER_PATTERN.matcher(unambiguousDelimitedList).replaceAll("");
  		return TOKEN_DELIMITER_PATTERN.split(withoutTrailingDelimeter, 0);
  	}
docs: Recognizes the tails of each address entry, so it can replace the [';] delimiters, thereby disambiguating the delimiters, since they can
  appear in names as well (making it difficult to split on [,;] delimiters.
  
  @param emailAddressList The delimited list of addresses (or single address) optionally including the name.
  @return Array of address entries optionally including the names, trimmed for spaces or trailing delimiters.