### Question:
Reader { static CharSequence unescape(final CharSequence text, int start, final int stop) throws ParseException { int i = CharSequences.indexOf(text, '\\', start, stop); if (i < 0) { return text.subSequence(start, stop); } final StringBuilder buffer = new StringBuilder(stop - start - 1); do { buffer.append(text, start, i); if (++i >= stop) { throw new ParseException("Unexpected end of text.", stop); } final char c = text.charAt(i); final char r; start = ++i; switch (c) { default: r = c; break; case 'b': r = '\b'; break; case 'f': r = '\f'; break; case 'n': r = '\n'; break; case 'r': r = '\r'; break; case 't': r = '\t'; break; case 'u': { final int s = Math.min(start + Writer.UNICODE_LENGTH, stop); while (i < s && Characters.isHexadecimal(text.charAt(i))) i++; final String u = text.subSequence(start, i).toString(); try { r = (char) Integer.parseInt(u, 16); } catch (NumberFormatException e) { throw new ParseException("Invalid character code: " + u, start); } start = i; break; } } buffer.append(r); } while ((i = CharSequences.indexOf(text, '\\', start, stop)) >= 0); return buffer.append(text, start, stop).toString(); } Reader(final CharSequence text);   }### Answer:
@Test public void testUnescape() throws ParseException { assertEquals("Nothing to escape.", unescape("Nothing to escape.")); assertEquals("Bell (\b) and tab (\t)", unescape("Bell (\\b) and tab (\\t)")); assertEquals("Ignored escape: i", unescape("Ignored escape: \\i")); assertEquals("Unicode A and B", unescape("Unicode \\u0041 and \\u042")); assertEquals("Backslash (\\)", unescape("Backslash (\\\\)")); }