add test, support sdk maps
diff --git a/pkgs/dart_model/lib/src/dart_model.g.dart b/pkgs/dart_model/lib/src/dart_model.g.dart
index f4f2ff8..2645808 100644
--- a/pkgs/dart_model/lib/src/dart_model.g.dart
+++ b/pkgs/dart_model/lib/src/dart_model.g.dart
@@ -256,7 +256,10 @@
           types,
         ));
 // A digest of all the bytes in the current buffer.
-  Digest get digest => md5.convert((node as MapInBuffer).buffer.serialize());
+  Digest get digest => md5.convert(switch (node) {
+        MapInBuffer mapInBuffer => mapInBuffer.buffer.serialize(),
+        _ => (JsonBufferBuilder()..map.addAll(node)).serialize(),
+      });
 
   /// Libraries by URI.
   Map<String, Library> get uris =>
diff --git a/pkgs/dart_model/test/model_test.dart b/pkgs/dart_model/test/model_test.dart
index f17b0b6..acae8f2 100644
--- a/pkgs/dart_model/test/model_test.dart
+++ b/pkgs/dart_model/test/model_test.dart
@@ -201,6 +201,11 @@
       expect(copiedModel.qualifiedNameOf(member.node), null);
       expect(model.qualifiedNameOf(copiedMember.node), null);
     });
+
+    test('can produce and compare digests for buffer and SDK maps', () {
+      final copiedModel = Model.fromJson(_copyMap(model.node));
+      expect(model.digest, copiedModel.digest);
+    });
   });
 
   group('QualifiedName', () {