code: public synchronized void provideRefundSignature(byte[] theirSignature, @Nullable KeyParameter userKey)
              throws SignatureDecodeException, VerificationException {
          checkNotNull(theirSignature);
          stateMachine.checkState(State.WAITING_FOR_SIGNED_REFUND);
          TransactionSignature theirSig = TransactionSignature.decodeFromBitcoin(theirSignature, true, false);
          if (theirSig.sigHashMode() != Transaction.SigHash.NONE || !theirSig.anyoneCanPay())
              throw new VerificationException("Refund signature was not SIGHASH_NONE|SIGHASH_ANYONECANPAY");
          // Sign the refund transaction ourselves.
          final TransactionOutput multisigContractOutput = multisigContract.getOutput(0);
          try {
              multisigScript = multisigContractOutput.getScriptPubKey();
          } catch (ScriptException e) {
              throw new RuntimeException(e);  // Cannot happen: we built this ourselves.
          }
          TransactionSignature ourSignature =
                  refundTx.calculateSignature(0, myKey.maybeDecrypt(userKey),
                          multisigScript, Transaction.SigHash.ALL, false);
          // Insert the signatures.
          Script scriptSig = ScriptBuilder.createMultiSigInputScript(ourSignature, theirSig);
          log.info("Refund scriptSig: {}", scriptSig);
          log.info("Multi-sig contract scriptPubKey: {}", multisigScript);
          TransactionInput refundInput = refundTx.getInput(0);
          refundInput.setScriptSig(scriptSig);
          refundInput.verify(multisigContractOutput);
          stateMachine.transition(State.SAVE_STATE_IN_WALLET);
      }
docs: <p>When the servers signature for the refund transaction is received, call this to verify it and sign the
  complete refund ourselves.</p>
  
  <p>If this does not throw an exception, we are secure against the loss of funds and can safely provide the server
  with the multi-sig contract to lock in the agreement. In this case, both the multisig contract and the refund
  transaction are automatically committed to wallet so that it can handle broadcasting the refund transaction at
  the appropriate time if necessary.</p>