    @Test
    public void testExtractEventParametersWithLogGivenATransactionReceipt() {


        final Event testEvent1 = new Event(
                "TestEvent1",
                Collections.<TypeReference<?>>emptyList(),
                Collections.<TypeReference<?>>emptyList());

        final Event testEvent2 = new Event(
                "TestEvent2",
                Collections.<TypeReference<?>>emptyList(),
                Collections.<TypeReference<?>>emptyList());

        final List<Log> logs = Arrays.asList(
                new Log(false, "" + 0, "0", "0x0", "0x0", "0", "0x1", "", "",
                        singletonList(EventEncoder.encode(testEvent1))),
                new Log(false, "" + 0, "0", "0x0", "0x0", "0", "0x2", "", "",
                        singletonList(EventEncoder.encode(testEvent2)))
        );

        final TransactionReceipt transactionReceipt = new TransactionReceipt();
        transactionReceipt.setLogs(logs);

        final List<Contract.EventValuesWithLog> eventValuesWithLogs1 =
                contract.extractEventParametersWithLog(testEvent1, transactionReceipt);

        assertThat(eventValuesWithLogs1.size(), equalTo(1));
        assertThat(eventValuesWithLogs1.get(0).getLog(), equalTo(logs.get(0)));

        final List<Contract.EventValuesWithLog> eventValuesWithLogs2 =
                contract.extractEventParametersWithLog(testEvent2, transactionReceipt);

        assertThat(eventValuesWithLogs2.size(), equalTo(1));
        assertThat(eventValuesWithLogs2.get(0).getLog(), equalTo(logs.get(1)));
    }