private LRUMap<Integer, SymLen> getSymbolCache(int streamNumber) {
		LRUMap<Integer, SymLen> streamSymbolCache = symbolCache.get(streamNumber);
		if (streamSymbolCache == null) {
			MsfStream stream = pdb.getMsf().getStream(streamNumber);
			if (stream == null) {
				return null;
			}
			// Note that stream length is in bytes; factor needs to deal with both ratio of
			//  bytes to average symbol record size and the sizing of the cache as a percentage
			//  of total number of symbol records in the stream.  We are adding a fixed number
			//  for a minimum size.
			int size = (int) (factor * stream.getLength() + 256);
			streamSymbolCache = new LRUMap<>(size);
			symbolCache.put(streamNumber, streamSymbolCache);
		}
		return streamSymbolCache;
	}
Returns the symbol at the offset of the stream
@param streamNumber the stream
@param offset the stream offset
@return the PDB symbol
@throws PdbException upon moduleNumber out of range or no module information
@throws CancelledException upon user cancellation
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb2/pdbreader/SymbolRecords.java