docs: public void trainOnInstanceImpl(Instance inst) {
  		checkRoot();
  
  		examplesSeen += inst.weight();
  		sumOfValues += inst.weight() * inst.classValue();
  		sumOfSquares += inst.weight() * inst.classValue() * inst.classValue();
  
  		for (int i = 0; i < inst.numAttributes() - 1; i++) {
  			int aIndex = modelAttIndexToInstanceAttIndex(i, inst);
  			sumOfAttrValues.addToValue(i, inst.weight() * inst.value(aIndex));
  			sumOfAttrSquares.addToValue(i, inst.weight() * inst.value(aIndex) * inst.value(aIndex));
  		}
  
  		double prediction = treeRoot.getPrediction(inst);
  		processInstance(inst, treeRoot, prediction, getNormalizedError(inst, prediction), true, false);
  	}