code: public BitcoinURI resolve(String label, String currency, boolean validateTLSA) throws WalletNameLookupException {
  
          String resolved;
          label = label.toLowerCase();
          currency = currency.toLowerCase();
  
          if (label.isEmpty()) {
              throw new WalletNameLookupException("Wallet Name Label Must Non-Empty");
          }
  
          try {
              resolved = this.resolver.resolve(String.format("_%s._wallet.%s", currency, DNSUtil.ensureDot(this.preprocessWalletName(label))), Type.TXT);
              if (resolved == null || resolved.equals("")) {
                  throw new WalletNameCurrencyUnavailableException("Currency Not Available in Wallet Name");
              }
          } catch (DNSSECException e) {
              if (this.backupDnsServerIndex >= this.resolver.getBackupDnsServers().size()) {
                  throw new WalletNameLookupException(e.getMessage(), e);
              }
              this.resolver.useBackupDnsServer(this.backupDnsServerIndex++);
              return this.resolve(label, currency, validateTLSA);
          }
          byte[] decodeResult = BaseEncoding.base64().decode(resolved);
          try {
              URL walletNameUrl = new URL(new String(decodeResult));
              return processWalletNameUrl(walletNameUrl, validateTLSA);
          } catch (MalformedURLException e) { /* This is not a URL */ }
  
          try {
              this.backupDnsServerIndex = 0;
              return new BitcoinURI(resolved);
          } catch (BitcoinURIParseException e) {
              try {
                  return new BitcoinURI("bitcoin:" + resolved);
              } catch (BitcoinURIParseException e1) {
                  throw new WalletNameLookupException("BitcoinURI Creation Failed for " + resolved, e1);
              }
          }
      }
docs: Resolve a Wallet Name
  
  This method is thread safe as it does not depend on any externally mutable variables.
  
  @param label        DNS Name (i.e., wallet.mattdavid.xyz)
  @param currency     3 Letter Code to Denote the Requested Currency (i.e., "btc", "ltc", "dgc")
  @param validateTLSA Boolean to require TLSA validation for an URL Endpoints
  @return Raw Cryptocurrency Address or Bitcoin URI (BIP21/BIP72)
  @throws WalletNameLookupException Wallet Name Lookup Failure including message