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`
}
utilResult<CTxDestination> ReserveDestinationGetReservedDestination(bool internal)
{
    m_spk_man = p->GetScriptPubKeyMan(type, internal);
    if (!m_spk_man) {
        return utilError{strprintf(_("Error No %s addresses available."), FormatOutputType(type))};
    }
    if (nIndex == -1) {
        CKeyPool keypool;
        auto op_address = m_spk_man->GetReservedDestination(type, internal, nIndex, keypool);
        if (!op_address) return op_address;
        address = *op_address;
        fInternal = keypool.fInternal;
    }
    return address;
}
void ReserveDestinationKeepDestination()
{
    if (nIndex != -1) {
        m_spk_man->KeepDestination(nIndex, type);
    }
    nIndex = -1;
    address = CNoDestination();
}
void ReserveDestinationReturnDestination()
{
    if (nIndex != -1) {
        m_spk_man->ReturnDestination(nIndex, fInternal, address);
    }
    nIndex = -1;