code: public synchronized int read(byte b[], int off, int len) throws IOException
      {
          int avail=_avail-_pos;
          if (avail <=0)
          {
              fill();
              avail=_avail-_pos;
          }
  
          if (avail <=0)
              len=-1;
          else
          {
              len=(avail < len) ? avail : len;
              System.arraycopy(_buf,_pos,b,off,len);
              _pos +=len;
          }
          
          return len;
      }
docs: /* ------------------------------------------------------------