Class 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