private boolean refill() throws IOException
boolean refill() throws IOException
  private boolean refill() throws IOException  {    if (markpos < 0)      count = pos = 0;    else if (markpos > 0)      {        // Shift the marked bytes (if any) to the beginning of the array	// but don't grow it.  This saves space in case a reset is done	// before we reach the max capacity of this array.        System.arraycopy(buf, markpos, buf, 0, count - markpos);	count -= markpos;	pos -= markpos;	markpos = 0;      }    else if (marklimit >= buf.length)	// BTW, markpos == 0      {	// Need to grow the buffer now to have room for marklimit bytes.	// Note that the new buffer is one greater than marklimit.	// This is so that there will be one byte past marklimit to be read	// before having to call refill again, thus allowing marklimit to be	// invalidated.  That way refill doesn't have to check marklimit.	byte[] newbuf = new byte[marklimit + 1];	System.arraycopy(buf, 0, newbuf, 0, count);	buf = newbuf;      }    int numread = super.read(buf, count, buf.length - count);    if (numread < 0)	// EOF      return false;    count += numread;    return true;  }