Added support for patterns like this: http://rise4fun.com/Alive/85d
Where truncate expression contains nodes with multi usages, however all these usages are dominated by the same truncate instruction.
Solution: Instead of returning false when hitting such a node with more than one usage, simply record all the usages that were not visited yet, so they can be checked later against all visited nodes.
I think a better way to name this is like this
canEvaluateTruncated->canEvaluateTruncatedImpl
canEvaluateTruncatedWrapper->canEvaluateTruncated
I think the Impl name will be more obvious that it shouldn't be called directly.