anchor.diff:  /// If [i] is empty, an [Extent] is returned with [:null:] values for [:min:]
   /// and [:max:], since there are no valid values for them.
   Extent<T> extent<T>(Iterable<T> i, [Comparator<T> compare]) {
  +  if (i.isEmpty) return new Extent(null, null);
     final Comparator<T> _compare = compare ?? Comparable.compare;
     var iterator = i.iterator;
     var hasNext = iterator.moveNext();
  
positive.code: /// [Comparable.compare] is used. If [i] contains null elements, an exception
  /// will be thrown.
  T max<T>(Iterable<T> i, [Comparator<T> compare]) {
    final Comparator<T> _compare = compare ?? Comparable.compare;
    return i.isEmpty ? null : i.reduce((a, b) => _compare(a, b) > 0 ? a : b);
  }
  
negative.code: /// [Comparable.compare] is used. If [i] contains null elements, an exception
  /// will be thrown.
  T min<T>(Iterable<T> i, [Comparator<T> compare]) {
    if (i.isEmpty) return null;
    final Comparator<T> _compare = compare ?? Comparable.compare;
    return i.isEmpty ? null : i.reduce((a, b) => _compare(a, b) < 0 ? a : b);
  }
  