Currently the tree execution returns a boolean, and there's no way to trace what was the result for each node. I suggest to return a NodeResult object instead, holding both the boolean result, and some meta information (children, expressions used to evaluate, etc).
Also, allow to use identifiers for the compare value, then supply the actual value in the data source.
You can check the implementation in the dev branch here