Running master 4d661ba:
```
src/bitcoin-cli combinepsbt [""] or src/bitcoin-cli combinepsbt []
```

```
  * frame #0: 0x000000010016054a bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional_detail::optional_base<CMutableTransaction>::is_initialized(this=0x0000000000000000) const at optional.hpp:394 [opt]
    frame #1: 0x000000010016054a bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional_detail::optional_base<CMutableTransaction>::optional_base(this=<unavailable>, rhs=0x0000000000000000) at optional.hpp:196 [opt]
    frame #2: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional<CMutableTransaction>::optional(this=0x000070000b9fe7c0, (null)=0x0000000000000000) at optional.hpp:958 [opt]
    frame #3: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional<CMutableTransaction>::optional(this=0x000070000b9fe7c0, (null)=0x0000000000000000) at optional.hpp:958 [opt]
    frame #4: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(this=0x000070000b9fe7c0, psbt_in=0x0000000000000000) at sign.h:576 [opt]
    frame #5: 0x0000000100142ae5 bitcoind`combinepsbt(JSONRPCRequest const&) [inlined] PartiallySignedTransaction::PartiallySignedTransaction(this=0x000070000b9fe700, psbt_in=<unavailable>) at sign.h:576 [opt]
    frame #6: 0x0000000100142ae0 bitcoind`combinepsbt(request=<unavailable>) at rawtransaction.cpp:1526 [opt]
    frame #7: 0x0000000100170f0a bitcoind`CRPCTable::execute(this=<unavailable>, request=0x000070000b9fead0) const at server.cpp:557 [opt]
```
UniValue::VBOOL
        }, true
    );
    CMutableTransaction rawTx = ConstructTransaction(request.params[0], request.params[1], request.params[2], request.params[3]);
    return EncodeHexTx(CTransaction(rawTx));
}
static UniValue decoderawtransaction(const JSONRPCRequest& request)
{
    if (request.fHelp || request.params.size() < 1 || request.params.size() > 2)
        throw std::runtime_error(
            RPCHelpMan{"decoderawtransaction",
                "\nReturn a JSON object representing the serialized, hex-encoded transaction.\n",
                {
                    {"hexstring", RPCArg::Type::STR_HEX,  false,  "", "The transaction hex string"},
                    {"iswitness", RPCArg::Type::BOOL,  true,  "depends on heuristic tests", "Whether the transaction hex is a serialized witness transaction\n"
            "                         If iswitness is not present, heuristic tests will be used in decoding"},
                },
                RPCResult{
            "{\n"
            "  \"txid\" : \"id\",        (string) The transaction id\n"
            "  \"hash\" : \"id\",        (string) The transaction hash (differs from txid for witness transactions)\n"
            "  \"size\" : n,             (numeric) The transaction size\n"
            "  \"vsize\" : n,            (numeric) The virtual transaction size (differs from size for witness transactions)\n"
            "  \"weight\" : n,           (numeric) The transaction's weight (between vsize*4 - 3 and vsize*4)\n"
            "  \"version\" : n,          (numeric) The version\n"
            "  \"locktime\" : ttt,       (numeric) The lock time\n"
            "  \"vin\" : [               (array of json objects)\n"
            "     {\n"
            "       \"txid\": \"id\",    (string) The transaction id\n"
            "       \"vout\": n,         (numeric) The output number\n"