static BlockTransition computeBlockTransition(JitCodeGenerator gen, JitBlock from,
			JitBlock to) {
		JitVarScopeModel scopeModel = gen.getVariableScopeModel();
		Set<Varnode> liveFrom = from == null ? Set.of() : scopeModel.getLiveVars(from);
		Set<Varnode> liveTo = to == null ? Set.of() : scopeModel.getLiveVars(to);
		BlockTransition result = new BlockTransition(gen);

		result.toRetire.addAll(liveFrom);
		result.toRetire.removeAll(liveTo);

		result.toBirth.addAll(liveTo);
		result.toBirth.removeAll(liveFrom);

		return result;
	}
Compute the retired and birthed varnodes for a transition between the given blocks.

<p>
Either block may be {@code null} to indicate entering or leaving the passage. Additionally,
the {@code to} block should be {@code null} when generating transitions around a hazard.

@param gen the code generator
@param from the block control flow is leaving (whether by branch or fall through)
@param to the block control flow is entering
@return the means of generating bytecode at the transition
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/gen/var/VarGen.java