android/guava/src/com/google/common/collect/Ordering.java
@GwtCompatible(serializable = true)
  public <F> Ordering<F> onResultOf(Function<F, ? extends T> function) {
    return new ByFunctionOrdering<>(function, this);
  }
@GwtCompatible(serializable = true)
  public <F> Ordering<F> onResultOf(Function<F, ? extends T> function) {
    return new ByFunctionOrdering<>(function, this);
  }
Returns a new ordering on {@code F} which orders elements by first applying a function to them,
then comparing those results using {@code this}. For example, to compare objects by their
string forms, in a case-insensitive manner, use:

<pre>{@code
Ordering.from(String.CASE_INSENSITIVE_ORDER)
.onResultOf(Functions.toStringFunction())
}</pre>

<p><b>Java 8 users:</b> Use {@code Comparator.comparing(function, thisComparator)} instead (you
can omit the comparator if it is the natural order).