private void loadCachedNode(BufferNode node) throws IOException {
		// if requested, load from disk cache file and add node to memory cache list
		if (node.buffer == null) {
			if (node.locked || node.empty) {
				throw new IOException("Invalid or locked buffer");
			}
			returnToCache(node, cacheFile.get(getCacheBuffer(), node.diskCacheIndex));
			++cacheMisses;
		}
		else {
			if (node.prevCached.id != HEAD) {
				// Move to top of cache
				node.removeFromCache();
				node.addToCache(cacheHead);
			}
			++cacheHits;
		}
	}
Load buffer from disk cache into memory cache.
@param node buffer node to be unloaded from memory cache.
@throws IOException if a cache file access error occurs
Ghidra/Framework/DB/src/main/java/db/buffers/BufferMgr.java