public static FeeFilterMessage read(ByteBuffer payload) throws BufferUnderflowException, ProtocolException {
        Coin feeRate = Coin.read(payload);
        check(feeRate.signum() >= 0, () -> new ProtocolException("fee rate out of range: " + feeRate));
        return new FeeFilterMessage(feeRate);
    }
@Test(expected = ProtocolException.class)
    @Parameters(method = "invalidFeeRates")
    public void invalid(Coin feeRate) {
        byte[] buf = ByteBuffer.allocate(Long.BYTES).order(ByteOrder.LITTLE_ENDIAN).putLong(feeRate.getValue()).array();
        FeeFilterMessage ffm = FeeFilterMessage.read(ByteBuffer.wrap(buf));
    }