private PcodeOp[] injectPcode(PcodeOp[] currentPcode, int pcodeIndex, PcodeOp[] replacePcode) {
		// if the length of replacePcode is 0, then the call will get replaced correctly.
		// Normally this routine should not be called to replace a null or empty array replacePcode.
		int opsRemaining = currentPcode.length - pcodeIndex - 1;
		if (opsRemaining == 0) {
			// simple case, call is the last pcode-op
			currentPcode = replacePcode;
		}
		else {
			// include any remaining pcode-ops to be processed after call-fixup
			// TODO: should really perform complete call replacement with repair of any internal branching
			PcodeOp[] replacePcodeExpanded = new PcodeOp[replacePcode.length + opsRemaining];
			System.arraycopy(replacePcode, 0, replacePcodeExpanded, 0, replacePcode.length);
			System.arraycopy(currentPcode, pcodeIndex + 1, replacePcodeExpanded,
				replacePcode.length, opsRemaining);
			currentPcode = replacePcodeExpanded;
		}
		return currentPcode;
	}
Apply pcode from an instruction to current varnode context.
Following a flow will push a new context state based on the current context state onto the contextStack

@param contextStack context state stack
@param vContext varnode context
@param instruction instruction to apply pcode from
@param continueAfterHittingFlow true if should continue after hitting an already processed flow
@param monitor to cancel
@return true to to continue this instruction path, false otherwise
Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java