I noticed there is a problem with dumpwallet option. It does not seem to dump segwit addresses ("3"), and dumps only the standard one ("1"). Is it a bug or work as intended? How can I perform full dump of an wallet then?
nLowestTimestamp = chainActive.Tip()->GetBlockTime();
    } else {
        fRescan = false;
    }
    UniValue response(UniValue::VARR);
    for (const UniValue& data : requests.getValues()) {
        const int64_t timestamp = std::max(GetImportTimestamp(data, now), minimumTimestamp);
        const UniValue result = ProcessImport(pwallet, data, timestamp);
        response.push_back(result);
        if (!fRescan) {
            continue;
        }
        
        if (result["success"].get_bool()) {
            fRunScan = true;
        }
        
        if (timestamp < nLowestTimestamp) {
            nLowestTimestamp = timestamp;
        }
    }
    if (fRescan && fRunScan && requests.size()) {
        int64_t scannedTime = pwallet->RescanFromTime(nLowestTimestamp, true );
        pwallet->ReacceptWalletTransactions();
        if (scannedTime > nLowestTimestamp) {
            std::vector<UniValue> results = response.getValues();
            response.clear();
            response.setArray();
            size_t i = 0;
            for (const UniValue& request : requests.getValues()) {