///|
/// Reports invalid input without discarding the value or source position.
pub(all) enum TreeError {
  InvalidMaxDepth(Int)
  InvalidMinSamplesSplit(Int)
  InvalidMinSamplesLeaf(Int)
  InvalidMinImpurityDecrease(Double)
  InvalidClassCount(Int)
  EmptyDataset
  EmptyFeatureRow(Int)
  TargetCountMismatch(Int, Int)
  InconsistentFeatureCount(Int, Int, Int)
  InvalidClassLabel(Int, Int, Int)
  NonFiniteFeature(Int, Int)
  NonFiniteTarget(Int)
  PredictionFeatureCountMismatch(Int, Int)
  ModelNotTrained
  InvalidFoldCount(Int, Int)
  InvalidFeatureNameCount(Int, Int)
  InvalidClassNameCount(Int, Int)
  InvalidPruningAlpha(Double)
  MetricLengthMismatch(Int, Int)
  EmptyConfigurationGrid
  InvalidTestCount(Int, Int)
  ProbabilityRowCountMismatch(Int, Int)
  InvalidProbabilityWidth(Int, Int, Int)
  InvalidProbabilityValue(Int, Int)
  InvalidProbabilitySum(Int)
  InvalidFeatureIndex(Int, Int)
  WeightCountMismatch(Int, Int)
  InvalidSampleWeight(Int)
  ZeroTotalWeight
  InvalidRepeatCount(Int)
  EmptyPruningGrid
} derive(Eq, Debug)