public interface COMPARER<T> { // compare is supposed to return -1 if o1 is smaller than o2, 1 // if greater and 0 if neither one is smaller. This may mean equality but // also not comparable. int compare(T o1, T o2); }