private void setRegisterValue(Address fromAddr, Address destAddr,
			RegisterValue newValue, boolean newValuePrecedence) {
		if (newValue == null) {
			return;
		}
		if (isFlowActive() && currentAddress.equals(destAddr)) {
			setRegisterValue(newValue);
			return;
		}
		Register register = newValue.getRegister();
		Register baseRegister = register.getBaseRegister();

		// get the future flow state map for the given address
		Map<Register, RegisterValue> stateMap = findFutureFlowStateMap(fromAddr, destAddr);

		// merge the new value with any existing future value or a value from the program if the future
		// value was not previously set.
		RegisterValue value = stateMap.get(baseRegister);
		if (value == null) {
			// if there is no previously saved future value, always give precedence to the new value.
			value = programContext.getNonDefaultValue(baseRegister, destAddr);
			newValuePrecedence = true;
		}
		value = combineRegisterValues(value, newValue, newValuePrecedence);

		stateMap.put(baseRegister, value);
	}
Stores register value in map.
If <code>newValuePrecedence</code> is true, then the given <code>newValue</code>
overrides the <code>currentValue</code>.

@param fromAddr the address from which the Register value flows.
@param destAddr the address to store the new value
@param newValue new value to store
@param newValuePrecedence true if the new value has precedence over any old value
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/DisassemblerContextImpl.java