@Override
    public boolean add(FilteredBlock block) throws VerificationException, PrunedException {
        boolean success = super.add(block);
        if (success) {
            trackFilteredTransactions(block.getTransactionCount());
        }
        return success;
    }
@Test
    public void unconnectedBlocks() throws Exception {
        Context.propagate(new Context(100, Coin.ZERO, false, true));
        Block b1 = TESTNET.getGenesisBlock().createNextBlock(coinbaseTo);
        Block b2 = b1.createNextBlock(coinbaseTo);
        Block b3 = b2.createNextBlock(coinbaseTo);
        // Connected.
        assertTrue(testNetChain.add(b1));
        // Unconnected but stored. The head of the chain is still b1.
        assertFalse(testNetChain.add(b3));
        assertEquals(testNetChain.getChainHead().getHeader(), b1.cloneAsHeader());
        // Add in the middle block.
        assertTrue(testNetChain.add(b2));
        assertEquals(testNetChain.getChainHead().getHeader(), b3.cloneAsHeader());
    }