| collectEquivalenceCandidates(StructInfo, StructInfo, SlotMapping, ComparisonResult) |   | 63% |   | 62% | 7 | 13 | 14 | 42 | 0 | 1 |
| extractDnfBranches(Expression) |   | 64% |   | 56% | 5 | 9 | 11 | 31 | 0 | 1 |
| compensateCouldNotPullUpPredicates(StructInfo, StructInfo, SlotMapping, ComparisonResult) |   | 27% |   | 14% | 7 | 8 | 15 | 20 | 0 | 1 |
| removePredicatesImpliedByViewResidual(Map, Expression) |  | 0% |  | 0% | 3 | 3 | 6 | 6 | 1 | 1 |
| compensatePredicates(StructInfo, StructInfo, SlotMapping, ComparisonResult, CascadesContext) |   | 83% |   | 83% | 1 | 4 | 10 | 37 | 0 | 1 |
| impliesByDnf(Expression, Expression) |   | 81% |   | 58% | 5 | 7 | 6 | 17 | 0 | 1 |
| normalizeComparisonPredicate(ComparisonPredicate) |   | 46% |   | 25% | 2 | 3 | 1 | 3 | 0 | 1 |
| branchImplies(Set, Set) |   | 83% |   | 62% | 3 | 5 | 4 | 11 | 0 | 1 |
| crossProductBranches(List, List) |   | 93% |   | 70% | 3 | 6 | 2 | 14 | 0 | 1 |
| collectRangeCandidates(StructInfo, StructInfo, SlotMapping, ComparisonResult, CascadesContext) |   | 97% |   | 87% | 1 | 5 | 1 | 22 | 0 | 1 |
| predicateImplies(Expression, Expression) |   | 90% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| lambda$collectNonInferredQueryBasedExpressions$3(Expression) |  | 85% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| lambda$collectNonInferredExpressions$1(Expression) |  | 85% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| buildCombinedPredicate(Collection[]) |  | 100% |   | 83% | 1 | 4 | 0 | 7 | 0 | 1 |
| removeExactCoveredPredicates(Map, Set) |  | 100% |  | 100% | 0 | 3 | 0 | 7 | 0 | 1 |
| rejectUnsafeResidualCompensation(Predicates.PredicateCompensation) |  | 100% |   | 83% | 1 | 4 | 0 | 6 | 0 | 1 |
| collectCompensationCandidates(StructInfo, StructInfo, SlotMapping, ComparisonResult, CascadesContext) |  | 100% |   | 83% | 1 | 4 | 0 | 6 | 0 | 1 |
| collectResidualCandidates(StructInfo) |  | 100% |  | 100% | 0 | 2 | 0 | 7 | 0 | 1 |
| buildRangeExpressionInfo(Expression) |  | 100% |   | 75% | 2 | 5 | 0 | 5 | 0 | 1 |
| normalizeExpression(Expression, CascadesContext) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| toString() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| mergePulledUpPredicates(Collection) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| collectNonInferredQueryBasedExpressions(Collection, SlotMapping) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| collectNonInferredExpressions(Collection) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| Predicates(Set, Set) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| splitPredicates(Expression) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$collectNonInferredQueryBasedExpressions$5(Expression) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$collectNonInferredExpressions$2(Expression) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| of(Set, Set) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$collectNonInferredQueryBasedExpressions$4(Map, Expression) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getPulledUpPredicates() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getCouldNotPulledUpPredicates() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildRangeExpressionInfo$0(TreeNode) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |