1: 2: 3: 4: 5:
private static <T> List<T> intersection(Collection<T> c1, Collection<T> c2) { List<T> result = new ArrayList<T>(c1); result.retainAll(c2); return result; }