### Question:
GroupingList extends TransformedList<E, List<E>> { @Override public int size() { return grouper.getBarcode().colourSize(Grouper.UNIQUE); } GroupingList(EventList<E> source);  GroupingList(EventList<E> source, Comparator<? super E> comparator); private  GroupingList(SortedList<E> source, Comparator<? super E> comparator, Void dummyParameter); static GroupingList<E> create(EventList<E> source); int indexOfGroup(E groupElement); void setComparator(Comparator<? super E> comparator); @Override void listChanged(ListEvent<E> listChanges); @Override List<E> get(int index); @Override List<E> remove(int index); @Override List<E> set(int index, List<E> value); @Override void add(int index, List<E> value); @Override int size(); @Override void dispose();  }### Answer:
@Test public void testWithFilters() { EventList<String> source = new BasicEventList<>(); FilterList<String> filtered = new FilterList<>(source); GroupingList<String> grouped = new GroupingList<>(filtered, GlazedListsTests .getFirstLetterComparator()); source.addAll(Arrays.asList("CGG")); assertEquals(1, grouped.size()); filtered.setMatcher(new Matcher<String>() { @Override public boolean matches(String item) { return !item.equals("CGG"); } }); assertEquals(0, grouped.size()); }