@Override
	public PcodeOp[] getPcode(InstructionContext context, int opIndex) {
		if (opIndex < 0 || opIndex >= opresolve.length) {
			return emptyPCode;
		}

		try {
			SleighParserContext protoContext = (SleighParserContext) context.getParserContext();
			OperandSymbol sym = mnemonicState.getConstructor().getOperand(opresolve[opIndex]);
			if (sym.getDefiningSymbol() instanceof SubtableSymbol) {
				ParserWalker walker = new ParserWalker(protoContext);
				walker.subTreeState(mnemonicState);
				walker.pushOperand(opresolve[opIndex]);
				PcodeEmitObjects emit = new PcodeEmitObjects(walker);
				emit.build(walker.getConstructor().getTempl(), -1);
				emit.resolveRelatives();
				if (!isindelayslot) {
					emit.resolveFinalFallthrough();
				}
				return emit.getPcodeOp();
			}
		}
		catch (Exception e) {
			// If opIndex is out of bounds (or if there are memory errors) return an empty p-code list
		}
		return emptyPCode;
	}
Gather all the flow records (perhaps across multiple InstructionPrototypes via crossbuilds)
and convert to Addresses

@param res is the resulting flow Addresses
@param parsecontext is the parsing context for the current instruction
@param context is the context for the particular address so crossbuilds can be resolved
@throws MemoryAccessException if a memory error occurred while resolving instruction details
@throws UnknownContextException if the gather encounters an instruction not previously parsed
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/SleighInstructionPrototype.java