docs: public static <T> List<T> difference(final List<? extends T> list1, final List<? extends T> list2) {
  		final List<T> result = new ArrayList<T>(list1);
  		final Iterator<? extends T> iterator = list2.iterator();
  
  		while (iterator.hasNext()) {
  			result.remove(iterator.next());
  		}
  
  		return result;
  	}