@SuppressWarnings("unchecked")
	public static <TSource, Value> Comparable<Value> min(Iterable<TSource> iterable, Func1<Comparable<Value>, TSource> selector) {
		Comparable<Value> minVal = null;
		for (TSource tSource : iterable) {
			Comparable<Value> comparableVal = selector.call(tSource);
			if (minVal == null) minVal = comparableVal;
			else if (minVal.compareTo((Value) comparableVal) > 0) minVal = comparableVal;
		}
		return minVal;
	}