diff --git a/CHANGELOG.md b/CHANGELOG.md
index 51c0463..7c508f2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,9 @@
 2.10.0-2.0.dev, which is the first version where this package will appear in the
 null safety allow list.
 
-  * AddsSHA-2 512/224 and SHA-2 512/256 from FIPS 180-4
+* Adds SHA-2 512/224 and SHA-2 512/256 from FIPS 180-4
+
+* Deprecates `newInstance` instance members on some classes and updates documentation.
 
 ## 2.1.5
 
diff --git a/lib/src/digest.dart b/lib/src/digest.dart
index 2cade77..1bb46a3 100644
--- a/lib/src/digest.dart
+++ b/lib/src/digest.dart
@@ -21,10 +21,10 @@
     if (other is Digest) {
       final a = bytes;
       final b = other.bytes;
-      if (a.length != b.length) {
+      final n = a.length;
+      if (n != b.length) {
         return false;
       }
-      final n = a.length;
       var mismatch = 0;
       for (var i = 0; i < n; i++) {
         mismatch |= a[i] ^ b[i];
diff --git a/lib/src/digest_sink.dart b/lib/src/digest_sink.dart
index 39b865b..008c8b9 100644
--- a/lib/src/digest_sink.dart
+++ b/lib/src/digest_sink.dart
@@ -6,22 +6,25 @@
 
 /// A sink used to get a digest value out of `Hash.startChunkedConversion`.
 class DigestSink extends Sink<Digest> {
-  /// The value added to the sink, if any.
-  Digest get value => _value;
+  /// The value added to the sink.
+  ///
+  /// A value must have been added using [add] before reading the `value`.
+  Digest get value => _value!;
 
-  late final Digest _value;
+  Digest? _value;
 
   /// Adds [value] to the sink.
   ///
   /// Unlike most sinks, this may only be called once.
   @override
   void add(Digest value) {
+    assert(_value == null);
     _value = value;
   }
 
   @override
   void close() {
     // Ensure late final field was assigned before closing.
-    assert((_value as dynamic) != null);
+    assert(_value != null);
   }
 }
diff --git a/lib/src/hash_sink.dart b/lib/src/hash_sink.dart
index 8cd4b99..adebf22 100644
--- a/lib/src/hash_sink.dart
+++ b/lib/src/hash_sink.dart
@@ -25,8 +25,10 @@
   /// used across invocations of [_iterate].
   final Uint32List _currentChunk;
 
-  /// Messages with more than 2^53-1 bits are not supported. (This is the
-  /// largest value that is representable on both JS and the Dart VM.)
+  /// Messages with more than 2^53-1 bits are not supported.
+  ///
+  /// This is the largest value that is precisely representable
+  /// on both JS and the Dart VM.
   /// So the maximum length in bytes is (2^53-1)/8.
   static const _maxMessageLengthInBytes = 0x0003ffffffffffff;
 
diff --git a/lib/src/md5.dart b/lib/src/md5.dart
index 9874011..fa7d8b3 100644
--- a/lib/src/md5.dart
+++ b/lib/src/md5.dart
@@ -27,8 +27,7 @@
 /// **Warning**: MD5 has known collisions and should only be used when required
 /// for backwards compatibility.
 ///
-/// Note that it's almost always easier to use [md5] rather than creating a new
-/// instance.
+/// Use the [md5] object to perform MD5 hashing.
 class MD5 extends Hash {
   @override
   final int blockSize = 16 * bytesPerWord;
diff --git a/lib/src/sha256.dart b/lib/src/sha256.dart
index 6040d5e..27a8440 100644
--- a/lib/src/sha256.dart
+++ b/lib/src/sha256.dart
@@ -28,14 +28,14 @@
 ///
 /// [rfc]: http://tools.ietf.org/html/rfc6234
 ///
-/// Note that it's almost always easier to use [sha256] rather than creating a
-/// new instance.
+/// Use the [sha256] object to perform SHA-256 hashing.
 class Sha256 extends Hash {
   @override
   final int blockSize = 16 * bytesPerWord;
 
   Sha256._();
 
+  @deprecated
   Sha256 newInstance() => Sha256._();
 
   @override
@@ -47,14 +47,15 @@
 ///
 /// [rfc]: http://tools.ietf.org/html/rfc6234
 ///
-/// Note that it's almost always easier to use [sha224] rather than creating a
-/// new instance.
+///
+/// Use the [sha224] object to perform SHA-224 hashing.
 class Sha224 extends Hash {
   @override
   final int blockSize = 16 * bytesPerWord;
 
   Sha224._();
 
+  @deprecated
   Sha224 newInstance() => Sha224._();
 
   @override
diff --git a/lib/src/sha512.dart b/lib/src/sha512.dart
index 39e9595..fcb34fd 100644
--- a/lib/src/sha512.dart
+++ b/lib/src/sha512.dart
@@ -42,14 +42,14 @@
 ///
 /// [rfc]: http://tools.ietf.org/html/rfc6234
 ///
-/// Note that it's almost always easier to use [sha384] rather than creating a
-/// new instance.
+/// Use the [sha384] object to perform SHA-384 hashing
 class Sha384 extends Hash {
   @override
   final int blockSize = 32 * bytesPerWord;
 
   const Sha384._();
 
+  @deprecated
   Sha384 newInstance() => Sha384._();
 
   @override
@@ -61,14 +61,14 @@
 ///
 /// [rfc]: http://tools.ietf.org/html/rfc6234
 ///
-/// Note that it's almost always easier to use [sha512] rather than creating a
-/// new instance.
+/// Use the [sha512] object to perform SHA-512 hashing
 class Sha512 extends Hash {
   @override
   final int blockSize = 32 * bytesPerWord;
 
   const Sha512._();
 
+  @deprecated
   Sha512 newInstance() => Sha512._();
 
   @override
@@ -80,8 +80,7 @@
 ///
 /// [FIPS]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
 ///
-/// Note that it's almost always easier to use [sha512224] rather than creating
-/// a new instance.
+/// Use the [sha512224] object to perform SHA-512/224 hashing
 class _Sha512224 extends Hash {
   @override
   final int blockSize = 32 * bytesPerWord;
@@ -97,8 +96,7 @@
 ///
 /// [FIPS]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
 ///
-/// Note that it's almost always easier to use [sha512256] rather than creating
-/// a new instance.
+/// Use the [sha512256] object to perform SHA-512/256 hashing
 class _Sha512256 extends Hash {
   @override
   final int blockSize = 32 * bytesPerWord;
