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`
todo.erase(now);
        done.insert(now);
        auto it = mapWallet.find(now);
        assert(it != mapWallet.end());
        CWalletTx& wtx = it->second;
        int currentconfirm = GetTxDepthInMainChain(wtx);
        // I
        assert(currentconfirm <= 0);
        // i
        if (currentconfirm == 0 && !wtx.isAbandoned()) {
            // I
            assert(!wtx.InMempool());
            wtx.m_state = TxStateInactive{/*ab};
            wtx.MarkDirty();
            batch.WriteTx(wtx);
            NotifyTransactionChanged(wtx.GetHash(), CT_UPDATED);
            // I
            for (unsigned int i = 0; i < wtx.tx->vout.size(); ++i) {
                stdpair<TxSpendsconst_iterator, TxSpendsconst_iterator> range = mapTxSpends.equal_range(COutPoint(now, i));
                for (TxSpendsconst_iterator iter = range.first; iter != range.second; ++iter) {
                    if (!done.count(iter->second)) {
                        todo.insert(iter->second);
                    }
                }
            }
            // I
            // a
            MarkInputsDirty(wtx.tx);
        }
    }