docs: @Pure
  	@SuppressWarnings("checkstyle:magicnumber")
  	public static String parseHTML(String html) {
  		if (html == null) {
  			return null;
  		}
  		final Map<String, Integer> transTbl = getHtmlToJavaTranslationTable();
  		assert transTbl != null;
  		if (transTbl.isEmpty()) {
  			return html;
  		}
  		final Pattern pattern = Pattern.compile("[&](([a-zA-Z]+)|(#x?[0-9]+))[;]"); //$NON-NLS-1$
  		final Matcher matcher = pattern.matcher(html);
  		final StringBuilder result = new StringBuilder();
  		String entity;
  		Integer isoCode;
  		int lastIndex = 0;
  		while (matcher.find()) {
  			final int idx = matcher.start();
  			result.append(html.substring(lastIndex, idx));
  			lastIndex = matcher.end();
  			entity = matcher.group(1);
  			if (entity.startsWith("#x")) { //$NON-NLS-1$
  				try {
  					isoCode = Integer.valueOf(entity.substring(2), 16);
  				} catch (Throwable exception) {
  					isoCode = null;
  				}
  			} else if (entity.startsWith("#")) { //$NON-NLS-1$
  				try {
  					isoCode = Integer.valueOf(entity.substring(1));
  				} catch (Throwable exception) {
  					isoCode = null;
  				}
  			} else {
  				isoCode = transTbl.get(entity);
  			}
  
  			if (isoCode == null) {
  				result.append(matcher.group());
  			} else {
  				result.append((char) isoCode.intValue());
  			}
  		}
  		if (lastIndex < html.length()) {
  			result.append(html.substring(lastIndex));
  		}
  		return result.toString();
  	}