code: public void unread(byte[] b, int off, int len) throws IOException {
          ensureOpen();
          if (len > pos) {
              throw new IOException("Push back buffer is full");
          }
          pos -= len;
          System.arraycopy(b, off, buf, pos, len);
      }
docs: Pushes back a portion of an array of bytes by copying it to the front
  of the pushback buffer.  After this method returns, the next byte to be
  read will have the value <code>b[off]</code>, the byte after that will
  have the value <code>b[off+1]</code>, and so forth.
  
  @param b the byte array to push back.
  @param off the start offset of the data.
  @param len the number of bytes to push back.
  @exception IOException If there is not enough room in the pushback
  buffer for the specified number of bytes,
  or this input stream has been closed by
  invoking its {@link #close()} method.
  @since     JDK1.1