| CLIProductBuilder |   | 29% |   | 39% | 47 | 65 | 194 | 269 | 6 | 11 | 0 | 1 |
| FileProductStorage |   | 63% |   | 62% | 33 | 77 | 110 | 295 | 9 | 34 | 0 | 1 |
| ExternalNotificationListener |   | 23% |   | 30% | 27 | 37 | 88 | 122 | 8 | 14 | 0 | 1 |
| ReplicationStorageListener |  | 0% |  | 0% | 20 | 20 | 101 | 101 | 9 | 9 | 1 | 1 |
| QuakemlProductCreator |   | 79% |   | 64% | 65 | 126 | 84 | 409 | 8 | 33 | 0 | 1 |
| ProductResender |  | 0% |  | 0% | 30 | 30 | 90 | 90 | 4 | 4 | 1 | 1 |
| ProductClient |   | 42% |   | 39% | 27 | 44 | 92 | 156 | 6 | 15 | 0 | 1 |
| AdminSocketServer |  | 0% |  | 0% | 25 | 25 | 89 | 89 | 14 | 14 | 1 | 1 |
| DefaultNotificationReceiver |   | 71% |   | 60% | 37 | 74 | 61 | 229 | 14 | 36 | 0 | 1 |
| Bootstrap |   | 49% |   | 34% | 14 | 21 | 67 | 122 | 1 | 5 | 0 | 1 |
| WebSocketClient |   | 75% |   | 70% | 24 | 71 | 27 | 195 | 11 | 46 | 0 | 1 |
| ContentListener |  | 0% |  | 0% | 22 | 22 | 61 | 61 | 12 | 12 | 1 | 1 |
| SocketProductSender |   | 67% |   | 55% | 27 | 46 | 59 | 160 | 15 | 28 | 0 | 1 |
| InputWedge |   | 71% |   | 59% | 30 | 59 | 70 | 213 | 5 | 22 | 0 | 1 |
| DefaultNotificationListener |   | 65% |   | 54% | 21 | 45 | 53 | 148 | 7 | 22 | 0 | 1 |
| WebSocketNotificationReceiver |   | 42% |  | 10% | 21 | 31 | 43 | 80 | 16 | 26 | 0 | 1 |
| ReplicationStorageListener.ReplicationTask |  | 0% |  | 0% | 5 | 5 | 40 | 40 | 2 | 2 | 1 | 1 |
| ExecutorListenerNotifier |   | 74% |   | 55% | 28 | 57 | 33 | 154 | 7 | 23 | 0 | 1 |
| EmbeddedPDLClient |  | 0% | | n/a | 3 | 3 | 32 | 32 | 3 | 3 | 1 | 1 |
| HashFileProductStorage |  | 0% |  | 0% | 9 | 9 | 37 | 37 | 5 | 5 | 1 | 1 |
| ProductBuilder |   | 66% |   | 53% | 14 | 31 | 32 | 92 | 4 | 15 | 0 | 1 |
| DefaultNotificationSender |   | 55% |   | 50% | 12 | 26 | 34 | 76 | 7 | 18 | 0 | 1 |
| SocketProductReceiverHandler |   | 66% |   | 53% | 10 | 22 | 27 | 93 | 1 | 8 | 0 | 1 |
| NotificationIndexCleanup |   | 53% |   | 37% | 11 | 20 | 28 | 67 | 4 | 12 | 0 | 1 |
| EIDSNotificationSender |   | 40% |   | 27% | 11 | 17 | 24 | 46 | 2 | 8 | 0 | 1 |
| EIDSNotificationReceiver |   | 64% |   | 61% | 11 | 22 | 25 | 69 | 3 | 9 | 0 | 1 |
| FutureListenerNotifier |  | 0% |  | 0% | 10 | 10 | 26 | 26 | 5 | 5 | 1 | 1 |
| DeflateComparison |   | 68% |  | 0% | 5 | 11 | 18 | 58 | 1 | 7 | 0 | 1 |
| Factory |  | 0% | | n/a | 5 | 5 | 24 | 24 | 5 | 5 | 1 | 1 |
| HeartbeatListener |   | 70% |   | 87% | 7 | 21 | 25 | 74 | 5 | 13 | 0 | 1 |
| SignatureVerifier |   | 79% |   | 71% | 14 | 34 | 13 | 73 | 4 | 15 | 0 | 1 |
| RelayProductListener |   | 65% |   | 50% | 8 | 16 | 21 | 53 | 4 | 10 | 0 | 1 |
| Command |   | 79% |   | 68% | 14 | 27 | 18 | 78 | 8 | 16 | 0 | 1 |
| DefaultStorageListener |  | 0% |  | 0% | 10 | 10 | 18 | 18 | 8 | 8 | 1 | 1 |
| URLProductStorage |   | 76% |   | 50% | 11 | 19 | 13 | 50 | 4 | 12 | 0 | 1 |
| SocketProductReceiver |   | 76% | | 50% | 7 | 15 | 19 | 60 | 6 | 14 | 0 | 1 |
| JDBCNotificationIndex |   | 97% |   | 79% | 17 | 60 | 18 | 274 | 1 | 18 | 0 | 1 |
| EmbeddedPDLClient.new DefaultNotificationListener() {...} |  | 0% |  | 0% | 3 | 3 | 10 | 10 | 2 | 2 | 1 | 1 |
| URLNotificationJSONConverter |   | 76% | | n/a | 2 | 5 | 5 | 22 | 2 | 5 | 0 | 1 |
| URLProductStorage.Format |   | 57% |  | 0% | 4 | 7 | 7 | 15 | 1 | 4 | 0 | 1 |
| ProductClient.new Thread() {...} |  | 0% | | n/a | 2 | 2 | 8 | 8 | 2 | 2 | 1 | 1 |
| EmbeddedPDLClient.new Thread() {...} |  | 0% | | n/a | 2 | 2 | 7 | 7 | 2 | 2 | 1 | 1 |
| ProductKeyChain |   | 93% |   | 92% | 3 | 25 | 5 | 63 | 1 | 12 | 0 | 1 |
| ProductKey |   | 86% |   | 72% | 7 | 20 | 6 | 37 | 2 | 11 | 0 | 1 |
| DebugProductSender |  | 0% | | n/a | 2 | 2 | 6 | 6 | 2 | 2 | 1 | 1 |
| FileProductStorage.new Runnable() {...} |  | 0% | | n/a | 2 | 2 | 3 | 3 | 2 | 2 | 1 | 1 |
| DeflateComparison.CountingOutputStream |   | 51% | | n/a | 2 | 5 | 4 | 9 | 2 | 5 | 0 | 1 |
| NotificationListenerException | | 0% | | n/a | 3 | 3 | 6 | 6 | 3 | 3 | 1 | 1 |
| StorageEvent |  | 67% | | n/a | 3 | 5 | 3 | 11 | 3 | 5 | 0 | 1 |
| DefaultNotificationListener.new TimerTask() {...} | | 55% | | n/a | 0 | 2 | 2 | 6 | 0 | 2 | 0 | 1 |
| DefaultNotificationReceiver.new TimerTask() {...} | | 55% | | n/a | 0 | 2 | 2 | 6 | 0 | 2 | 0 | 1 |
| ContinuableListenerException | | 30% | | n/a | 2 | 3 | 4 | 6 | 2 | 3 | 0 | 1 |
| URLNotificationParser |  | 86% |   | 50% | 2 | 5 | 3 | 16 | 0 | 3 | 0 | 1 |
| HeartbeatInfo |  | 83% | | n/a | 2 | 7 | 4 | 16 | 2 | 7 | 0 | 1 |
| InvalidSignatureException | | 44% | | n/a | 1 | 2 | 2 | 4 | 1 | 2 | 0 | 1 |
| ContentTypeNotSupportedException | | 44% | | n/a | 1 | 2 | 2 | 4 | 1 | 2 | 0 | 1 |
| ConfigurationException | | 44% | | n/a | 1 | 2 | 2 | 4 | 1 | 2 | 0 | 1 |
| ProductAlreadyInStorageException | | 44% | | n/a | 1 | 2 | 2 | 4 | 1 | 2 | 0 | 1 |
| URLNotification |  | 90% |   | 66% | 3 | 9 | 0 | 8 | 0 | 3 | 0 | 1 |
| URLNotificationXMLConverter |  | 97% | | n/a | 1 | 3 | 1 | 17 | 1 | 3 | 0 | 1 |
| ConsolidatedFileProductStorage |  | 90% | | n/a | 1 | 3 | 2 | 13 | 1 | 3 | 0 | 1 |
| WebSocketClient.AnyMessageRunner |  | 85% | | 50% | 1 | 3 | 1 | 7 | 0 | 2 | 0 | 1 |
| Command.StreamTransferThread |  | 94% | | n/a | 0 | 2 | 1 | 8 | 0 | 2 | 0 | 1 |
| HeartbeatStatus |  | 100% |  | 100% | 0 | 10 | 0 | 20 | 0 | 6 | 0 | 1 |
| FileProductStorage.StorageProductOutput |  | 100% |  | 100% | 0 | 7 | 0 | 18 | 0 | 5 | 0 | 1 |
| NotificationListenerCallable |  | 100% | | n/a | 0 | 3 | 0 | 11 | 0 | 3 | 0 | 1 |
| DefaultNotification |  | 100% |  | 83% | 1 | 7 | 0 | 8 | 0 | 4 | 0 | 1 |
| NotificationEvent |  | 100% | | n/a | 0 | 4 | 0 | 6 | 0 | 4 | 0 | 1 |
| StorageEvent.StorageEventType |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 | 0 | 1 |
| Command.new TimerTask() {...} | | 100% | | n/a | 0 | 2 | 0 | 3 | 0 | 2 | 0 | 1 |
| Command.CommandTimeout | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |