| querySingleType(LogQueryService.QueryRequest, String, String, String, LogQueryService.LogType, int) |   | 52% |   | 37% | 4 | 5 | 21 | 41 | 0 | 1 |
| parseTimeMs(String, LogQueryService.LogType) |   | 18% |   | 7% | 8 | 9 | 16 | 19 | 0 | 1 |
| normalize(LogQueryService.QueryRequest) |   | 69% |   | 44% | 8 | 10 | 5 | 25 | 0 | 1 |
| readTail(Path, int) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| getFrontendLogDir() |   | 14% |   | 16% | 3 | 4 | 7 | 9 | 0 | 1 |
| applyFilters(List, LogQueryService.QueryRequest) |   | 63% |   | 40% | 8 | 11 | 4 | 14 | 0 | 1 |
| toLogEventView(LogQueryService.ParsedEvent) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| normalizeReductionMode(String) |   | 43% |   | 33% | 3 | 4 | 2 | 6 | 0 | 1 |
| trimText(String) |   | 40% |   | 50% | 2 | 3 | 1 | 3 | 0 | 1 |
| isEventStart(String, LogQueryService.LogType) |   | 45% |   | 25% | 3 | 4 | 3 | 5 | 0 | 1 |
| lambda$queryFrontendNode$4(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| readRecentText(List, List, int) |   | 84% |   | 66% | 2 | 4 | 3 | 15 | 0 | 1 |
| parseEvents(String, LogQueryService.LogType) |   | 88% |   | 57% | 5 | 8 | 3 | 18 | 0 | 1 |
| lastModified(Path) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| queryFrontendNode(LogQueryService.QueryRequest, String) |   | 92% |   | 75% | 1 | 3 | 1 | 13 | 0 | 1 |
| listCandidateFiles(String, LogQueryService.LogType) |   | 85% |   | 50% | 1 | 2 | 3 | 11 | 0 | 1 |
| normalizePattern(String) |   | 94% |   | 50% | 1 | 2 | 1 | 9 | 0 | 1 |
| lambda$normalizeNodes$13(String) |  | 85% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| lambda$normalize$1(String) |  | 85% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| buildGroups(List, int) |  | 100% |  | 100% | 0 | 2 | 0 | 12 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 16 | 0 | 1 |
| normalizeNodes(List) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| filterForFrontend(LogQueryService.QueryRequest) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| filterForBackend(LogQueryService.QueryRequest) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| clamp(Integer, int, int, int) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| lambda$filterForBackend$3(String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$filterForFrontend$2(String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| countDistinctPatterns(List) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getCurrentFrontendNode() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$buildGroups$6(String, String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$queryFrontendNode$5(String) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$listCandidateFiles$12(LogQueryService.LogType, Path) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$listCandidateFiles$11(Path) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$countDistinctPatterns$10(LogQueryService.ParsedEvent) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$normalize$0(String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildGroups$9(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildGroups$8(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildGroups$7(Object) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| LogQueryService() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |