3f2a6963fb
1. Use a work queue to avoid recursion on deep trees. 2. Use a visited set to avoid cycles and repeated work on conditions like `b && b`. Bug: #60801 Change-Id: If20de27b1ddd157feee2391289ec781c03f741ae Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/431704 Reviewed-by: Mayank Patke <fishythefish@google.com> Commit-Queue: Stephen Adams <sra@google.com>