DecisionNode:

attribute: string

children: DecisionNode[]

totalWeight: number

addValueNode(value: any , attribute: string ): DecisionNode

addPredicateNode(predicate: Predicate , attribute: string ): DecisionNode

addWeightNode(weight: any , attribute: string ): DecisionNode

evaluate(answers: any ): string

assert(value: any ): boolean