private void debugInstructionBitsDecision(SleighDebugLogger debug, ParserWalker walker,
			int val) {
		if (debug == null) {
			return;
		}

		int offset = walker.getOffset(-1);
		int mask = (-1 << (32 - bitsize)) >>> startbit;
		debug.addInstructionPattern(offset, new PatternBlock(0, mask, val));

		if (!debug.isVerboseEnabled()) {
			return;
		}

		MemBuffer memBuf = walker.getParserContext().getMemBuffer();
		int unitSize = memBuf.getAddress().getAddressSpace().getAddressableUnitSize();
		int byteCnt = offset + ((startbit + bitsize + 7) / 8);
		int wordCnt = (byteCnt + unitSize - 1) / unitSize;
		byte[] bytes = new byte[wordCnt * unitSize];
		memBuf.getBytes(bytes, 0);
		debug.append(
			"decide on instruction bits: byte-offset=" + offset + ", bitrange=(" + startbit + "," +
				(startbit + bitsize - 1) + "), value=0x" + Integer.toHexString(val) + ", bytes=");
		debug.append(bytes, (offset * 8) + startbit, bitsize);
		debug.append("\n");
		debugDumpDescendantConstructors(debug, children[val]);
	}
A node in the decision tree for resolving a Constructor in 
a SubtableSymbol based on the InstructionContext
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/DecisionNode.java