code: private int realRead(byte[] b, int off, int len) throws IOException {
        int lenToRead = rateHelper.take(len);
  
        int rd = real.read(b, off, lenToRead);
        if (rd != lenToRead)
           rateHelper.giveBack(lenToRead - rd);
        return rd;
     }
docs: len <= num