code: public long skip(long n) throws IOException {
          // charWidth will represent the number of bits to move
          // n leftward to get num of bytes to skip, and then move the result rightward
          // to get num of chars effectively skipped.
          // The trick with &'ing, as with elsewhere in this dcode, is
          // intended to avoid an expensive use of / that might not be optimized
          // away.
          int charWidth = (fEncoding >=4)?2:1;
          long bytesSkipped = fInputStream.skip(n<<charWidth);
          if((bytesSkipped & (charWidth | 1)) == 0) return bytesSkipped >> charWidth;
          return (bytesSkipped >> charWidth) + 1;
      }
docs: Skip characters.  This method will block until some characters are
  available, an I/O error occurs, or the end of the stream is reached.
  
  @param  n  The number of characters to skip
  
  @return    The number of characters actually skipped
  
  @exception  IOException  If an I/O error occurs