private void combineOperandMask(ConstructState state, OperandSymbol sym, byte[] mask) {
		PatternExpression patternExpression = null;
		int hand = sym.getIndex();
		TripleSymbol triple = sym.getDefiningSymbol();
		if (triple != null) {
			if (triple instanceof SubtableSymbol) {
				ConstructState subState = state.getSubState(hand);
				combineSymbolMask(subState, mask);
			}
			else {
				patternExpression = triple.getPatternExpression();
			}
		}
		else {
			patternExpression = sym.getDefiningExpression();
		}

		if (sym.getOffsetBase() < 0) {
			combinePatternMask(state, patternExpression,
				state.getOffset() + sym.getRelativeOffset(), mask);
		}
		else {
			ConstructState subState = state.getSubState(hand);
			combinePatternMask(subState, patternExpression, subState.getOffset(), mask);
		}
	}
Get the byte value mask corresponding to the specified operand.
@param opIndex operand index within the instruction representation
@return byte mask or null if operand does not have a corresponding sub-constructor or attach
@throws IllegalStateException if prototype parse failed
@throws IndexOutOfBoundsException if opIndex is not a valid operand index
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/SleighDebugLogger.java