| detectMathMaxMinPattern(String, Expression) |   | 48% |   | 37% | 12 | 17 | 14 | 27 | 0 | 1 |
| detectPrefixReducePattern(PrefixExpression, Statement) |  | 0% |  | 0% | 4 | 4 | 14 | 14 | 1 | 1 |
| addMapBeforeReduce(List, ProspectiveOperation, Statement, String, AST) |   | 66% |   | 68% | 7 | 12 | 7 | 31 | 0 | 1 |
| detectCompoundAssignmentPattern(Assignment, Statement, String) |   | 61% |   | 33% | 6 | 7 | 9 | 20 | 0 | 1 |
| detectInfixReducePattern(Assignment, Statement, String) |   | 82% |   | 55% | 6 | 10 | 7 | 31 | 0 | 1 |
| detectPostfixReducePattern(PostfixExpression, Statement) |   | 77% |   | 33% | 3 | 4 | 4 | 14 | 0 | 1 |
| extractMathMaxMinArgument(Statement, String, String) |   | 90% |   | 70% | 6 | 11 | 4 | 27 | 0 | 1 |
| detectReduceOperation(Statement) |   | 85% |   | 87% | 1 | 5 | 1 | 11 | 0 | 1 |
| ReducePatternDetector(ASTNode) |   | 73% |   | 50% | 1 | 2 | 1 | 7 | 0 | 1 |
| hasAccumulatorArgument(MethodInvocation, String) |   | 88% |   | 50% | 4 | 5 | 2 | 9 | 0 | 1 |
| getAccumulatorType() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| detectAssignmentReducePattern(Assignment, Statement) |   | 96% |   | 87% | 1 | 5 | 1 | 17 | 0 | 1 |
| extractReduceExpression(Statement) |   | 94% |   | 87% | 1 | 5 | 1 | 13 | 0 | 1 |
| getAccumulatorVariable() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |