@Test
public void testTransfer_MultiSig() throws IOException {

    setUpWireMockForCall("invokescript", "invokescript_transfer.json");
    setUpWireMockForGetBlockCount(1000);
    setUpWireMockForInvokeFunction("decimals", "invokefunction_decimals.json");
    setUpWireMockForBalanceOf(multiSigAccount.getScriptHash(),
            "invokefunction_balanceOf_3.json");
    setUpWireMockForBalanceOf(account1.getScriptHash(), "invokefunction_balanceOf_4.json");
    byte[] expectedScript = new ScriptBuilder()
            .contractCall(NEO_TOKEN_SCRIPT_HASH,
                    NEP5_TRANSFER, Arrays.asList(
                            ContractParameter.hash160(multiSigAccount.getScriptHash()),
                            ContractParameter.hash160(RECIPIENT_SCRIPT_HASH),
                            ContractParameter.integer(3)))
            .contractCall(NEO_TOKEN_SCRIPT_HASH,
                    NEP5_TRANSFER, Arrays.asList(
                            ContractParameter.hash160(account1.getScriptHash()),
                            ContractParameter.hash160(RECIPIENT_SCRIPT_HASH),
                            ContractParameter.integer(2))).toArray();
    Wallet w = Wallet.withAccounts(multiSigAccount, account1, account2, account3);
    TransactionBuilder b = neoToken.buildMultiTransferInvocation(w, RECIPIENT_SCRIPT_HASH,
            new BigDecimal("5"), Arrays.asList(multiSigAccount, account1));
    assertThat(b.getScript(), is(expectedScript));
}