@Test
	public void testVarnodeReuse() throws Exception {
		SleighLanguage language = SleighLanguageHelper.getMockBE64Language();

		PcodeProgram program = SleighProgramCompiler.compileProgram(language, "test", """
				r0 = r1 + r2;
				r0 = r0 f+ r2;
				r0 = r0 f+ r2;
				goto 0x1234;
				""", PcodeUseropLibrary.NIL);

		JitAnalysisContext context = makeContext(program);
		JitControlFlowModel cfm = new JitControlFlowModel(context);
		JitDataFlowModel dfm = new JitDataFlowModel(context, cfm);
		JitVarScopeModel vsm = new JitVarScopeModel(cfm, dfm);
		JitTypeModel tm = new JitTypeModel(dfm);
		JitAllocationModel am = new JitAllocationModel(context, dfm, vsm, tm);

		List<JitVarnodeVar> r0Vars = varnodeVars(dfm)
				.filter(v -> v.varnode().toString(language).equals("r0"))
				.sorted(Comparator.comparing(JitVar::id))
				.toList();

		/**
		 * NOTE: Variables are coalesced by varnode, so all of these will receive the same handler,
		 * and so will all have the same type. There being two float ops will cause the type and
		 * allocation models to choose F8 for that handler.
		 */
		assertEquals(List.of(DoubleJitType.F8, DoubleJitType.F8, DoubleJitType.F8),
			r0Vars.stream().map(v -> am.getHandler(v).type()).toList());
	}
TODO: Might like to assert more details, but this mp-int aspect of the JIT-based emulator
is still a work in progress.
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/pcode/emu/jit/analysis/JitAllocationModelTest.java