diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2735969..3d8a40f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 5.0.0-nullsafety.7
+
+* Fix generation of duplicate mock getters and setters from inherited classes.
+
 ## 5.0.0-nullsafety.6
 
 * Fix generation of method with a parameter with a default value which includes
diff --git a/lib/src/builder.dart b/lib/src/builder.dart
index 0342bbe..b0fa8ad 100644
--- a/lib/src/builder.dart
+++ b/lib/src/builder.dart
@@ -719,9 +719,10 @@
       if (accessor.isPrivate || accessor.isStatic) {
         continue;
       }
-      if (overriddenFields.contains(accessor)) {
+      if (overriddenFields.contains(accessor.name)) {
         continue;
       }
+      overriddenFields.add(accessor.name);
       if (accessor.isGetter != null && _returnTypeIsNonNullable(accessor)) {
         yield Method((mBuilder) => _buildOverridingGetter(mBuilder, accessor));
       }
diff --git a/lib/src/version.dart b/lib/src/version.dart
index fd3e9bd..f804bd9 100644
--- a/lib/src/version.dart
+++ b/lib/src/version.dart
@@ -1 +1 @@
-const packageVersion = '5.0.0-nullsafety.6';
+const packageVersion = '5.0.0-nullsafety.7';
diff --git a/pubspec.yaml b/pubspec.yaml
index 14d4c09..a8baece 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: mockito
-version: 5.0.0-nullsafety.6
+version: 5.0.0-nullsafety.7
 
 description: A mock framework inspired by Mockito.
 homepage: https://github.com/dart-lang/mockito
diff --git a/test/builder/auto_mocks_test.dart b/test/builder/auto_mocks_test.dart
index 7252a42..df4e8cc 100644
--- a/test/builder/auto_mocks_test.dart
+++ b/test/builder/auto_mocks_test.dart
@@ -1363,6 +1363,19 @@
     );
   });
 
+  test('overrides inherited methods with a non-nullable return type', () async {
+    var mocksContent = await buildWithSingleNonNullableSource(dedent(r'''
+        class FooBase {
+          num m() => 7;
+        }
+        class Foo extends FooBase {
+          int m() => 7;
+        }
+        '''));
+    expect(mocksContent, contains('int m()'));
+    expect(mocksContent, isNot(contains('num m()')));
+  });
+
   test('overrides methods with a potentially non-nullable parameter', () async {
     await testWithNonNullable(
       {
@@ -1430,6 +1443,19 @@
     );
   });
 
+  test('overrides inherited instance getters only once', () async {
+    var mocksContent = await buildWithSingleNonNullableSource(dedent('''
+      class FooBase {
+        num get m => 7;
+      }
+      class Foo extends FooBase {
+        int get m => 7;
+      }
+      '''));
+    expect(mocksContent, contains('int get m'));
+    expect(mocksContent, isNot(contains('num get m')));
+  });
+
   test('overrides non-nullable instance setters', () async {
     await expectSingleNonNullableOutput(
       dedent('''
@@ -1468,6 +1494,19 @@
     );
   });
 
+  test('overrides inherited non-nullable instance setters only once', () async {
+    var mocksContent = await buildWithSingleNonNullableSource(dedent('''
+      class FooBase {
+        set m(int a) {}
+      }
+      class Foo extends FooBase {
+        set m(num a) {}
+      }
+      '''));
+    expect(mocksContent, contains('set m(num? a)'));
+    expect(mocksContent, isNot(contains('set m(int? a)')));
+  });
+
   test('overrides non-nullable fields', () async {
     await expectSingleNonNullableOutput(
       dedent(r'''
@@ -1503,6 +1542,22 @@
     );
   });
 
+  test('overrides inherited non-nullable fields only once', () async {
+    var mocksContent = await buildWithSingleNonNullableSource(dedent('''
+      class FooBase {
+        num m;
+      }
+      class Foo extends FooBase<int> {
+        int get m => 7;
+        void set m(covariant int value) {}
+      }
+      '''));
+    expect(mocksContent, contains('int get m'));
+    expect(mocksContent, contains('set m(int? value)'));
+    expect(mocksContent, isNot(contains('num get m')));
+    expect(mocksContent, isNot(contains('set m(num? value)')));
+  });
+
   test('overrides final non-nullable fields', () async {
     await expectSingleNonNullableOutput(
       dedent(r'''
