Types of binary trees are recomputed each time getAnnotatedType is called. The type of a binary tree is the LUB of the left and right side of the trees, so getAnnotatedType is called on the left and right trees. Data flow calls getAnnotatedType on every node in a binary tree.
Possible fixes:
Cache the types. (Caches haven't worked well in the past)
Compute the LUB in dataflow which will store the types. (Any checker that wants the type to be something other than the LUB will have to override CFTransfer.)
Types of binary trees are recomputed each time getAnnotatedType is called. The type of a binary tree is the LUB of the left and right side of the trees, so getAnnotatedType is called on the left and right trees. Data flow calls getAnnotatedType on every node in a binary tree.
Possible fixes: