code: protected int unicodeEscapeLexer(int c) throws IOException {
          int ret = 0;
          // ignore 'u' (assume c==\ now) and read 4 hex digits
          c = in.read();
          code.clear();
          try {
              for (int i = 0; i < 4; i++) {
                  c = in.read();
                  if (isEndOfFile(c) || isEndOfLine(c)) {
                      throw new NumberFormatException("number too short");
                  }
                  code.append((char) c);
              }
              ret = Integer.parseInt(code.toString(), 16);
          } catch (NumberFormatException e) {
              throw new IOException(
                      "(line " + getLineNumber() + ") Wrong unicode escape sequence found '" + code.toString() + "'" + e.toString());
          }
          return ret;
      }
docs: Decodes Unicode escapes.
  
  Interpretation of "\\uXXXX" escape sequences
  where XXXX is a hex-number.
  @param c current char which is discarded because it's the "\\" of "\\uXXXX"
  @return the decoded character
  @throws IOException on wrong unicode escape sequence or read error