if (alreadySelected) {
// attribute already selected
log.warn("attribute {} already selected in a parent node", best.attr);
}
Node childNode;
if (data.getDataset().isNumerical(best.attr)) {
Data loSubset = data.subset(Condition.lesser(best.attr, best.split));
Node loChild = build(rng, loSubset);
Data hiSubset = data.subset(Condition.greaterOrEquals(best.attr, best.split));
Node hiChild = build(rng, hiSubset);
childNode = new NumericalNode(best.attr, best.split, loChild, hiChild);
} else { // CATEGORICAL attribute
selected[best.attr] = true;