public void testUnescape() {
    assertEquals("\n", parser.unescape("\\n"));
    assertEquals(" ", parser.unescape("\\W"));
    assertEquals("\t", parser.unescape("\\t"));
    assertEquals(":", parser.unescape("\\:"));
    assertEquals(",", parser.unescape("\\,"));
    assertEquals("\"", parser.unescape("\\\""));
    assertEquals("\\", parser.unescape("\\\\"));
    assertEquals("()", parser.unescape("\\(\\)"));
    assertEquals("[]", parser.unescape("\\[\\]"));
    assertEquals("{}", parser.unescape("\\{\\}"));

    // pass-thru
    assertEquals("\n", parser.unescape("\n"));
    assertEquals(" ", parser.unescape(" "));
    assertEquals("\t", parser.unescape("\t"));
    assertEquals(":", parser.unescape(":"));
    assertEquals(",", parser.unescape(","));
    assertEquals("\"", parser.unescape("\""));
    assertEquals("()", parser.unescape("()"));
    assertEquals("[]", parser.unescape("[]"));
    assertEquals("{}", parser.unescape("{}"));

    assertEquals(
        "a\\bc:d,e[f)g{h i\tj\nk", parser.unescape("a\\\\b\\c\\:d\\,e\\[f\\)g\\{h\\Wi\\tj\\nk"));
  }