private VarHandler createComplicatedHandler(Varnode vn) {
		Entry<Address, JvmLocal> leftEntry = locals.floorEntry(vn.getAddress());
		assert overlapsLeft(leftEntry.getValue().vn, vn);
		Address min = leftEntry.getKey();
		NavigableMap<Address, JvmLocal> sub = locals.subMap(min, true, maxAddr(vn), true);

		List<MultiLocalPart> parts = new ArrayList<>();
		for (JvmLocal local : sub.values()) {
			int offset = (int) switch (endian) {
				case BIG -> maxAddr(leftEntry.getValue().vn).subtract(maxAddr(vn));
				case LITTLE -> vn.getAddress().subtract(leftEntry.getKey());
			};
			parts.add(new MultiLocalPart(local, offset));
		}
		return new MultiLocalVarHandler(parts, JitTypeBehavior.INTEGER.type(vn.getSize()));
	}
Create a handler for a multi-part or subpiece varnode

@param vn the varnode
@return a handler to access the value of the given varnode, as allocated in one or more
        locals.
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/analysis/JitAllocationModel.java