// Canonical example of bottom-up (implementation) inheritance. import java.util.ArrayList; import java.util.Set; import java.util.HashSet; import java.util.Random; public class CountUniqueArrayList extends ArrayList { public int countUnique() { Set s = new HashSet(); for (T o : this) { s.add(o); } return s.size(); } }