GrabberCollection implements Collection<G>, CachedIF { public GrabberCollection(Collection<O> coll, GrabberIF<O, G> grabber) { this.coll = coll; this.grabber = grabber; } GrabberCollection(Collection<O> coll, GrabberIF<O, G> grabber);  GrabberCollection(Collection<O> coll, GrabberIF<O, G> grabber, DeciderIF<G> decider); @Override void refresh(); @Override void clear(); @Override boolean contains(Object o); @Override boolean containsAll(Collection<?> c); @Override boolean equals(Object o); @Override boolean isEmpty(); @Override Iterator<G> iterator(); @Override int size(); @Override Object[] toArray(); @Override G[] toArray(G[] a); @Override boolean add(G o); @Override boolean addAll(Collection<? extends G> c); @Override boolean remove(Object o); @Override boolean removeAll(Collection<?> c); @Override boolean retainAll(Collection<?> c);  }
@Test public void testGrabberCollection() { UpperCaseGrabber grbU = new UpperCaseGrabber(); testCollection(new GrabberCollection(getCollectionLow(intended_size), grbU), getCollection(intended_size), getCollection(intended_size - 5)); testCollection(new GrabberCollection(getCollectionLow(intended_size), grbU, getDeciders(intended_size)), getCollection(intended_size), getCollection(intended_size - 5)); intended_size = 10; }