code: public long skip(long n) throws IOException {
          ensureOpen();
          if (n <= 0) {
              return 0;
          }
  
          long pskip = buf.length - pos;
          if (pskip > 0) {
              if (n < pskip) {
                  pskip = n;
              }
              pos += pskip;
              n -= pskip;
          }
          if (n > 0) {
              pskip += super.skip(n);
          }
          return pskip;
      }
docs: Skips over and discards <code>n</code> bytes of data from this
  input stream. The <code>skip</code> method may, for a variety of
  reasons, end up skipping over some smaller number of bytes,
  possibly zero.  If <code>n</code> is negative, no bytes are skipped.
  
  <p> The <code>skip</code> method of <code>PushbackInputStream</code>
  first skips over the bytes in the pushback buffer, if any.  It then
  calls the <code>skip</code> method of the underlying input stream if
  more bytes need to be skipped.  The actual number of bytes skipped
  is returned.
  
  @param      n  {@inheritDoc}
  @return     {@inheritDoc}
  @exception  IOException  if the stream does not support seek,
  or the stream has been closed by
  invoking its {@link #close()} method,
  or an I/O error occurs.
  @see        java.io.FilterInputStream#in
  @see        java.io.InputStream#skip(long n)
  @since      1.2