public <E extends T> E min(@Nullable E a, @Nullable E b) {
    return (compare(a, b) <= 0) ? a : b;
  }
public <E extends T> E min(@Nullable E a, @Nullable E b) {
    return (compare(a, b) <= 0) ? a : b;
  }
public < E extends T > E min ( @ Nullable E a , @ Nullable E b ) { return ( compare ( a , b ) <= 0 ) ? a : b ; }
Returns the lesser of the two values according to this ordering. If the values compare as 0,
the first is returned.

<p><b>Implementation note:</b> this method is invoked by the default implementations of the
other {@code min} overloads, so overriding it will affect their behavior.

<p><b>Java 8 users:</b> Use {@code Collections.min(Arrays.asList(a, b), thisComparator)}
instead (but note that it does not guarantee which tied minimum element is returned).

@param a value to compare, returned if less than or equal to b.
@param b value to compare.
@throws ClassCastException if the parameters are not <i>mutually comparable</i> under this
ordering.
Returns the lesser of the two values according to this ordering . If the values compare as 0 the first is returned .