public Collection<QResult<I, R>> waitForResults(long timeout, TimeUnit unit)
			throws InterruptedException {
		lock.lockInterruptibly();
		try {
			tracker.waitUntilDone(timeout, unit);

			Collection<QResult<I, R>> returnValue = resultList;
			resultList = new LinkedList<>();
			return returnValue;
		}
		finally {
			lock.unlock();
		}
	}
Waits up to the specified time for scheduled jobs to complete.  The results of all completed
jobs will be returned if this queue has been told to collect results.  At the time that this
returns, there may still be work to process.  The returned list will contain as much work
as has been processed when the wait has finished.  Repeated calls to this method will not
return results from previous waits.
<P>
You can still call this method to wait for items to be processed, even if you did not
specify to collect results.  In that case, the list returned will be empty.

@param timeout the timeout
@param unit the timeout unit
@return the list of QResult objects that have all the results of the completed jobs.
@throws InterruptedException if this call was interrupted.
Ghidra/Framework/Generic/src/main/java/generic/concurrent/ConcurrentQ.java