*<Null safety>*
S? maxBy <S, T>(Iterable<S> values, T orderBy(S?), {int? compare(T, T)})
S? maxBy<S, T>(Iterable<S> values, T Function(S?) orderBy, {int? Function(T, T)? compare}) { compare ??= defaultCompare; S? maxValue; T? maxOrderBy; for (var element in values) { var elementOrderBy = orderBy(element); if (maxOrderBy == null || compare(elementOrderBy, maxOrderBy)! > 0) { maxValue = element; maxOrderBy = elementOrderBy; } } return maxValue; }