diff --git a/pkg/front_end/lib/src/base/local_scope.dart b/pkg/front_end/lib/src/base/local_scope.dart
index 18335b7..e9e15a5 100644
--- a/pkg/front_end/lib/src/base/local_scope.dart
+++ b/pkg/front_end/lib/src/base/local_scope.dart
@@ -94,6 +94,7 @@
   void _recordUse(String name, int charOffset) {}
 
   @override
+  // Coverage-ignore(suite): Not run.
   void forEachExtension(void Function(ExtensionBuilder) f) {
     _parent?.forEachExtension(f);
   }
@@ -160,6 +161,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   Map<String, List<int>>? get usedNames => null;
 }
 
@@ -223,6 +225,7 @@
   ScopeKind get kind => _scope.kind;
 
   @override
+  // Coverage-ignore(suite): Not run.
   Iterable<Builder> get localVariables => const [];
 
   @override
@@ -231,6 +234,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   Builder? lookupLocalVariable(String name) => null;
 
   @override
@@ -239,6 +243,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void forEachExtension(void Function(ExtensionBuilder) f) {
     _scope.forEachExtension(f);
   }
diff --git a/pkg/front_end/lib/src/base/name_space.dart b/pkg/front_end/lib/src/base/name_space.dart
index a8e2734..882bbff 100644
--- a/pkg/front_end/lib/src/base/name_space.dart
+++ b/pkg/front_end/lib/src/base/name_space.dart
@@ -373,8 +373,8 @@
       nameSpace._getables?.forEach(mergeMember);
     }
     if (nameSpace._setables != null) {
-      map = _setables ??= // Coverage-ignore(suite): Not run.
-          {};
+      // Coverage-ignore-block(suite): Not run.
+      map = _setables ??= {};
       nameSpace._setables?.forEach(mergeMember);
     }
     if (nameSpace._extensions != null) {
diff --git a/pkg/front_end/lib/src/base/scope.dart b/pkg/front_end/lib/src/base/scope.dart
index 1aabf30..fa77578 100644
--- a/pkg/front_end/lib/src/base/scope.dart
+++ b/pkg/front_end/lib/src/base/scope.dart
@@ -182,15 +182,8 @@
     required bool forStaticAccess}) {
   if (builder == null) return null;
   if (builder.next != null) {
-    return new AmbiguousBuilder(
-        name.isEmpty
-            ?
-            // Coverage-ignore(suite): Not run.
-            classNameOrDebugName
-            : name,
-        builder,
-        charOffset,
-        fileUri);
+    return new AmbiguousBuilder(name.isEmpty ? classNameOrDebugName : name,
+        builder, charOffset, fileUri);
   } else if (forStaticAccess && builder.isDeclarationInstanceMember) {
     return null;
   } else if (builder is MemberBuilder && builder.isConflictingSetter) {
@@ -308,6 +301,7 @@
   TypeParameterScope(this._parent, this._typeParameters);
 
   @override
+  // Coverage-ignore(suite): Not run.
   ScopeKind get kind => ScopeKind.typeParameters;
 
   @override
@@ -338,6 +332,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void forEachExtension(void Function(ExtensionBuilder) f) {
     _parent.forEachExtension(f);
   }
@@ -375,8 +370,12 @@
   @override
   Builder? lookupSetable(String name, int charOffset, Uri fileUri) {
     Builder? builder = normalizeLookup(
-        getable: _getables?[name],
-        setable: _setables?[name],
+        getable: _getables
+            // Coverage-ignore(suite): Not run.
+            ?[name],
+        setable: _setables
+            // Coverage-ignore(suite): Not run.
+            ?[name],
         name: name,
         charOffset: charOffset,
         fileUri: fileUri,
@@ -391,6 +390,7 @@
   }
 }
 
+// Coverage-ignore(suite): Not run.
 // TODO(johnniwinther): Use this instead of [SourceLibraryBuilderScope].
 class CompilationUnitScope extends BaseNameSpaceLookupScope {
   final CompilationUnit _compilationUnit;
@@ -447,6 +447,7 @@
     _local[name] = builder;
   }
 
+  // Coverage-ignore(suite): Not run.
   void addLocalMembers(Map<String, MemberBuilder> map) {
     _local.addAll(map);
   }
diff --git a/pkg/front_end/lib/src/dill/dill_class_builder.dart b/pkg/front_end/lib/src/dill/dill_class_builder.dart
index 133b6c2..bbf02a2 100644
--- a/pkg/front_end/lib/src/dill/dill_class_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_class_builder.dart
@@ -78,6 +78,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   LookupScope get scope => _scope;
 
   @override
diff --git a/pkg/front_end/lib/src/dill/dill_extension_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_builder.dart
index f4f0980..47577d9 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_builder.dart
@@ -89,6 +89,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   LookupScope get scope => _scope;
 
   @override
diff --git a/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart b/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
index 1399162..6fe9fea 100644
--- a/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
+++ b/pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart
@@ -149,6 +149,7 @@
   DillLibraryBuilder get libraryBuilder => parent as DillLibraryBuilder;
 
   @override
+  // Coverage-ignore(suite): Not run.
   LookupScope get scope => _scope;
 
   @override
diff --git a/pkg/front_end/lib/src/kernel/body_builder.dart b/pkg/front_end/lib/src/kernel/body_builder.dart
index 6a8a38e..45fa913 100644
--- a/pkg/front_end/lib/src/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/kernel/body_builder.dart
@@ -1583,8 +1583,8 @@
       // Coverage-ignore-block(suite): Not run.
       temporaryParent = new ListLiteral(expressions);
     }
-    // Coverage-ignore(suite): Not run.
     performBacklogComputations();
+    // Coverage-ignore(suite): Not run.
     return temporaryParent != null ? temporaryParent.expressions : expressions;
   }
 
@@ -3424,6 +3424,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void handleLiteralIntWithSeparators(Token token) {
     debugEvent("LiteralIntWithSeparators");
 
@@ -4751,6 +4752,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void handleLiteralDoubleWithSeparators(Token token) {
     debugEvent("LiteralDoubleWithSeparators");
 
@@ -10184,6 +10186,7 @@
   _BodyBuilderCloner(this.bodyBuilder);
 
   @override
+  // Coverage-ignore(suite): Not run.
   TreeNode visitStaticInvocation(StaticInvocation node) {
     if (node is FactoryConstructorInvocation) {
       FactoryConstructorInvocation result = new FactoryConstructorInvocation(
@@ -10191,16 +10194,13 @@
           isConst: node.isConst)
         ..hasBeenInferred = node.hasBeenInferred;
       return result;
-    }
-    // Coverage-ignore(suite): Not run.
-    else if (node is TypeAliasedFactoryInvocation) {
+    } else if (node is TypeAliasedFactoryInvocation) {
       TypeAliasedFactoryInvocation result = new TypeAliasedFactoryInvocation(
           node.typeAliasBuilder, node.target, clone(node.arguments),
           isConst: node.isConst)
         ..hasBeenInferred = node.hasBeenInferred;
       return result;
     }
-    // Coverage-ignore(suite): Not run.
     return super.visitStaticInvocation(node);
   }
 
@@ -10229,6 +10229,7 @@
   }
 }
 
+// Coverage-ignore(suite): Not run.
 /// Returns `true` if [node] is not part of its parent member.
 ///
 /// This computation is costly and should only be used in assertions to verify
@@ -10246,7 +10247,6 @@
   if (member == null) {
     return true;
   }
-  // Coverage-ignore-block(suite): Not run.
   _FindChildVisitor visitor = new _FindChildVisitor(node);
   member.accept(visitor);
   return !visitor.foundNode;
diff --git a/pkg/front_end/lib/src/kernel/body_builder_context.dart b/pkg/front_end/lib/src/kernel/body_builder_context.dart
index 93c362d..3c42c95 100644
--- a/pkg/front_end/lib/src/kernel/body_builder_context.dart
+++ b/pkg/front_end/lib/src/kernel/body_builder_context.dart
@@ -683,6 +683,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => false;
 }
 
@@ -790,6 +791,7 @@
             inConstFields: inConstFields);
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => true;
 }
 
@@ -879,6 +881,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => true;
 }
 
@@ -907,6 +910,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => true;
 }
 
@@ -938,6 +942,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => true;
 }
 
@@ -967,6 +972,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasFormalParameters => true;
 }
 
diff --git a/pkg/front_end/lib/src/kernel/collections.dart b/pkg/front_end/lib/src/kernel/collections.dart
index ede23a5..bcbf67c 100644
--- a/pkg/front_end/lib/src/kernel/collections.dart
+++ b/pkg/front_end/lib/src/kernel/collections.dart
@@ -133,30 +133,35 @@
   NullAwareElement(this.expression);
 
   @override
+  // Coverage-ignore(suite): Not run.
   MapLiteralEntry? toMapLiteralEntry(
       void Function(TreeNode from, TreeNode to) onConvertElement) {
     return unsupported("toMapLiteralEntry", fileOffset, getFileUri(this));
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void toTextInternal(AstPrinter printer) {
     printer.write('?');
     printer.writeExpression(expression);
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void transformChildren(Transformer v) {
     expression = v.transform(expression);
     expression.parent = this;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void transformOrRemoveChildren(RemovingTransformer v) {
     expression = v.transform(expression);
     expression.parent = this;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void visitChildren(Visitor v) {
     expression.accept(v);
   }
@@ -677,6 +682,7 @@
       required this.value});
 
   @override
+  // Coverage-ignore(suite): Not run.
   void toTextInternal(AstPrinter printer) {
     if (isKeyNullAware) {
       printer.write('?');
@@ -690,6 +696,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void transformChildren(Transformer v) {
     key = v.transform(key);
     key.parent = this;
@@ -698,6 +705,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void transformOrRemoveChildren(RemovingTransformer v) {
     key = v.transform(key);
     key.parent = this;
@@ -706,6 +714,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void visitChildren(Visitor v) {
     key.accept(v);
     value.accept(v);
@@ -1157,6 +1166,7 @@
         onConvertMapEntry(entry, result);
         return result;
       case NullAwareMapEntry():
+        // Coverage-ignore(suite): Not run.
         return _convertToErroneousElement(entry, helper);
       case IfCaseMapEntry():
         IfCaseElement result = new IfCaseElement(
@@ -1245,7 +1255,6 @@
       case IfCaseElement():
         return isConvertibleToMapEntry(element.then) &&
             (element.otherwise == null ||
-                // Coverage-ignore(suite): Not run.
                 isConvertibleToMapEntry(element.otherwise!));
       case ForElement():
         return isConvertibleToMapEntry(element.body);
@@ -1274,6 +1283,7 @@
           ..fileOffset = element.expression.fileOffset;
 
       case NullAwareElement():
+        // Coverage-ignore(suite): Not run.
         return _convertToErroneousMapEntry(element, helper);
 
       case IfElement():
@@ -1296,9 +1306,8 @@
             then: convertToMapEntry(element.then, helper, onConvertElement),
             otherwise: element.otherwise == null
                 ? null
-                :
-                // Coverage-ignore(suite): Not run.
-                convertToMapEntry(element.otherwise!, helper, onConvertElement))
+                : convertToMapEntry(
+                    element.otherwise!, helper, onConvertElement))
           ..matchedValueType = element.matchedValueType
           ..fileOffset = element.fileOffset;
         onConvertElement(element, result);
@@ -1340,10 +1349,12 @@
         return result;
     }
   } else {
+    // Coverage-ignore-block(suite): Not run.
     return _convertToErroneousMapEntry(element, helper);
   }
 }
 
+// Coverage-ignore(suite): Not run.
 MapLiteralEntry _convertToErroneousMapEntry(
     Expression element, InferenceHelper helper) {
   return new MapLiteralEntry(
diff --git a/pkg/front_end/lib/src/kernel/internal_ast.dart b/pkg/front_end/lib/src/kernel/internal_ast.dart
index f5d2bed..f992118 100644
--- a/pkg/front_end/lib/src/kernel/internal_ast.dart
+++ b/pkg/front_end/lib/src/kernel/internal_ast.dart
@@ -3196,6 +3196,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   void transformChildren(Transformer v) {
     value = v.transform(value)..parent = this;
   }
diff --git a/pkg/front_end/lib/src/kernel/kernel_constants.dart b/pkg/front_end/lib/src/kernel/kernel_constants.dart
index 4acd403..d23ff515 100644
--- a/pkg/front_end/lib/src/kernel/kernel_constants.dart
+++ b/pkg/front_end/lib/src/kernel/kernel_constants.dart
@@ -15,6 +15,7 @@
   KernelConstantErrorReporter(this.loader);
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get supportsTrackingReportedErrors => true;
 
   @override
diff --git a/pkg/front_end/lib/src/kernel/kernel_target.dart b/pkg/front_end/lib/src/kernel/kernel_target.dart
index 526a03b..3572a2c 100644
--- a/pkg/front_end/lib/src/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/kernel/kernel_target.dart
@@ -1812,7 +1812,9 @@
 
   void readPatchFiles(SourceLibraryBuilder libraryBuilder,
       CompilationUnit compilationUnit, Uri originImportUri) {
-    assert(originImportUri.isScheme("dart"),
+    assert(
+        originImportUri.isScheme("dart"),
+        // Coverage-ignore(suite): Not run.
         "Unexpected origin import uri: $originImportUri");
     List<Uri>? patches = uriTranslator.getDartPatches(originImportUri.path);
     if (patches != null) {
diff --git a/pkg/front_end/lib/src/kernel/try_constant_evaluator.dart b/pkg/front_end/lib/src/kernel/try_constant_evaluator.dart
index 4cabaea..668e55b 100644
--- a/pkg/front_end/lib/src/kernel/try_constant_evaluator.dart
+++ b/pkg/front_end/lib/src/kernel/try_constant_evaluator.dart
@@ -104,9 +104,11 @@
   _ErrorReporter(this._reportError);
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get supportsTrackingReportedErrors => false;
 
   @override
+  // Coverage-ignore(suite): Not run.
   bool get hasSeenError {
     return unsupported("_ErrorReporter.hasSeenError", -1, null);
   }
diff --git a/pkg/front_end/lib/src/kernel/verifier.dart b/pkg/front_end/lib/src/kernel/verifier.dart
index edc88d7..f7ff87c 100644
--- a/pkg/front_end/lib/src/kernel/verifier.dart
+++ b/pkg/front_end/lib/src/kernel/verifier.dart
@@ -33,7 +33,6 @@
   return listener.errors;
 }
 
-// Coverage-ignore(suite): Not run.
 class FastaVerificationErrorListener implements VerificationErrorListener {
   final CompilerContext compilerContext;
   List<LocatedMessage> errors = [];
@@ -41,6 +40,7 @@
   FastaVerificationErrorListener(this.compilerContext);
 
   @override
+  // Coverage-ignore(suite): Not run.
   void reportError(String details,
       {required TreeNode? node,
       required Uri? problemUri,
diff --git a/pkg/front_end/lib/src/kernel/wildcard_lowering.dart b/pkg/front_end/lib/src/kernel/wildcard_lowering.dart
index adf1d08..c37fdf4 100644
--- a/pkg/front_end/lib/src/kernel/wildcard_lowering.dart
+++ b/pkg/front_end/lib/src/kernel/wildcard_lowering.dart
@@ -27,12 +27,14 @@
   return name.startsWith(wildcardPrefix) && name.endsWith(wildcardFormalSuffix);
 }
 
+// Coverage-ignore(suite): Not run.
 /// Whether the given [name] is a wildcard type variable.
 bool isWildcardLoweredTypeVariable(String name) {
   return name.startsWith(wildcardPrefix) &&
       name.endsWith(wildcardTypeVariableSuffix);
 }
 
+// Coverage-ignore(suite): Not run.
 /// Whether the given [name] is a wildcard variable.
 bool isWildcardLoweredVariable(String name) {
   return name.startsWith(wildcardPrefix) &&
diff --git a/pkg/front_end/lib/src/macros/macro_injected_impl.dart b/pkg/front_end/lib/src/macros/macro_injected_impl.dart
index 7a34233..ed94989 100644
--- a/pkg/front_end/lib/src/macros/macro_injected_impl.dart
+++ b/pkg/front_end/lib/src/macros/macro_injected_impl.dart
@@ -13,6 +13,7 @@
 /// If set, overrides the CFE's macro implementation.
 MacroImplementation? macroImplementation;
 
+// Coverage-ignore(suite): Not run.
 /// An injected macro implementation.
 class MacroImplementation {
   final MacroPackageConfigs packageConfigs;
diff --git a/pkg/front_end/lib/src/source/source_builder_mixins.dart b/pkg/front_end/lib/src/source/source_builder_mixins.dart
index 8201a79..3ed7c07 100644
--- a/pkg/front_end/lib/src/source/source_builder_mixins.dart
+++ b/pkg/front_end/lib/src/source/source_builder_mixins.dart
@@ -265,6 +265,7 @@
     }
 
     if (arguments != null && arguments.length != typeVariablesCount) {
+      // Coverage-ignore-block(suite): Not run.
       assert(libraryBuilder.loader.assertProblemReportedElsewhere(
           "SourceDeclarationBuilderMixin.buildAliasedTypeArguments: "
           "the numbers of type parameters and type arguments don't match.",
diff --git a/pkg/front_end/lib/src/source/source_class_builder.dart b/pkg/front_end/lib/src/source/source_class_builder.dart
index d2b4cf6..c073e9d 100644
--- a/pkg/front_end/lib/src/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/source/source_class_builder.dart
@@ -519,6 +519,7 @@
     }
 
     if (arguments != null && arguments.length != typeVariablesCount) {
+      // Coverage-ignore-block(suite): Not run.
       assert(libraryBuilder.loader.assertProblemReportedElsewhere(
           "SourceClassBuilder.buildAliasedTypeArguments: "
           "the numbers of type parameters and type arguments don't match.",
diff --git a/pkg/front_end/lib/src/source/source_compilation_unit.dart b/pkg/front_end/lib/src/source/source_compilation_unit.dart
index 55bcc86..b3af465 100644
--- a/pkg/front_end/lib/src/source/source_compilation_unit.dart
+++ b/pkg/front_end/lib/src/source/source_compilation_unit.dart
@@ -335,6 +335,7 @@
         "Source library builder as already been created for $this.");
     _libraryBuilder = _sourceLibraryBuilder;
     if (isPart) {
+      // Coverage-ignore-block(suite): Not run.
       // This is a part with no enclosing library.
       addProblem(messagePartOrphan, 0, 1, fileUri);
       _clearPartsAndReportExporters();
@@ -727,7 +728,9 @@
 
   @override
   void addImportsToScope() {
-    bool hasCoreImport = originImportUri == dartCore && !forPatchLibrary;
+    bool hasCoreImport = originImportUri == dartCore &&
+        // Coverage-ignore(suite): Not run.
+        !forPatchLibrary;
     for (Import import in _builderFactoryResult.imports) {
       if (import.importedCompilationUnit?.isPart ?? false) {
         // Coverage-ignore-block(suite): Not run.
diff --git a/pkg/front_end/lib/src/source/source_constructor_builder.dart b/pkg/front_end/lib/src/source/source_constructor_builder.dart
index 2572203..6e14f66 100644
--- a/pkg/front_end/lib/src/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/source/source_constructor_builder.dart
@@ -596,6 +596,7 @@
         if (declaration is ClassBuilder) {
           superclassBuilder = declaration;
         } else {
+          // Coverage-ignore-block(suite): Not run.
           assert(libraryBuilder.loader.assertProblemReportedElsewhere(
               "DeclaredSourceConstructorBuilder._computeSuperTargetBuilder: "
               "Unaliased 'declaration' isn't a ClassBuilder.",
@@ -610,6 +611,7 @@
         return null;
       }
     } else {
+      // Coverage-ignore-block(suite): Not run.
       assert(libraryBuilder.loader.assertProblemReportedElsewhere(
           "DeclaredSourceConstructorBuilder._computeSuperTargetBuilder: "
           "'supertype' isn't a NamedTypeBuilder.",
@@ -641,6 +643,7 @@
     if (constructorBuilder is ConstructorBuilder) {
       return constructorBuilder;
     } else {
+      // Coverage-ignore-block(suite): Not run.
       assert(libraryBuilder.loader.assertProblemReportedElsewhere(
           "DeclaredSourceConstructorBuilder._computeSuperTargetBuilder: "
           "Can't find a constructor with name '${superTarget.name.text}' in "
@@ -775,6 +778,7 @@
               (positionalSuperParameters ??= <int?>[]).add(null);
             }
           } else {
+            // Coverage-ignore-block(suite): Not run.
             assert(libraryBuilder.loader.assertProblemReportedElsewhere(
                 "DeclaredSourceConstructorBuilder"
                 ".finalizeSuperInitializingFormals: "
diff --git a/pkg/front_end/lib/src/source/source_enum_builder.dart b/pkg/front_end/lib/src/source/source_enum_builder.dart
index 2abf5d9..c2cf43a 100644
--- a/pkg/front_end/lib/src/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/source/source_enum_builder.dart
@@ -134,6 +134,7 @@
       ConstructorScope constructorScope) {
     final int startCharOffsetComputed =
         metadata == null ? startCharOffset : metadata.first.charOffset;
+    // Coverage-ignore(suite): Not run.
     supertypeBuilder ??= new NamedTypeBuilderImpl(
         const PredefinedTypeName("_Enum"), const NullabilityBuilder.omitted(),
         instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
@@ -186,7 +187,6 @@
     objectType = new NamedTypeBuilderImpl(
         const PredefinedTypeName("Object"), const NullabilityBuilder.omitted(),
         instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected);
-    // Coverage-ignore(suite): Not run.
     selfType = new NamedTypeBuilderImpl(new SyntheticTypeName(name, charOffset),
         const NullabilityBuilder.omitted(),
         instanceTypeVariableAccess: InstanceTypeVariableAccessState.Unexpected,
diff --git a/pkg/front_end/lib/src/source/source_library_builder.dart b/pkg/front_end/lib/src/source/source_library_builder.dart
index 068f780..e87cf1f 100644
--- a/pkg/front_end/lib/src/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/source/source_library_builder.dart
@@ -2172,6 +2172,7 @@
     if (typeArguments.isEmpty) return;
 
     if (functionType.typeParameters.length != typeArguments.length) {
+      // Coverage-ignore-block(suite): Not run.
       assert(loader.assertProblemReportedElsewhere(
           "SourceLibraryBuilder.checkBoundsInInstantiation: "
           "the numbers of type parameters and type arguments don't match.",
diff --git a/pkg/front_end/lib/src/source/source_loader.dart b/pkg/front_end/lib/src/source/source_loader.dart
index 48d8dd8..cdaee95 100644
--- a/pkg/front_end/lib/src/source/source_loader.dart
+++ b/pkg/front_end/lib/src/source/source_loader.dart
@@ -254,6 +254,7 @@
     };
     assert(
         expectedFutureProblemsForCurrentPhase.isEmpty || hasSeenError,
+        // Coverage-ignore(suite): Not run.
         "Expected problems to be reported, but there were none.\n"
         "Current compilation phase: ${currentPhase}\n"
         "Expected at these locations:\n"
@@ -1477,9 +1478,8 @@
     }
     _sourceLibraryBuilders = sourceLibraries;
     assert(
-        _compilationUnits.values.every(
-            (compilationUnit) => !(compilationUnit is SourceCompilationUnit &&
-                // Coverage-ignore(suite): Not run.
+        _compilationUnits.values.every((compilationUnit) =>
+            !(compilationUnit is SourceCompilationUnit &&
                 compilationUnit.isAugmenting)),
         // Coverage-ignore(suite): Not run.
         "Augmentation library found in libraryBuilders: " +
diff --git a/pkg/front_end/lib/src/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/source/source_type_alias_builder.dart
index 4325d2c..e25255f 100644
--- a/pkg/front_end/lib/src/source/source_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/source/source_type_alias_builder.dart
@@ -303,6 +303,7 @@
     }
 
     if (arguments != null && arguments.length != typeVariablesCount) {
+      // Coverage-ignore-block(suite): Not run.
       assert(libraryBuilder.loader.assertProblemReportedElsewhere(
           "SourceTypeAliasBuilder.buildAliasedTypeArguments: "
           "the numbers of type parameters and type arguments don't match.",
diff --git a/pkg/front_end/lib/src/source/type_parameter_scope_builder.dart b/pkg/front_end/lib/src/source/type_parameter_scope_builder.dart
index bb0c6e4..59fe74d 100644
--- a/pkg/front_end/lib/src/source/type_parameter_scope_builder.dart
+++ b/pkg/front_end/lib/src/source/type_parameter_scope_builder.dart
@@ -429,11 +429,19 @@
 
   void addLocalMember(String name, MemberBuilder builder,
       {required bool setter}) {
-    (setter ? _setables : _getables)![name] = builder;
+    (setter
+        ?
+        // Coverage-ignore(suite): Not run.
+        _setables
+        : _getables)![name] = builder;
   }
 
   MemberBuilder? lookupLocalMember(String name, {required bool setter}) {
-    return (setter ? _setables : _getables)![name] as MemberBuilder?;
+    return (setter
+        ?
+        // Coverage-ignore(suite): Not run.
+        _setables
+        : _getables)![name] as MemberBuilder?;
   }
 
   NameSpace buildNameSpace(IDeclarationBuilder parent) {
@@ -448,7 +456,6 @@
       if (_typeVariables != null) {
         NominalVariableBuilder? tv = _typeVariables![name];
         if (tv != null) {
-          // Coverage-ignore-block(suite): Not run.
           parent.addProblem(
               templateConflictsWithTypeVariable.withArguments(name),
               member.charOffset,
diff --git a/pkg/front_end/lib/src/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/type_inference/inference_visitor.dart
index fb951fc..ada0c75 100644
--- a/pkg/front_end/lib/src/type_inference/inference_visitor.dart
+++ b/pkg/front_end/lib/src/type_inference/inference_visitor.dart
@@ -2775,6 +2775,7 @@
         }
       case NullAwareElement(:Expression expression):
         if (expression is ControlFlowElement) {
+          // Coverage-ignore-block(suite): Not run.
           checkElement(expression, item, typeArgument, inferredSpreadTypes,
               inferredConditionTypes);
         }
@@ -2793,6 +2794,7 @@
               inferredConditionTypes);
         }
         if (otherwise is ControlFlowElement) {
+          // Coverage-ignore-block(suite): Not run.
           checkElement(otherwise, item, typeArgument, inferredSpreadTypes,
               inferredConditionTypes);
         }
@@ -3904,6 +3906,7 @@
             }
           case NullAwareElement():
             if (currentPart != null) {
+              // Coverage-ignore-block(suite): Not run.
               parts.add(makeLiteral(node.fileOffset, currentPart));
               currentPart = null;
             }
@@ -3913,8 +3916,8 @@
                 makeLiteral(element.fileOffset, []), iterableType,
                 nullCheckedValue: makeLiteral(element.fileOffset,
                     [_createNullCheckedVariableGet(temp)])));
+          // Coverage-ignore(suite): Not run.
           case IfElement():
-            // Coverage-ignore-block(suite): Not run.
             if (currentPart != null) {
               parts.add(makeLiteral(node.fileOffset, currentPart));
               currentPart = null;
@@ -3928,10 +3931,10 @@
                 : makeLiteral(element.fileOffset, []);
             parts.add(_createConditionalExpression(
                 element.fileOffset, condition, then, otherwise, iterableType));
+          // Coverage-ignore(suite): Not run.
           case IfCaseElement():
           case ForElement():
           case ForInElement():
-            // Coverage-ignore-block(suite): Not run.
             // Rejected earlier.
             problems.unhandled("${element.runtimeType}",
                 "_translateConstListOrSet", element.fileOffset, helper.uri);
@@ -3999,6 +4002,7 @@
           case NullAwareMapEntry():
             assert(entry.isKeyNullAware || entry.isValueNullAware);
             if (currentPart != null) {
+              // Coverage-ignore-block(suite): Not run.
               parts.add(makeLiteral(node.fileOffset, currentPart));
               currentPart = null;
             }
@@ -4059,8 +4063,8 @@
                 desugaredExpression is! NullLiteral);
 
             parts.add(desugaredExpression);
+          // Coverage-ignore(suite): Not run.
           case IfMapEntry():
-            // Coverage-ignore-block(suite): Not run.
             if (currentPart != null) {
               parts.add(makeLiteral(node.fileOffset, currentPart));
               currentPart = null;
@@ -4072,11 +4076,11 @@
                 : makeLiteral(node.fileOffset, []);
             parts.add(_createConditionalExpression(
                 entry.fileOffset, condition, then, otherwise, collectionType));
+          // Coverage-ignore(suite): Not run.
           case IfCaseMapEntry():
           case PatternForMapEntry():
           case ForMapEntry():
           case ForInMapEntry():
-            // Coverage-ignore-block(suite): Not run.
             // Rejected earlier.
             problems.unhandled("${entry.runtimeType}", "_translateConstMap",
                 entry.fileOffset, helper.uri);
@@ -4118,7 +4122,6 @@
       return new VariableGet(variable, promotedType)
         ..fileOffset = variable.fileOffset;
     }
-    // Coverage-ignore(suite): Not run.
     return _createVariableGet(variable);
   }
 
diff --git a/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart b/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart
index a76a137..de33a56 100644
--- a/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart
+++ b/pkg/front_end/lib/src/type_inference/inference_visitor_base.dart
@@ -3448,6 +3448,7 @@
                   .withDeclaredNullability(Nullability.nullable)
             ], functionType.returnType, functionType.declaredNullability));
           }
+        // Coverage-ignore(suite): Not run.
         case InvocationTargetDynamicType():
         case InvocationTargetNeverType():
         case InvocationTargetInvalidType():
diff --git a/pkg/front_end/lib/src/type_inference/object_access_target.dart b/pkg/front_end/lib/src/type_inference/object_access_target.dart
index fceb24b..9c2edde 100644
--- a/pkg/front_end/lib/src/type_inference/object_access_target.dart
+++ b/pkg/front_end/lib/src/type_inference/object_access_target.dart
@@ -197,52 +197,62 @@
   const InvocationTargetNonFunctionType();
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get equalsFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get sublistFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get minusFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get indexGetFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get greaterThanOrEqualsFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get lessThanOrEqualsFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get relationalFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get containsKeyFunctionType {
     return _oneParameterFunctionApproximation;
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get indexSetFunctionType {
     return new FunctionType(
         [const DynamicType()], returnType, Nullability.nonNullable);
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   FunctionType get binaryOperationFunctionType {
     return _oneParameterFunctionApproximation;
   }
@@ -254,6 +264,7 @@
     return FunctionAccessKind.Function;
   }
 
+  // Coverage-ignore(suite): Not run.
   FunctionType get _oneParameterFunctionApproximation {
     return new FunctionType(
         [const DynamicType()], returnType, Nullability.nonNullable);
@@ -540,6 +551,7 @@
         calleeType is DynamicType) {
       return const InvocationTargetDynamicType();
     } else if (calleeType is NeverType) {
+      // Coverage-ignore-block(suite): Not run.
       // TODO(cstefantsova): Should we insert the nullability assert somewhere
       // earlier?
       assert(calleeType.nullability == Nullability.nonNullable);
@@ -769,6 +781,7 @@
         } else {
           return const DynamicType();
         }
+      // Coverage-ignore(suite): Not run.
       case InvocationTargetDynamicType():
       case InvocationTargetInvalidType():
       case InvocationTargetNeverType():
@@ -790,6 +803,7 @@
         } else {
           return const DynamicType();
         }
+      // Coverage-ignore(suite): Not run.
       case InvocationTargetDynamicType():
       case InvocationTargetInvalidType():
       case InvocationTargetNeverType():
@@ -816,6 +830,7 @@
         } else {
           return const DynamicType();
         }
+      // Coverage-ignore(suite): Not run.
       case InvocationTargetDynamicType():
       case InvocationTargetInvalidType():
       case InvocationTargetNeverType():
diff --git a/pkg/front_end/lib/src/type_inference/type_inference_engine.dart b/pkg/front_end/lib/src/type_inference/type_inference_engine.dart
index 7141a8a..17420c0 100644
--- a/pkg/front_end/lib/src/type_inference/type_inference_engine.dart
+++ b/pkg/front_end/lib/src/type_inference/type_inference_engine.dart
@@ -985,6 +985,7 @@
   }
 
   @override
+  // Coverage-ignore(suite): Not run.
   NullabilitySuffix typeSchemaNullabilitySuffix(DartType typeSchema) {
     return typeSchema.nullabilitySuffix;
   }
diff --git a/pkg/front_end/lib/src/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/type_inference/type_inferrer.dart
index 8decdbf..207282b 100644
--- a/pkg/front_end/lib/src/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/type_inference/type_inferrer.dart
@@ -218,7 +218,6 @@
     List<NamedExpression> namedArguments = <NamedExpression>[];
     for (VariableDeclaration parameter
         in redirectingFactoryFunction.namedParameters) {
-      // Coverage-ignore-block(suite): Not run.
       flowAnalysis.declare(parameter, parameter.type, initialized: true);
       namedArguments.add(new NamedExpression(parameter.name!,
           new VariableGetImpl(parameter, forNullGuardedAccess: false)));
diff --git a/pkg/front_end/test/coverage_suite_expected.dart b/pkg/front_end/test/coverage_suite_expected.dart
index c4fe7d3..667bdc0 100644
--- a/pkg/front_end/test/coverage_suite_expected.dart
+++ b/pkg/front_end/test/coverage_suite_expected.dart
@@ -168,10 +168,10 @@
     hitCount: 25,
     missCount: 0,
   ),
-  // 86.76470588235294%.
+  // 100.0%.
   "package:front_end/src/base/local_scope.dart": (
     hitCount: 59,
-    missCount: 9,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/base/messages.dart": (
@@ -183,10 +183,10 @@
     hitCount: 29,
     missCount: 0,
   ),
-  // 97.87234042553192%.
+  // 100.0%.
   "package:front_end/src/base/name_space.dart": (
     hitCount: 138,
-    missCount: 3,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/base/operator.dart": (
@@ -203,10 +203,10 @@
     hitCount: 246,
     missCount: 0,
   ),
-  // 97.94117647058823%.
+  // 100.0%.
   "package:front_end/src/base/scope.dart": (
     hitCount: 666,
-    missCount: 14,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/base/ticker.dart": (
@@ -418,25 +418,25 @@
     hitCount: 16,
     missCount: 0,
   ),
-  // 98.85714285714286%.
+  // 100.0%.
   "package:front_end/src/dill/dill_class_builder.dart": (
     hitCount: 173,
-    missCount: 2,
+    missCount: 0,
   ),
-  // 97.5%.
+  // 100.0%.
   "package:front_end/src/dill/dill_extension_builder.dart": (
     hitCount: 78,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/dill/dill_extension_member_builder.dart": (
     hitCount: 71,
     missCount: 0,
   ),
-  // 98.68421052631578%.
+  // 100.0%.
   "package:front_end/src/dill/dill_extension_type_declaration_builder.dart": (
     hitCount: 150,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/dill/dill_extension_type_member_builder.dart": (
@@ -478,20 +478,20 @@
     hitCount: 0,
     missCount: 0,
   ),
-  // 99.18687382024103%.
+  // 100.0%.
   "package:front_end/src/kernel/body_builder.dart": (
     hitCount: 6831,
-    missCount: 56,
+    missCount: 0,
   ),
-  // 98.26086956521739%.
+  // 100.0%.
   "package:front_end/src/kernel/body_builder_context.dart": (
     hitCount: 339,
-    missCount: 6,
+    missCount: 0,
   ),
-  // 82.11586901763224%.
+  // 100.0%.
   "package:front_end/src/kernel/collections.dart": (
     hitCount: 326,
-    missCount: 71,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/combined_member_signature.dart": (
@@ -508,10 +508,10 @@
     hitCount: 205,
     missCount: 0,
   ),
-  // 99.1891891891892%.
+  // 100.0%.
   "package:front_end/src/kernel/constant_evaluator.dart": (
-    hitCount: 3670,
-    missCount: 30,
+    hitCount: 3700,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/constant_int_folder.dart": (
@@ -598,30 +598,30 @@
     hitCount: 1,
     missCount: 0,
   ),
-  // 99.10554561717353%.
+  // 100.0%.
   "package:front_end/src/kernel/internal_ast.dart": (
     hitCount: 554,
-    missCount: 5,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/invalid_type.dart": (
     hitCount: 43,
     missCount: 0,
   ),
-  // 92.85714285714286%.
+  // 100.0%.
   "package:front_end/src/kernel/kernel_constants.dart": (
     hitCount: 13,
-    missCount: 1,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/kernel_helper.dart": (
     hitCount: 285,
     missCount: 0,
   ),
-  // 99.90566037735849%.
+  // 100.0%.
   "package:front_end/src/kernel/kernel_target.dart": (
     hitCount: 1059,
-    missCount: 1,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/kernel_variable_builder.dart": (
@@ -683,10 +683,10 @@
     hitCount: 16,
     missCount: 0,
   ),
-  // 88.88888888888889%.
+  // 100.0%.
   "package:front_end/src/kernel/try_constant_evaluator.dart": (
     hitCount: 16,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel/type_algorithms.dart": (
@@ -708,10 +708,10 @@
     hitCount: 21,
     missCount: 0,
   ),
-  // 60.0%.
+  // 100.0%.
   "package:front_end/src/kernel/wildcard_lowering.dart": (
     hitCount: 9,
-    missCount: 6,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/kernel_generator_impl.dart": (
@@ -723,10 +723,10 @@
     hitCount: 0,
     missCount: 0,
   ),
-  // 0.0%.
+  // 100.0%.
   "package:front_end/src/macros/macro_injected_impl.dart": (
     hitCount: 0,
-    missCount: 1,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/macros/macro_serializer.dart": (
@@ -793,30 +793,30 @@
     hitCount: 1167,
     missCount: 0,
   ),
-  // 98.13664596273291%.
+  // 100.0%.
   "package:front_end/src/source/source_builder_mixins.dart": (
     hitCount: 158,
-    missCount: 3,
+    missCount: 0,
   ),
-  // 99.7584541062802%.
+  // 100.0%.
   "package:front_end/src/source/source_class_builder.dart": (
     hitCount: 1239,
-    missCount: 3,
+    missCount: 0,
   ),
-  // 99.46308724832214%.
+  // 100.0%.
   "package:front_end/src/source/source_compilation_unit.dart": (
     hitCount: 741,
-    missCount: 4,
+    missCount: 0,
   ),
-  // 98.31649831649831%.
+  // 100.0%.
   "package:front_end/src/source/source_constructor_builder.dart": (
     hitCount: 876,
-    missCount: 15,
+    missCount: 0,
   ),
-  // 99.81024667931689%.
+  // 100.0%.
   "package:front_end/src/source/source_enum_builder.dart": (
     hitCount: 526,
-    missCount: 1,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/source/source_extension_builder.dart": (
@@ -844,15 +844,15 @@
     hitCount: 302,
     missCount: 0,
   ),
-  // 99.85925404644617%.
+  // 100.0%.
   "package:front_end/src/source/source_library_builder.dart": (
     hitCount: 1419,
-    missCount: 2,
+    missCount: 0,
   ),
-  // 99.89253089736701%.
+  // 100.0%.
   "package:front_end/src/source/source_loader.dart": (
     hitCount: 1859,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/source/source_member_builder.dart": (
@@ -864,20 +864,20 @@
     hitCount: 518,
     missCount: 0,
   ),
-  // 99.10714285714286%.
+  // 100.0%.
   "package:front_end/src/source/source_type_alias_builder.dart": (
     hitCount: 333,
-    missCount: 3,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/source/stack_listener_impl.dart": (
     hitCount: 20,
     missCount: 0,
   ),
-  // 99.00497512437812%.
+  // 100.0%.
   "package:front_end/src/source/type_parameter_scope_builder.dart": (
     hitCount: 199,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/type_inference/closure_context.dart": (
@@ -909,15 +909,15 @@
     hitCount: 166,
     missCount: 0,
   ),
-  // 99.12507701786815%.
+  // 100.0%.
   "package:front_end/src/type_inference/inference_visitor.dart": (
     hitCount: 8044,
-    missCount: 71,
+    missCount: 0,
   ),
-  // 99.875%.
+  // 100.0%.
   "package:front_end/src/type_inference/inference_visitor_base.dart": (
     hitCount: 2397,
-    missCount: 3,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/type_inference/matching_cache.dart": (
@@ -929,10 +929,10 @@
     hitCount: 519,
     missCount: 0,
   ),
-  // 92.11409395973155%.
+  // 100.0%.
   "package:front_end/src/type_inference/object_access_target.dart": (
     hitCount: 549,
-    missCount: 47,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/type_inference/shared_type_analyzer.dart": (
@@ -954,10 +954,10 @@
     hitCount: 19,
     missCount: 0,
   ),
-  // 99.5959595959596%.
+  // 100.0%.
   "package:front_end/src/type_inference/type_inference_engine.dart": (
     hitCount: 493,
-    missCount: 2,
+    missCount: 0,
   ),
   // 100.0%.
   "package:front_end/src/type_inference/type_inferrer.dart": (
@@ -1004,9 +1004,9 @@
     hitCount: 78,
     missCount: 0,
   ),
-  // 99.13606911447084%.
+  // 100.0%.
   "package:front_end/src/util/textual_outline.dart": (
-    hitCount: 459,
-    missCount: 4,
+    hitCount: 463,
+    missCount: 0,
   ),
 };
