    @Test
    public void first_item_with_charge_works() throws Exception {


        // given
        InvoiceForTesting invoice = new InvoiceForTesting();
        Charge charge1 = new Charge();
        Charge charge2 = new Charge();
        InvoiceItem itemWithCharge1 = new InvoiceItemForTesting(invoice);
        itemWithCharge1.setCharge(charge1);
        itemWithCharge1.setSequence(VT.bi(1)); // done for sort order in SortedSet items
        InvoiceItem otherItemWithCharge1 = new InvoiceItemForTesting(invoice);
        otherItemWithCharge1.setCharge(charge1);
        otherItemWithCharge1.setSequence(VT.bi(2)); // done for sort order SortedSet items
        InvoiceItem itemWithCharge2 = new InvoiceItemForTesting(invoice);
        itemWithCharge2.setCharge(charge2);
        invoice.getItems().addAll(Arrays.asList(itemWithCharge1, otherItemWithCharge1, itemWithCharge2));
        assertThat(invoice.getItems().size()).isEqualTo(3);

        // when, then
        assertThat(invoice.findFirstItemWithCharge(charge1)).isEqualTo(itemWithCharge1);
        assertThat(invoice.findFirstItemWithCharge(charge2)).isEqualTo(itemWithCharge2);

    }