Steps:
1. Send transaction (A) to a different wallet
2. Using the change, create another transaction (B) to a different wallet
3. `abandontransaction` B
4. `bumpfee` A fails with `Transaction has descendants in the wallet`
//
        // N
        // w
        // d
        // i
        // h
        SyncTransaction(tx, TxStateInactive{});
    }
}
void CWalletblockConnected(const interfacesBlockInfo& block)
{
    assert(block.data);
    LOCK(cs_);
    m_last_block_processed_height = block.height;
    m_last_block_processed = block.hash;
    for (size_t index = 0; index < block.data->vtx.size(); index++) {
        SyncTransaction(block.data->vtx[index], TxStateConfirmed{block.hash, block.height, static_cast<int>(index)});
        transactionRemovedFromMempool(block.data->vtx[index], MemPoolRemovalReasonBLOCK);
    }
}
void CWalletblockDisconnected(const interfacesBlockInfo& block)
{
    assert(block.data);
    LOCK(cs_);
    // A
    // b
    // U
    // f
    m_last_block_processed_height = block.height - 1;
    m_last_block_processed = *Assert(block.prev_hash);