@Override
	public int read(byte b[], int off, int len) throws IOException {
		if (monitor.isCancelled()) {
			throw new IOCancelledException();
		}
		int n = in.read(b, off, len);
		smallCount += n;
		if (smallCount >= PROGRESS_INCREMENT) {
			count += smallCount;
			smallCount = 0;
			monitor.setProgress(count);
		}
		return n;
	}
Reads up to <code>len</code> bytes of data from this input stream 
into an array of bytes. This method blocks until some input is 
available. 
<p>
This method simply performs <code>in.read(b, off, len)</code> 
and returns the result.

@param      b     the buffer into which the data is read.
@param      off   the start offset of the data.
@param      len   the maximum number of bytes read.
@return     the total number of bytes read into the buffer, or
            <code>-1</code> if there is no more data because the end of
            the stream has been reached.
@exception  IOException  if an I/O error occurs.
Ghidra/Framework/Generic/src/main/java/ghidra/util/MonitoredInputStream.java