@Override
	public JitVal binaryOp(int opcode, int sizeout, int sizein1, JitVal in1, int sizein2,
			JitVal in2) {
		throw new AssertionError();
	}
Construct the catenation of the given values to form the given output varnode.

<p>
The result is added to the use-def graph. This is used to handle variable retrieval when the
pattern of accesses indicates catenation. Consider the x86 assembly:

<pre>
MOV AH, byte ptr [...]
MOV AL, byte ptr [...]
MOV word ptr [...], AX
</pre>

<p>
On the third line, the value in {@code AX} is the catenation of whatever values were written
into {@code AH} and {@code AL}. Thus, we synthesize a catenation op node in the use-def
graph.

@param outVn the output varnode
@param parts the list of values to catenate, ordered by machine endianness
@return the output value
@see MiniDFState#getDefinitions(AddressSpace, long, int)
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/analysis/JitDataFlowArithmetic.java