public void flowStart(Address fromAddr, Address toAddr) {
		if (isFlowActive()) {
			throw new IllegalStateException("Previous flow was not ended.");
		}
		startAddr = toAddr;
		currentAddress = toAddr;
		registerStateMap.clear();
		contextRegisterValue = null;
		delayedContextRegisterValue = null;
		contextChangePoint = toAddr;

		// get next context value within flow, combining current, future, previously stored and default context values
		Map<Register, RegisterValue> futureStateMap = getFutureRegisterStateMap(fromAddr, toAddr, true);
		
		if (futureStateMap != null) {
			registerStateMap = futureStateMap;
		}
		else {
			registerStateMap.clear();
		}

		contextRegisterValue = getNextContextInFlow(toAddr, futureStateMap, true);

		setNextContextChangePoint(toAddr);
	}
Starts a new flow from an address to the new start.
Initializes the current state for all registers using any future flow state
that has been set flowing from the fromAddr.

@param fromAddr address that this flow is flowing from.
@param toAddr the starting address of a new instruction flow.
@throws IllegalStateException if a previous flow was not ended.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/disassemble/DisassemblerContextImpl.java