code: public static String decode(final String str) {
  		if (str == null) {
  			return "";
  		}
  		StringBuilder sb = new StringBuilder();
  		for (int i = 0; i < str.length(); i++) {
  			char c = str.charAt(i);
  			int codepoint = str.codePointAt(i);
  			// Basic ASCII
  			if (codepoint < 0x80) {
  				sb.append(c);
  				continue;
  			}
  			// Characters in Private Use Area and above are ignored
  			if (codepoint > 0xffff)
  				continue;
  			int section = codepoint >> 8; // Chop off the last two hex digits
  			int position = codepoint % 256; // Last two hex digits
  			String[] table = getCache(section);
  			if (table != null && table.length > position) {
  				sb.append(table[position]);
  			}
  		}
  		return sb.toString().trim();
  	}
docs: Transliterate an Unicode object into an ASCII string.
  
  @param str Unicode String to transliterate.
  @return ASCII string.