Deprecate whereNotNull from IterableNullableExtensions (#332)

Dart SDK since 3.0 has an exact equivalent extension `nonNulls` in the core.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d90c157..f93bdbc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,9 +5,12 @@
 - Fix `mergeSort` when the runtime iterable generic is a subtype of the static
   generic.
 - `CanonicalizedMap`: added constructor `fromEntries`.
-- Require Dart `^3.1.0`
 - Mark "mixin" classes as `mixin`.
 - Deprecate `transitiveClosure`. Consider using `package:graphs`.
+- Deprecate `whereNotNull()` from `IterableNullableExtension`. Use `nonNulls`
+  instead - this is an equivalent extension available in Dart core since
+  version 3.0.
+- Require Dart `^3.1.0`
 
 ## 1.18.0
 
diff --git a/lib/src/iterable_extensions.dart b/lib/src/iterable_extensions.dart
index 1bf4b3e..0d52fbb 100644
--- a/lib/src/iterable_extensions.dart
+++ b/lib/src/iterable_extensions.dart
@@ -611,6 +611,7 @@
   /// of this iterable, in their original iteration order.
   ///
   /// For an `Iterable<X?>`, this method is equivalent to `.whereType<X>()`.
+  @Deprecated('Use .nonNulls instead.')
   Iterable<T> whereNotNull() sync* {
     for (var element in this) {
       if (element != null) yield element;
diff --git a/test/extensions_test.dart b/test/extensions_test.dart
index 3b1401a..6fa6e4a 100644
--- a/test/extensions_test.dart
+++ b/test/extensions_test.dart
@@ -869,17 +869,47 @@
     group('of nullable', () {
       group('.whereNotNull', () {
         test('empty', () {
-          expect(iterable(<int?>[]).whereNotNull(), isEmpty);
+          expect(
+              iterable(<int?>[])
+                  .whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              isEmpty);
         });
         test('single', () {
-          expect(iterable(<int?>[null]).whereNotNull(), isEmpty);
-          expect(iterable(<int?>[1]).whereNotNull(), [1]);
+          expect(
+              iterable(<int?>[
+                null
+              ]).whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              isEmpty);
+          expect(
+              iterable(<int?>[
+                1
+              ]).whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              [1]);
         });
         test('multiple', () {
-          expect(iterable(<int?>[1, 3, 5]).whereNotNull(), [1, 3, 5]);
-          expect(iterable(<int?>[null, null, null]).whereNotNull(), isEmpty);
           expect(
-              iterable(<int?>[1, null, 3, null, 5]).whereNotNull(), [1, 3, 5]);
+              iterable(<int?>[
+                1,
+                3,
+                5
+              ]).whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              [1, 3, 5]);
+          expect(
+              iterable(<int?>[
+                null,
+                null,
+                null
+              ]).whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              isEmpty);
+          expect(
+              iterable(<int?>[
+                1,
+                null,
+                3,
+                null,
+                5
+              ]).whereNotNull(), // ignore: deprecated_member_use_from_same_package
+              [1, 3, 5]);
         });
       });
     });