@Override
	protected void valueRemoved(ProgramLocator locator, Program program) {
		// whenever programs are removed from the cache, we need to remove the cache as a consumer 
		// and remove the file changed listener
		ProgramFileListener listener = listenerMap.remove(program);
		program.removeDomainFileListener(listener);
		program.removeListener(listener);
		program.release(this);
	}
Constructs new ProgramCache with a duration for keeping programs open and a maximum
number of programs to cache.
@param duration the time that a program will remain in the cache without being
accessed (accessing a cached program resets its time)
@param capacity the maximum number of programs in the cache before least recently used
programs are removed.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramCache.java