public static BitcoinURI of(String uri) throws BitcoinURIParseException {
        // TODO: Discover (via Service Loader mechanism) the correct Network from the URI string
        return new BitcoinURI(uri, null);
    }
@Test(expected = BitcoinURIParseException.class)
    public void testBad_TooLargeAmount() throws BitcoinURIParseException {
        BigDecimal tooLargeByOne = new BigDecimal(Long.MAX_VALUE).add(BigDecimal.ONE);
        BitcoinURI.of(BITCOIN_SCHEME + ":" + MAINNET_GOOD_ADDRESS
                + "?amount=" + tooLargeByOne.movePointLeft(8), MAINNET);
    }