| parse(MultipartFile) |   | 80% |   | 54% | 5 | 7 | 6 | 34 | 0 | 1 |
| inspectDocxArchive(Path) |   | 71% |   | 60% | 8 | 11 | 7 | 28 | 0 | 1 |
| detectMimeType(MultipartFile) |   | 39% |   | 27% | 8 | 10 | 6 | 10 | 0 | 1 |
| extractDocxText(XWPFDocument) |   | 74% |   | 50% | 6 | 8 | 7 | 22 | 0 | 1 |
| isHeadingStyle(String) |  | 0% |  | 0% | 4 | 4 | 4 | 4 | 1 | 1 |
| parseDocx(Path) |   | 75% |   | 50% | 1 | 2 | 6 | 16 | 0 | 1 |
| extractHeadingLevel(String) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| sha256() |   | 30% | | n/a | 0 | 1 | 2 | 3 | 0 | 1 |
| validateUpload(MultipartFile) |   | 78% |   | 66% | 2 | 4 | 1 | 6 | 0 | 1 |
| inferRegexHeadingLevel(String) |   | 89% |   | 75% | 3 | 7 | 0 | 6 | 0 | 1 |
| suffixFor(String) |  | 92% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| extractCandidatesBounded(String, int) |  | 100% |  | 100% | 0 | 10 | 0 | 27 | 0 | 1 |
| splitAtSentenceBoundaries(String, int) |  | 100% |   | 92% | 1 | 8 | 0 | 19 | 0 | 1 |
| detectHeading(String) |  | 100% |   | 91% | 1 | 7 | 0 | 10 | 0 | 1 |
| parsePdf(Path) |  | 100% |  | 100% | 0 | 2 | 0 | 8 | 0 | 1 |
| computeContentHash(MultipartFile) |  | 100% |   | 75% | 1 | 3 | 0 | 8 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| buildSectionPath(Deque) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| extractCandidates(String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| DocumentParserService() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| DocumentParserService(DocumentImportLimits) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| computeContentHash(byte[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |