public static TransactionWitness redeemP2WSH(Script witnessScript, TransactionSignature... signatures) {
        List<byte[]> pushes = new ArrayList<>(signatures.length + 2);
        pushes.add(new byte[] {});
        for (TransactionSignature signature : signatures)
            pushes.add(signature.encodeToBitcoin());
        pushes.add(witnessScript.program());
        return TransactionWitness.of(pushes);
    }
@Test
    public void testRedeemP2WSH() throws SignatureDecodeException {
        ECKey.ECDSASignature ecdsaSignature1 = TransactionSignature.decodeFromDER(ByteUtils.parseHex("3045022100c3d84f7bf41c7eda3b23bbbccebde842a451c1a0aca39df706a3ff2fe78b1e0a02206e2e3c23559798b02302ad6fa5ddbbe87af5cc7d3b9f86b88588253770ab9f79"));
        TransactionSignature signature1 = new TransactionSignature(ecdsaSignature1, Transaction.SigHash.ALL, false);
        ECKey.ECDSASignature ecdsaSignature2 = TransactionSignature.decodeFromDER(ByteUtils.parseHex("3045022100fcfe4a58f2878047ef7c5889fc52a3816ad2dd218807daa3c3eafd4841ffac4d022073454df7e212742f0fee20416b418a2c1340a33eebed5583d19a61088b112832"));
        TransactionSignature signature2 = new TransactionSignature(ecdsaSignature2, Transaction.SigHash.ALL, false);

        Script witnessScript = Script.parse(ByteUtils.parseHex("522102bb65b325a986c5b15bd75e0d81cf149219597617a70995efedec6309b4600fa02103c54f073f5db9f68915019801435058c9232cb72c6528a2ca15af48eb74ca8b9a52ae"));

        TransactionWitness witness = TransactionWitness.redeemP2WSH(witnessScript, signature1, signature2);
        assertEquals(4, witness.getPushCount());
        assertArrayEquals(new byte[]{}, witness.getPush(0));
        assertArrayEquals(signature1.encodeToBitcoin(), witness.getPush(1));
        assertArrayEquals(signature2.encodeToBitcoin(), witness.getPush(2));
        assertArrayEquals(witnessScript.program(), witness.getPush(3));
    }