class Collection {} class Comparator {} public class Collections { public static T min(Collection coll, Comparator comp) { if (comp==null) return (T)min((Collection) (Collection) coll); return null; } public static > T min(Collection coll) { return null; } private interface SelfComparable extends Comparable {} }