private void resolveHandles(SleighParserContext protoContext) throws MemoryAccessException {
		ParserWalker walker = new ParserWalker(protoContext);
		walker.baseState();
		while (walker.isState()) {
			Constructor ct = walker.getConstructor();
			int oper = walker.getOperand();
			int numoper = ct.getNumOperands();
			while (oper < numoper) {
				OperandSymbol sym = ct.getOperand(oper);
				walker.pushOperand(oper);		// Descend into node
				TripleSymbol triple = sym.getDefiningSymbol();
				if (triple != null) {
					if (triple instanceof SubtableSymbol) {
						break;
					}
					FixedHandle handle = walker.getParentHandle();
					triple.getFixedHandle(handle, walker);
				}
				else { // Must be an expression
					PatternExpression patexp = sym.getDefiningExpression();
					long res = patexp.getValue(walker);
					FixedHandle hand = walker.getParentHandle();
					hand.space = protoContext.getConstSpace();
					hand.offset_space = null;
					hand.offset_offset = res;
					hand.size = 0;
				}
				walker.popOperand();
				oper += 1;
			}
			if (oper >= numoper) {
				ConstructTpl templ = ct.getTempl();
				if (templ != null) {
					HandleTpl res = templ.getResult();
					if (res != null) {	// Pop up handle to containing operand
						res.fix(walker.getParentHandle(), walker);
					}
					else {
						walker.getParentHandle().setInvalid();
					}
				}
				walker.popOperand();
			}
		}
	}
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