private RegisterValue getNextContextInFlow(Address address,
			Map<Register, RegisterValue> futureStateMap, boolean startOfFlow) {

		RegisterValue contextValue = contextRegisterValue;
		if (delayedContextRegisterValue != null) {
			contextValue = combineRegisterValues(contextValue, delayedContextRegisterValue, true);
		}
		RegisterValue nextContextRegisterValue = programContext.getFlowValue(contextValue); // strip non-flowing context

		// combine in any contextRegisterValue from the future flow state.
		RegisterValue futureContextRegisterValue = null;
		if (futureStateMap != null) {
			futureContextRegisterValue = futureStateMap.remove(contextRegister);
			nextContextRegisterValue =
				combineRegisterValues(nextContextRegisterValue, futureContextRegisterValue, true);
		}

		// combine any previously stored context with future state value
		if (contextChangePoint != null && address.compareTo(contextChangePoint) >= 0) {
			RegisterValue preExistingContextRegisterValue =
				programContext.getDisassemblyContext(address);
			repeatedNoflowValue = programContext.getNonFlowValue(preExistingContextRegisterValue);
			if (!startOfFlow) {
				preExistingContextRegisterValue = repeatedNoflowValue;
			}
			nextContextRegisterValue =
				combineRegisterValues(preExistingContextRegisterValue, nextContextRegisterValue,
					true);
			setNextContextChangePoint(address);
		}
		else if (repeatedNoflowValue != null && repeatedNoflowValue.hasAnyValue()) {
			// combine any repeated noflow context
			nextContextRegisterValue =
				combineRegisterValues(repeatedNoflowValue, nextContextRegisterValue, true);
		}

		// combine default context
		RegisterValue defaultValue = programContext.getDefaultValue(contextRegister, address);
		nextContextRegisterValue =
			combineRegisterValues(defaultValue, nextContextRegisterValue, true);

		if (nextContextRegisterValue == null) {
			nextContextRegisterValue = new RegisterValue(contextRegister);
		}

		return nextContextRegisterValue;
	}
Get next (i.e., fall-through) context register value in active flow.
Internal state may be updated to track next future context change point.
@param address
@param futureStateMap
@param startOfFlow
@return
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/DisassemblerContextImpl.java