public Constructor resolve(ParserWalker walker, SleighDebugLogger debug)
			throws MemoryAccessException, UnknownInstructionException {
		if (bitsize == 0) { // The node is terminal
			for (int i = 0; i < patternlist.length; ++i) {
				if (debug != null) {
					debug.append("check pattern[" + (i + 1) + " of " + patternlist.length + "]");
					debug.dumpConstructor(walker.getCurrentSubtableName(), constructlist[i]);
					debug.indent();
				}
				boolean match = patternlist[i].isMatch(walker, debug);
				if (debug != null) {
					debug.dropIndent();
				}
				if (match) {
					return constructlist[i];
				}
			}
			if (debug != null) {
				debug.append("Unable to resolve constructor\n");
			}
			throw new UnknownInstructionException(
				"Unable to resolve constructor at " + walker.getAddr());
		}
		int val;
		if (contextdecision) {
			val = walker.getContextBits(startbit, bitsize);
			debugContextBitsDecision(debug, walker, val);
		}
		else {
			val = walker.getInstructionBits(startbit, bitsize);
			debugInstructionBitsDecision(debug, walker, val);
		}

		Constructor c = children[val].resolve(walker, debug);
		return c;
	}
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