| lambda$maybeProcessNonAnnouncedBlocks$6(long, Block, Long) |  | 0% |  | 0% | 4 | 4 | 9 | 9 | 1 | 1 |
| lambda$getBlockFromPeers$10(long, Optional, Block, Throwable) |   | 42% |   | 25% | 2 | 3 | 8 | 15 | 0 | 1 |
| handleNewBlockHashesFromNetwork(EthMessage) |   | 84% |   | 78% | 3 | 8 | 9 | 45 | 0 | 1 |
| handleNewBlockFromNetwork(EthMessage) |   | 82% |   | 83% | 1 | 4 | 9 | 41 | 0 | 1 |
| maybeRepeatGetBlock(long, Optional) |   | 77% |   | 75% | 1 | 3 | 6 | 27 | 0 | 1 |
| retrieveNonAnnouncedBlock(long) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| toLogString(Collection) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| maybeProcessNonAnnouncedBlocks(Block) |   | 54% |   | 50% | 1 | 2 | 4 | 7 | 0 | 1 |
| logBlockNumberMaybeHash(long, Optional) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| start() |   | 55% |   | 50% | 1 | 2 | 2 | 5 | 0 | 1 |
| lambda$maybeProcessPendingChildrenBlocks$3(List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| maybeProcessPendingBlocks(Block) |   | 78% |   | 50% | 2 | 3 | 2 | 10 | 0 | 1 |
| lambda$importOrSavePendingBlock$20(Block) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| toString() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$runImportTask$23(Block, Block, Throwable) |   | 61% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| lambda$maybeRepeatGetBlock$17(long, Optional) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$maybeRepeatGetBlock$16(long, Optional) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$handleGetBlockErrors$12(long, Optional) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getBlockFromPeers$9(long, Optional) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$maybeProcessPendingChildrenBlocks$5(List, Throwable) |   | 80% |   | 50% | 2 | 3 | 1 | 7 | 0 | 1 |
| lambda$maybeRepeatGetBlock$15(MutableBlockchain, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$handleNewBlockHashesFromNetwork$7(List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| stop() |   | 80% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| lambda$logBlockNumberMaybeHash$24(Hash) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| importOrSavePendingBlock(Block, Bytes) |  | 100% |  | 100% | 0 | 5 | 0 | 31 | 0 | 1 |
| onBlockAdded(BlockAddedEvent) |  | 100% |   | 75% | 1 | 3 | 0 | 18 | 0 | 1 |
| maybeProcessPendingChildrenBlocks(Block) |  | 100% |  | 100% | 0 | 3 | 0 | 17 | 0 | 1 |
| BlockPropagationManager(SynchronizerConfiguration, ProtocolSchedule, ProtocolContext, EthContext, SyncState, PendingBlocksManager, MetricsSystem, BlockBroadcaster, BlockPropagationManager.ProcessingBlocksManager) |  | 100% | | n/a | 0 | 1 | 0 | 16 | 0 | 1 |
| validateAndProcessPendingBlock(BlockHeaderValidator, Block, BlockHeader, BadBlockManager) |  | 100% |  | 100% | 0 | 2 | 0 | 11 | 0 | 1 |
| scheduleGetBlockFromPeers(Optional, long, Optional) |  | 100% | | n/a | 0 | 1 | 0 | 10 | 0 | 1 |
| setupListeners() |  | 100% | | n/a | 0 | 1 | 0 | 13 | 0 | 1 |
| savePendingBlock(Block, Bytes) |  | 100% |  | 100% | 0 | 2 | 0 | 7 | 0 | 1 |
| shouldImportBlockAtHeight(long, long, long) |  | 100% |   | 75% | 1 | 3 | 0 | 5 | 0 | 1 |
| clearListeners() |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 |
| retrieveParentBlock(BlockHeader) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| requestParentBlock(Block) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| broadcastBlock(Block, BlockHeader) |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 |
| runImportTask(Block) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| reactToTTDReachedEvent(boolean) |  | 100% |   | 66% | 2 | 4 | 0 | 5 | 0 | 1 |
| repeatableGetBlockFromPeer(Optional, long, Optional) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| lambda$handleGetBlockErrors$13(long, Optional, Throwable) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| BlockPropagationManager(SynchronizerConfiguration, ProtocolSchedule, ProtocolContext, EthContext, SyncState, PendingBlocksManager, MetricsSystem, BlockBroadcaster) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| processAnnouncedBlock(EthPeer, NewBlockHashesMessage.NewBlockHash) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getBlockFromPeers(Optional, long, Optional) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$scheduleGetBlockFromPeers$19(AbstractPeerTask.PeerTaskResult) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$clearListeners$2(Long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$clearListeners$1(Long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$clearListeners$0(Long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$importOrSavePendingBlock$21(BlockHeaderValidator, Block, BlockHeader, BadBlockManager) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$handleNewBlockHashesFromNetwork$8(long, long, NewBlockHashesMessage.NewBlockHash) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| onNewUnverifiedForkchoice(ForkchoiceEvent) |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| lambda$maybeRepeatGetBlock$18(long, Optional) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| handleGetBlockErrors(long, Optional) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$validateAndProcessPendingBlock$22(Block, BlockHeader) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$repeatableGetBlockFromPeer$11(long, Optional, Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$maybeProcessPendingChildrenBlocks$4(Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isRunning() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$maybeRepeatGetBlock$14(MutableBlockchain, Hash) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |