public void setOutOfBandState(Constructor ct, int index, ConstructState tempstate,
			ParserWalker otherwalker) {
		ConstructState pt = otherwalker.point;
		int curdepth = otherwalker.depth;
		while (pt.getConstructor() != ct) {
			if (curdepth <= 0)
				return;
			curdepth -= 1;
			pt = pt.getParent();
		}
		OperandSymbol sym = ct.getOperand(index);
		int i = sym.getOffsetBase();
		// if i<0, i.e. the offset of the operand is constructor relative
		// its possible that the branch corresponding to the operand
		// has not been constructed yet. Context expressions are
		// evaluated BEFORE the constructors branches are created.
		// So we have to construct the offset explicitly.
		if (i < 0)
			tempstate.setOffset(pt.getOffset() + sym.getRelativeOffset());
		else
			tempstate.setOffset(pt.getSubState(index).getOffset());

		tempstate.setConstructor(ct);
		tempstate.setLength(pt.getLength());
		point = tempstate;
		depth = 0;
		breadcrumb[0] = 0;
	}
@return the Constructor for the current node in the walk
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/ParserWalker.java