public boolean populateDecisions(T t, DecisionSet decisionSet, String propertyName) {
		if (!constraint.isSatisfied(t)) {
			return false;
		}

		boolean decisionFound = false;
		for (DecisionNode<T> child : children) {
			decisionFound |= child.populateDecisions(t, decisionSet, propertyName);
		}

		// if no child found a more specific decision, see if we have a value for the property
		if (!decisionFound && propertyMap.containsKey(propertyName)) {
			PropertyValue value = propertyMap.get(propertyName);
			List<String> decisionPath = getDecisionPath();
			decisionSet.addDecision(new Decision(value.value, decisionPath, value.source));
			decisionFound = true;
		}

		return decisionFound;
	}
A node in a decision tree.  Each node contains exactly one constraint and a map of property
 values.

@param <T> the type of objects that the constraint operates on.
Ghidra/Framework/Generic/src/main/java/generic/constraint/DecisionNode.java