### Question:
BitpandaProExchange implements IExchangeAdvanced, IRateSourceAdvanced { @Override public String sendCoins(String destinationAddress, BigDecimal amount, String cryptoCurrency, String description) { return safely(() -> { assertValidCrypto(cryptoCurrency); final WithdrawCrypto.Recipient recipient; if (CryptoCurrency.XRP.getCode().equals(cryptoCurrency)) { recipient = xrpRecipient(destinationAddress); } else { recipient = defaultRecipient(destinationAddress); } final WithdrawCrypto payload = new WithdrawCrypto(); payload.setAmount(amount); payload.setCurrency(cryptoCurrency); payload.setRecipient(recipient); final CryptoWithdraw withdrawal = api.withdrawCrypto(payload); return withdrawal.getTransactionId().toString(); }, "sendCoins", destinationAddress, amount, cryptoCurrency, description); } BitpandaProExchange(URI baseUri, String apikey, String preferredFiatCurrency); static IRateSourceAdvanced asRateSource(String preferredFiatCurrency); static IExchangeAdvanced asExchange(String apikey, String preferredFiatCurrency); @Override Set<String> getCryptoCurrencies(); @Override Set<String> getFiatCurrencies(); @Override String getPreferredFiatCurrency(); @Override BigDecimal getExchangeRateLast(String cryptoCurrency, String fiatCurrency); @Override BigDecimal getExchangeRateForBuy(String cryptoCurrency, String fiatCurrency); @Override BigDecimal getExchangeRateForSell(String cryptoCurrency, String fiatCurrency); @Override BigDecimal calculateBuyPrice(String cryptoCurrency, String fiatCurrency, BigDecimal cryptoAmount); @Override BigDecimal calculateSellPrice(String cryptoCurrency, String fiatCurrency, BigDecimal cryptoAmount); @Override BigDecimal getCryptoBalance(String cryptoCurrency); @Override BigDecimal getFiatBalance(String fiatCurrency); @Override String getDepositAddress(String cryptoCurrency); @Override String sendCoins(String destinationAddress, BigDecimal amount, String cryptoCurrency, String description); @Override String purchaseCoins(BigDecimal amount, String cryptoCurrency, String fiatCurrencyToUse, String description); @Override String sellCoins(BigDecimal cryptoAmount, String cryptoCurrency, String fiatCurrencyToUse,
        String description); @Override ITask createPurchaseCoinsTask(BigDecimal amount, String cryptoCurrency, String fiatCurrencyToUse, String description); @Override ITask createSellCoinsTask(BigDecimal amount, String cryptoCurrency, String fiatCurrencyToUse, String description);  }### Answer:
@Test public void shouldWithdrawBitcoin() { final String transaction = subject.sendCoins("3FXtMi8gC2TUgzBoFnBxeRKWz1Gw8bSrbJ", BigDecimal.ONE, BTC.getCode(), "batm-test"); assertNotNull(transaction); }