protected T evaluateVarnode(Program program, Varnode vn, Map<Varnode, T> already) {
		// computeIfAbsent does nto work because of the recursion. Will get CME.
		if (already.containsKey(vn)) {
			return already.get(vn);
		}
		T result = doEvaluateVarnode(program, vn, already);
		already.put(vn, result);
		return result;
	}
Evaluate a varnode, which could be either a leaf or a branch, taking its cached value if
available

@param program the program defining the static context
@param vn the varnode
@param already a cache of already-evaluated varnodes and their values
@return the value
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/pcode/eval/AbstractVarnodeEvaluator.java