private int readInternal() throws IOException {
  int c;
  if (peekc == NO_CHAR) {
    c=reader.read();
  }
 else {
    c=peekc;
    peekc=NO_CHAR;
    if (c == '\\') {
      return c;
    }
  }
  if (c != '\\') {
    return c;
  }
  c=reader.read();
  if (c != 'u') {
    peekc=c;
    return '\\';
  }
  do {
    c=reader.read();
  }
 while (c == 'u');
  int nchars=0;
  if (c >= 0) {
    code[nchars++]=(char)c;
    while (nchars < 4) {
      int n=reader.read(code,nchars,4 - nchars);
      if (n < 0) {
        break;
      }
      nchars+=n;
    }
  }
  String s=new String(code,0,nchars);
  if (nchars == 4) {
    try {
      int i=Integer.parseInt(s,16);
      if (i >= 0) {
        return (char)i;
      }
    }
 catch (    NumberFormatException e) {
    }
  }
  throw new IOException("illegal Unicode escape: \\u" + s);
}

private int readInternal ( ) throws IOException { int c ; if ( peekc == NO_CHAR ) { c = reader . read ( ) ; } else { c = peekc ; peekc = NO_CHAR ; if ( c == '\\' ) { return c ; } } if ( c != '\\' ) { return c ; } c = reader . read ( ) ; if ( c != 'u' ) { peekc = c ; return '\\' ; } do { c = reader . read ( ) ; } while ( c == 'u' ) ; int nchars = 0 ; if ( c >= 0 ) { code [ nchars ++ ] = ( char ) c ; while ( nchars < 4 ) { int n = reader . read ( code , nchars , 4 - nchars ) ; if ( n < 0 ) { break ; } nchars += n ; } } String s = new String ( code , 0 , nchars ) ; if ( nchars == 4 ) { try { int i = Integer . parseInt ( s , 16 ) ; if ( i >= 0 ) { return ( char ) i ; } } catch ( NumberFormatException e ) { } } throw new IOException ( "illegal Unicode escape: \\u" + s ) ; }
implements read ( ) without checking if this reader is closed .
