private void collectReachable(Map<JitBlock, Reachability> into, JitBlock cur,
			Reachability how) {
		Reachability curHow = into.get(cur);

		/**
		 * Context-modifying userops are all considered hazards, but we shouldn't abort until after
		 * the instruction. If the exit is reachable without passing through a context modification,
		 * then we're good to proceed. Otherwise, no. Additionally, we're going to check all
		 * branches, direct or indirect, to see if they are reachable without context modification.
		 * If they are, then we treat them as usual. If not, then they will be treated as indirect,
		 * and we'll neglect to "retire" the context, because presumably, the userop will already
		 * have caused that retirement and modified it in place.
		 * 
		 * If one branch is reachable by multiple paths where some require context modification and
		 * some do not, we'll keep a local variable at runtime to track whether a context-modifying
		 * userop has actually been executed. We'll generate code to check this variable at the
		 * branch site and treat it as a hazard if it is set.
		 */
		if (blockModifiesContext(cur)) {
			// Not combine. If we're MAYBE here, we still become WITH_CTX.
			how = Reachability.WITH_CTXMOD;
		}
		else {
			how = how.combine(curHow);
		}

		if (how == curHow) {
			return;
		}
		into.put(cur, how);

		for (BlockFlow flow : cur.flowsFrom().values()) {
			collectReachable(into, flow.to(), how);
		}
	}
The reachability test mentioned in {@link #checkFallthroughAndAccumulate(PcodeProgram)}

<p>
Collects the reachability of blocks reachable from {@code cur} into the given mutable map.
The value indicates whether or not context modifications can occur along the paths to the
block (key). If a block is not in the map, it is not reachable.

@param into a mutable map for collecting reachable blocks
@param cur the source block, or an intermediate during recursion
@param the computed reachability of the source block. Use {@link Reachability#WITHOUT_CTXMOD}
           for the seed.
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/decode/DecoderExecutor.java