| buildWarnings(DecisionRationaleReportService.DecisionAnalysisInput, ViewContext, DecisionRationaleReportService.Completeness, Map, Map, List, Set, Map, List, boolean) |   | 67% |   | 62% | 20 | 36 | 30 | 93 | 0 | 1 |
| validateProductCoverageGaps(List, Map, Map, Map) |   | 72% |   | 56% | 19 | 23 | 12 | 49 | 0 | 1 |
| comparativeRationale(TaxonomyNode, Integer, List, boolean) |   | 86% |   | 71% | 4 | 8 | 6 | 50 | 0 | 1 |
| assessCompleteness(List, List, Map, Map, List) |   | 87% |   | 82% | 5 | 15 | 6 | 38 | 0 | 1 |
| fingerprintAnalysis(DecisionRationaleReportService.DecisionAnalysisInput, Map, Map, List) |   | 90% |   | 83% | 1 | 4 | 4 | 32 | 0 | 1 |
| generate(DecisionRationaleReportService.DecisionAnalysisInput, WorkspaceContext, ViewContext, Locale) |   | 97% |   | 86% | 7 | 31 | 3 | 101 | 0 | 1 |
| reasonFor(TaxonomyNode, Integer, Map, boolean) |   | 76% |   | 57% | 5 | 8 | 4 | 17 | 0 | 1 |
| copySnapshotNode(TaxonomyNodeDto, String, Map, Set) |   | 93% |   | 62% | 6 | 9 | 2 | 32 | 0 | 1 |
| displayName(TaxonomyNode, boolean) |   | 60% |   | 50% | 2 | 4 | 1 | 3 | 0 | 1 |
| displayDescription(TaxonomyNode, boolean) |   | 57% |   | 50% | 2 | 4 | 1 | 3 | 0 | 1 |
| lambda$sanitizeScores$4(Map, String, Integer) |   | 75% |   | 50% | 5 | 6 | 2 | 6 | 0 | 1 |
| value(Object) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| lambda$buildChapters$17(Map, TaxonomyNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| scoreText(Integer, boolean) |   | 62% |   | 50% | 2 | 4 | 1 | 3 | 0 | 1 |
| hierarchyFromSnapshot(List) |   | 91% |   | 62% | 3 | 5 | 1 | 12 | 0 | 1 |
| determineStatus(boolean, String, List, List, List) |  | 87% |   | 62% | 5 | 9 | 0 | 9 | 0 | 1 |
| rootFromCode(String) |  | 85% |   | 50% | 3 | 4 | 1 | 4 | 0 | 1 |
| buildChapters(List, Map, Map, Map, boolean) |  | 99% |   | 92% | 2 | 15 | 0 | 72 | 0 | 1 |
| conciseConclusion(DecisionRationaleReport.LeafCandidate, List, boolean) |  | 94% |   | 83% | 1 | 4 | 1 | 11 | 0 | 1 |
| abbreviateHash(String) |  | 90% |   | 66% | 2 | 4 | 1 | 4 | 0 | 1 |
| lambda$copyAndSort$7(Map, String, List) |  | 89% |   | 50% | 1 | 2 | 0 | 4 | 0 | 1 |
| sanitizeScores(Map) |  | 85% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| sanitizeReasons(Map) |  | 85% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| copyAndSort(Map) |  | 85% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| lambda$validateProductCoverageGaps$6(Map, String) |  | 85% |   | 50% | 2 | 3 | 0 | 1 | 0 | 1 |
| lambda$buildChapters$19(DecisionRationaleReport.ChildDecision) |  | 80% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| lambda$buildWarnings$26(Set, String) |  | 75% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| lambda$pathToRoot$25(TaxonomyNode, TaxonomyNode) | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visit(TaxonomyNode, Map, Set, List) |  | 97% |   | 62% | 3 | 5 | 1 | 7 | 0 | 1 |
| lambda$hasResolvedProductCoverageGap$13(String, Integer, List, Map, ProductCoverageGap) |  | 96% |   | 50% | 6 | 7 | 0 | 5 | 0 | 1 |
| lambda$hasResolvedProductCoverageGap$12(Map, String) |  | 92% |   | 50% | 2 | 3 | 0 | 1 | 0 | 1 |
| lambda$generate$1(String) |  | 88% |   | 50% | 2 | 3 | 0 | 1 | 0 | 1 |
| lambda$pathToRoot$23(TaxonomyNode) |  | 85% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| buildPath(String, Map, Map, Map, boolean) |  | 100% |  | 100% | 0 | 4 | 0 | 14 | 0 | 1 |
| lambda$findLeadingLeaves$22(Map, Map, boolean, List, TaxonomyNode) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| pathToRoot(String, Collection) |  | 100% |   | 83% | 1 | 4 | 0 | 13 | 0 | 1 |
| decisionSummary(TaxonomyNode, List, boolean) |  | 100% |  | 100% | 0 | 2 | 0 | 13 | 0 | 1 |
| findLeadingLeaves(List, Map, Map, Map, boolean) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| preOrder(List, Map) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| firstNonBlank(String[]) |  | 100% |   | 83% | 1 | 4 | 0 | 4 | 0 | 1 |
| currentHierarchy() |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| localShare(Integer, Integer) |  | 100% |   | 66% | 2 | 4 | 0 | 3 | 0 | 1 |
| updateDigest(MessageDigest, String, String) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| DecisionRationaleReportService(TaxonomyService, TaxonomyCatalogueMetadataService, DecisionReportBuildMetadataService, String) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| lambda$sanitizeReasons$5(Map, String, String) |  | 100% |   | 50% | 4 | 5 | 0 | 3 | 0 | 1 |
| lambda$buildWarnings$29(DecisionRationaleReportService.DecisionAnalysisInput, TaxonomyNode) |  | 100% |  | 100% | 0 | 3 | 0 | 2 | 0 | 1 |
| indexNodes(List, Map) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| snapshotValue(DecisionRationaleReportService.DecisionAnalysisInput, Function, String) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| lambda$findLeadingLeaves$21(Map, TaxonomyNode) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$buildChapters$16(Map, TaxonomyNode) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$buildChapters$14(Map, TaxonomyNode) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$buildWarnings$27(Map.Entry) |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| lambda$assessCompleteness$11(Map, String) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| immutableChildrenMap(Map) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lambda$fingerprintAnalysis$41(MessageDigest, Map.Entry) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$fingerprintAnalysis$40(MessageDigest, Map.Entry) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$comparativeRationale$34(DecisionRationaleReport.ChildDecision) |  | 100% |  | 100% | 0 | 3 | 0 | 1 | 0 | 1 |
| lambda$decisionSummary$31(DecisionRationaleReport.ChildDecision) |  | 100% |  | 100% | 0 | 3 | 0 | 1 | 0 | 1 |
| normalized(String, String) |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| lambda$static$0(TaxonomyNode) |  | 100% |  | 100% | 0 | 2 | 0 | 2 | 0 | 1 |
| hasResolvedProductCoverageGap(String, Integer, List, Map, List) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildWarnings$28(Map, Map.Entry) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| roundOneDecimal(double) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$comparativeRationale$36(DecisionRationaleReport.ChildDecision) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$comparativeRationale$35(DecisionRationaleReport.ChildDecision) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$buildWarnings$30(Map, String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$findLeadingLeaves$20(Map, TaxonomyNode) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildChapters$18(DecisionRationaleReport.ChildDecision) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| lambda$buildChapters$15(Map, String) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lambda$indexNodes$9(Map, TaxonomyNode) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$indexNodes$8(Map, TaxonomyNode) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$immutableChildrenMap$3(Map, String, List) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$generate$2(Integer) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| methodologyNote(boolean) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| lambda$comparativeRationale$39(DecisionRationaleReport.ChildDecision) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$comparativeRationale$38(DecisionRationaleReport.ChildDecision) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$comparativeRationale$37(DecisionRationaleReport.ChildDecision) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$decisionSummary$33(DecisionRationaleReport.ChildDecision) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$decisionSummary$32(DecisionRationaleReport.ChildDecision) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$indexNodes$10(Map, List) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$pathToRoot$24(TaxonomyNode) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |