private final String decode(final String val) throws SAXException {
			StringBuffer sb = new StringBuffer(val.length());
			try {
				int n = 0;
				while (n < val.length()) {
					char c = val.charAt(n);
					if (c == '\\') {
						n++;
						c = val.charAt(n);
						if (c == '\\') {
							sb.append('\\');
						} else {
							n++; // skip 'u'
							sb.append((char) Integer.parseInt(
									val.substring(n, n + 4), 16));
							n += 3;
						}
					} else {
						sb.append(c);
					}
					n++;
				}
			} catch (RuntimeException ex) {
				throw new SAXException(ex);
			}
			return sb.toString();
		}