private Map<Register, RegisterValue> findFutureFlowStateMap(Address fromAddr, Address destAddr) {
		Map<Register, RegisterValue> stateMap = null;
		Map<Address, Map<Register, RegisterValue>> futureRegisterStateMap = noAddressFutureRegisterStateMap;
		if (fromAddr == Address.NO_ADDRESS) {
			// for NO_ADDRESS flow from, always look up by the destAddr,

			stateMap = futureRegisterStateMap.get(destAddr);

			// didn't find a flow from map, create it
			if (stateMap == null) {
				stateMap = new HashMap<Register, RegisterValue>();
				futureRegisterStateMap.put(destAddr, stateMap);
			}
		} else {
			// for flows where the flowFrom addr is known, look up by destAddr first, then flowFrom addr
			futureRegisterStateMap = futureFlowRegisterStateMaps.get(destAddr);

			// didn't find a flow to map, create it
			if (futureRegisterStateMap == null) {
				futureRegisterStateMap = new HashMap<Address, Map<Register, RegisterValue>>();
				futureFlowRegisterStateMaps.put(destAddr,
						futureRegisterStateMap);
			} else {
				stateMap = futureRegisterStateMap.get(fromAddr);
			}

			// didn't find a flow from map, create it
			if (stateMap == null) {
				stateMap = new HashMap<Register, RegisterValue>();
				futureRegisterStateMap.put(fromAddr, stateMap);
			}
		}
		return stateMap;
	}
Lookup and if not found create a future Register flow state

@param fromAddr can be NO_ADDRESS if flow from is unknown
@param destAddr future flow state destination.

@return future flow state at the destination
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/DisassemblerContextImpl.java