| PreconditionsChecker |   | 33% |   | 14% | 92 | 104 | 145 | 218 | 34 | 43 | 0 | 1 |
| ASTStreamRenderer |   | 66% |   | 53% | 41 | 83 | 102 | 311 | 3 | 25 | 0 | 1 |
| ReducePatternDetector |   | 70% |   | 55% | 53 | 89 | 66 | 223 | 2 | 14 | 0 | 1 |
| ProspectiveOperation |   | 67% |   | 28% | 35 | 61 | 32 | 142 | 5 | 28 | 0 | 1 |
| LoopBodyParser |   | 74% |   | 62% | 38 | 75 | 42 | 179 | 2 | 11 | 0 | 1 |
| ReducerType |   | 56% |   | 28% | 25 | 37 | 35 | 82 | 6 | 14 | 0 | 1 |
| StreamPipelineBuilder |   | 73% |   | 53% | 39 | 70 | 35 | 125 | 4 | 20 | 0 | 1 |
| IfStatementAnalyzer |   | 82% |   | 66% | 42 | 84 | 30 | 159 | 1 | 13 | 0 | 1 |
| StreamConcatRefactorer |   | 83% |   | 56% | 29 | 42 | 32 | 135 | 1 | 10 | 0 | 1 |
| JdtLoopExtractor |   | 64% |   | 33% | 16 | 23 | 18 | 60 | 0 | 5 | 0 | 1 |
| LambdaGenerator |   | 64% |   | 77% | 5 | 16 | 16 | 51 | 1 | 7 | 0 | 1 |
| SideEffectChecker |   | 58% |   | 43% | 12 | 20 | 14 | 36 | 0 | 4 | 0 | 1 |
| Refactorer |   | 82% |   | 55% | 16 | 25 | 12 | 66 | 2 | 6 | 0 | 1 |
| StatementHandlerType.new StatementHandlerType() {...} |   | 87% |   | 65% | 14 | 28 | 11 | 77 | 0 | 6 | 0 | 1 |
| LoopToFunctionalV2 |   | 87% |   | 61% | 18 | 34 | 12 | 73 | 1 | 10 | 0 | 1 |
| IteratorPatternDetector |   | 87% |   | 60% | 19 | 32 | 17 | 78 | 0 | 8 | 0 | 1 |
| CollectPatternDetector |   | 86% |   | 60% | 17 | 28 | 14 | 70 | 1 | 8 | 0 | 1 |
| IteratorLoopToFunctional |   | 87% |   | 59% | 9 | 17 | 11 | 62 | 1 | 6 | 0 | 1 |
| PipelineAssembler |   | 95% |   | 78% | 14 | 52 | 9 | 132 | 1 | 22 | 0 | 1 |
| OperationType.LambdaBodyContext |   | 34% |  | 0% | 3 | 4 | 5 | 6 | 2 | 3 | 0 | 1 |
| PreconditionsChecker.new ASTVisitor() {...} |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 2 | 2 | 1 | 1 |
| ProspectiveOperation.new ASTVisitor() {...} |   | 82% |   | 78% | 5 | 16 | 5 | 28 | 0 | 2 | 0 | 1 |
| CollectorType |   | 81% |   | 56% | 7 | 14 | 6 | 27 | 2 | 6 | 0 | 1 |
| FunctionalHolder |  | 0% | | n/a | 5 | 5 | 8 | 8 | 5 | 5 | 1 | 1 |
| IteratorLoopBodyParser |   | 88% |   | 60% | 8 | 14 | 8 | 36 | 0 | 4 | 0 | 1 |
| IteratorLoopAnalyzer.IteratorUsageVisitor |   | 81% |   | 83% | 6 | 14 | 7 | 29 | 5 | 8 | 0 | 1 |
| OperationType.new OperationType() {...} |   | 68% |   | 62% | 3 | 6 | 4 | 11 | 0 | 2 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 29% | | n/a | 3 | 4 | 3 | 4 | 3 | 4 | 0 | 1 |
| CollectPatternDetector.new ASTVisitor() {...} |  | 85% |   | 75% | 3 | 9 | 2 | 17 | 0 | 3 | 0 | 1 |
| ConsecutiveLoopGroupDetector |  | 94% |   | 89% | 4 | 17 | 3 | 51 | 1 | 3 | 0 | 1 |
| IteratorLoopToFunctional.new ASTVisitor() {...} |  | 93% |   | 71% | 4 | 10 | 4 | 30 | 0 | 3 | 0 | 1 |
| LoopToFunctional |  | 93% |   | 62% | 3 | 12 | 4 | 28 | 1 | 8 | 0 | 1 |
| IteratorLoopAnalyzer |  | 86% |  | 87% | 1 | 6 | 2 | 16 | 0 | 2 | 0 | 1 |
| OperationType |  | 95% | | n/a | 2 | 7 | 2 | 28 | 2 | 7 | 0 | 1 |
| StatementHandlerType.new StatementHandlerType() {...} |  | 91% |   | 70% | 3 | 8 | 1 | 16 | 0 | 3 | 0 | 1 |
| ReducerType.new ReducerType() {...} | | 50% | | n/a | 2 | 3 | 2 | 3 | 2 | 3 | 0 | 1 |
| ConsecutiveLoopGroupDetector.ConsecutiveLoopGroup |  | 84% | | n/a | 1 | 4 | 1 | 7 | 1 | 4 | 0 | 1 |
| JdtLoopExtractor.LoopBodyAnalyzer |  | 95% |   | 50% | 4 | 13 | 1 | 20 | 0 | 9 | 0 | 1 |
| ReducerType.new ReducerType() {...} | | 75% | | n/a | 1 | 3 | 1 | 3 | 1 | 3 | 0 | 1 |
| OperationType.new OperationType() {...} |  | 97% |   | 80% | 2 | 7 | 1 | 16 | 0 | 2 | 0 | 1 |
| StatementHandlerType |  | 97% |  | 75% | 1 | 4 | 1 | 15 | 0 | 2 | 0 | 1 |
| StatementHandlerType.new StatementHandlerType() {...} |  | 97% |  | 87% | 1 | 7 | 1 | 23 | 0 | 3 | 0 | 1 |
| OperationType.new OperationType() {...} |  | 88% | | 50% | 1 | 3 | 1 | 4 | 0 | 2 | 0 | 1 |
| OperationType.new OperationType() {...} |  | 88% | | 50% | 1 | 3 | 1 | 4 | 0 | 2 | 0 | 1 |
| OperationType.new OperationType() {...} |  | 88% | | 50% | 1 | 3 | 1 | 4 | 0 | 2 | 0 | 1 |
| OperationType.new OperationType() {...} |  | 88% | | 50% | 1 | 3 | 1 | 4 | 0 | 2 | 0 | 1 |
| OperationType.new OperationType() {...} | | 83% | | n/a | 1 | 3 | 1 | 3 | 1 | 3 | 0 | 1 |
| OperationType.new OperationType() {...} | | 83% | | n/a | 1 | 3 | 1 | 3 | 1 | 3 | 0 | 1 |
| StatementHandlerType.new StatementHandlerType() {...} |  | 100% |  | 100% | 0 | 15 | 0 | 47 | 0 | 6 | 0 | 1 |
| StatementHandlerType.new StatementHandlerType() {...} |  | 100% |   | 90% | 2 | 15 | 0 | 33 | 0 | 5 | 0 | 1 |
| StatementParsingContext |  | 100% | | n/a | 0 | 15 | 0 | 41 | 0 | 15 | 0 | 1 |
| LoopTargetFormat |  | 100% |  | 100% | 0 | 7 | 0 | 17 | 0 | 4 | 0 | 1 |
| PreconditionsChecker.new ASTVisitor() {...} |  | 100% |  | 100% | 0 | 9 | 0 | 18 | 0 | 2 | 0 | 1 |
| LoopToFunctional.new ASTVisitor() {...} |  | 100% |  | 100% | 0 | 4 | 0 | 7 | 0 | 2 | 0 | 1 |
| IfStatementAnalyzer.MatchPatternType |  | 100% | | n/a | 0 | 1 | 0 | 9 | 0 | 1 | 0 | 1 |
| IteratorLoopAnalyzer.SafetyAnalysis |  | 100% | | n/a | 0 | 3 | 0 | 10 | 0 | 3 | 0 | 1 |
| LoopBodyParser.ParseResult |  | 100% | | n/a | 0 | 7 | 0 | 13 | 0 | 7 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 100% |  | 100% | 0 | 4 | 0 | 5 | 0 | 3 | 0 | 1 |
| IteratorPatternDetector.IteratorPattern |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 100% | | n/a | 0 | 4 | 0 | 4 | 0 | 4 | 0 | 1 |
| ReducerType.MapExpressionContext |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| StatementHandlerContext |  | 100% | | n/a | 0 | 3 | 0 | 6 | 0 | 3 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 100% | | n/a | 0 | 3 | 0 | 3 | 0 | 3 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 100% | | n/a | 0 | 3 | 0 | 3 | 0 | 3 | 0 | 1 |
| ReducerType.new ReducerType() {...} |  | 100% | | n/a | 0 | 3 | 0 | 3 | 0 | 3 | 0 | 1 |
| IteratorLoopBodyParser.ParsedBody |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 | 0 | 1 |
| JdtLoopExtractor.ExtractedLoop | | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 | 0 | 1 |
| AbstractFunctionalCall | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |