| matchesFileHeader(String, byte[]) |   | 37% |   | 18% | 12 | 14 | 5 | 10 | 0 | 1 |
| confirmUpload(ChatModels.Actor, Long, Long) |   | 75% |   | 50% | 11 | 12 | 10 | 46 | 0 | 1 |
| lockReadyUploads(ChatModels.Actor, Long, String, List) |   | 77% |   | 65% | 11 | 17 | 6 | 26 | 0 | 1 |
| removeUnusedSealedObject(Long, String, RuntimeException) |   | 28% |  | 0% | 1 | 2 | 4 | 7 | 0 | 1 |
| lambda$confirmUpload$2(ChatModels.Actor, Long, Long, String, String, String, ChatAttachmentStorage.StoredObject, TransactionStatus) |   | 87% |   | 62% | 3 | 5 | 3 | 23 | 0 | 1 |
| validateDeclaredObject(String, String, long) |   | 75% |   | 50% | 5 | 6 | 3 | 10 | 0 | 1 |
| createUploadIntent(ChatModels.Actor, Long, ChatModels.CreateAttachmentUploadCommand) |   | 88% |   | 50% | 4 | 5 | 2 | 17 | 0 | 1 |
| normalizeFileName(String) |   | 72% |   | 50% | 6 | 7 | 2 | 10 | 0 | 1 |
| hash(String[]) |   | 68% | | n/a | 0 | 1 | 2 | 5 | 0 | 1 |
| lambda$createUploadIntent$0(Long, ChatModels.Actor, ChatModels.CreateAttachmentUploadCommand, String, String, String, TransactionStatus) |   | 96% |   | 75% | 2 | 5 | 1 | 35 | 0 | 1 |
| createDownload(ChatModels.Actor, Long, Long, Long) |   | 94% |   | 60% | 4 | 6 | 1 | 21 | 0 | 1 |
| bindToMessage(Long, List, Instant) |   | 94% |   | 75% | 1 | 3 | 1 | 19 | 0 | 1 |
| requireUploadForActor(ChatModels.Actor, Long, Long, boolean) |   | 86% |   | 62% | 3 | 5 | 1 | 9 | 0 | 1 |
| getUpload(ChatModels.Actor, Long, Long) |   | 77% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| requireConversationMember(Long, Long) |   | 77% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| lambda$createDownload$6(Long, ChatModels.Actor, Long, Long, TransactionStatus) |   | 76% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| normalizeMimeType(String) |   | 75% |   | 50% | 2 | 3 | 1 | 3 | 0 | 1 |
| recordQuarantineCleanupFailure(Long, String, int, RuntimeException) |   | 88% | | n/a | 0 | 1 | 2 | 7 | 0 | 1 |
| conciseError(RuntimeException) |   | 77% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| attachmentsForMessages(List) |   | 95% |   | 75% | 1 | 3 | 1 | 10 | 0 | 1 |
| isConfirmedStatus(String) |   | 93% |   | 50% | 7 | 8 | 0 | 7 | 0 | 1 |
| startsWith(byte[], int[]) |   | 92% |   | 83% | 1 | 4 | 1 | 6 | 0 | 1 |
| lambda$matchesFileHeader$9(int) |   | 66% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 10 | 0 | 1 |
| objectKey(Long, Long, Long, String) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| sealedObjectKey(ChatAttachmentUploadEntity, String, String) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| validateStoredObject(ChatAttachmentUploadEntity, ChatAttachmentStorage.StoredObject, String) |  | 100% |   | 60% | 4 | 6 | 0 | 7 | 0 | 1 |
| toUploadView(ChatAttachmentUploadEntity, String) |  | 100% | | n/a | 0 | 1 | 0 | 13 | 0 | 1 |
| cleanupQuarantineSource(ChatAttachmentUploadEntity, String) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| ChatAttachmentService(ConversationMapper, ConversationMemberMapper, ChatAttachmentUploadMapper, ChatAttachmentMapper, ChatAttachmentStorage, ChatAttachmentStorageProperties, TransactionTemplate) |  | 100% | | n/a | 0 | 1 | 0 | 9 | 0 | 1 |
| toUnsigned(byte[]) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| toAttachmentView(ChatAttachmentEntity) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| lambda$recordQuarantineCleanupFailure$4(Long, String, int, String, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$cleanupQuarantineSource$3(ChatAttachmentUploadEntity, String, int, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| attachmentsForMessage(Long) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lambda$attachmentsForMessages$8(Map, Long, List) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$getUpload$5(ChatModels.Actor, Long, Long, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$confirmUpload$1(ChatModels.Actor, Long, Long, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$attachmentsForMessages$7(Long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |