core/play/src/main/java/play/libs/reflect/MemberUtils.java
private static int compareParameterTypes(
      final Executable left, final Executable right, final Class<?>[] actual) {
    final float leftCost = getTotalTransformationCost(actual, left);
    final float rightCost = getTotalTransformationCost(actual, right);
    return leftCost < rightCost ? -1 : rightCost < leftCost ? 1 : 0;
  }
private static int compareParameterTypes(
      final Executable left, final Executable right, final Class<?>[] actual) {
    final float leftCost = getTotalTransformationCost(actual, left);
    final float rightCost = getTotalTransformationCost(actual, right);
    return leftCost < rightCost ? -1 : rightCost < leftCost ? 1 : 0;
  }
Compares the relative fitness of two Executables in terms of how well they match a set of
runtime parameter types, such that a list ordered by the results of the comparison would return
the best match first (least).

@param left the "left" Executable
@param right the "right" Executable
@param actual the runtime parameter types to match against {@code left}/{@code right}
@return int consistent with {@code compare} semantics