diff --git a/pkg/front_end/lib/src/fasta/builder/builder.dart b/pkg/front_end/lib/src/fasta/builder/builder.dart
index 7b208f1..347694c 100644
--- a/pkg/front_end/lib/src/fasta/builder/builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/builder.dart
@@ -197,9 +197,6 @@
   /// Applies [patch] to this declaration.
   void applyPatch(Builder patch);
 
-  /// Returns the number of patches that was finished.
-  int finishPatch();
-
   /// Return `true` if this builder is a duplicate of another with the same
   /// name. This is `false` for the builder first declared amongst duplicates.
   bool get isDuplicate;
@@ -295,11 +292,5 @@
   }
 
   @override
-  int finishPatch() {
-    if (!isPatch) return 0;
-    unsupported("${runtimeType}.finishPatch", charOffset, fileUri);
-  }
-
-  @override
   bool get isDuplicate => next != null;
 }
diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
index be3c4cf..c0848ae 100644
--- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
@@ -1996,7 +1996,7 @@
         }
       }
 
-      debugLibrary.build(lastGoodKernelTarget.loader.coreLibrary,
+      debugLibrary.buildOutlineNodes(lastGoodKernelTarget.loader.coreLibrary,
           modifyTarget: false);
       Expression compiledExpression = await lastGoodKernelTarget.loader
           .buildExpression(
diff --git a/pkg/front_end/lib/src/fasta/kernel/augmentation_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/augmentation_lowering.dart
new file mode 100644
index 0000000..67ba682
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/augmentation_lowering.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:kernel/ast.dart';
+
+const String _augmentedNamePrefix = '_#';
+const String _augmentedNameSuffix = '#augment';
+
+/// Creates the synthesized name to use for the [index]th augmented member by
+/// the given [name] in [library].
+Name augmentedName(String name, Library library, int index) {
+  return new Name(
+      '$_augmentedNamePrefix'
+      '${name.isEmpty ? 'new' : name}'
+      '$_augmentedNameSuffix'
+      '$index',
+      library);
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart b/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart
index 53d9f3d..0139e82 100644
--- a/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/combined_member_signature.dart
@@ -538,7 +538,7 @@
     if (copyLocation) {
       fileUri = member.fileUri;
       startFileOffset =
-          member is Procedure ? member.startFileOffset : member.fileOffset;
+          member is Procedure ? member.fileStartOffset : member.fileOffset;
       fileOffset = member.fileOffset;
     } else {
       fileUri = enclosingClass.fileUri;
@@ -555,7 +555,7 @@
       stubKind: ProcedureStubKind.MemberSignature,
       stubTarget: member.memberSignatureOrigin ?? member,
     )
-      ..startFileOffset = startFileOffset
+      ..fileStartOffset = startFileOffset
       ..fileOffset = fileOffset
       ..isNonNullableByDefault = containsNnbdTypes
       ..parent = enclosingClass;
@@ -585,7 +585,7 @@
     if (copyLocation) {
       fileUri = member.fileUri;
       startFileOffset =
-          member is Procedure ? member.startFileOffset : member.fileOffset;
+          member is Procedure ? member.fileStartOffset : member.fileOffset;
       fileOffset = member.fileOffset;
     } else {
       fileUri = enclosingClass.fileUri;
@@ -611,7 +611,7 @@
       stubKind: ProcedureStubKind.MemberSignature,
       stubTarget: member.memberSignatureOrigin ?? member,
     )
-      ..startFileOffset = startFileOffset
+      ..fileStartOffset = startFileOffset
       ..fileOffset = fileOffset
       ..isNonNullableByDefault = containsNnbdTypes
       ..parent = enclosingClass;
@@ -630,7 +630,7 @@
     int fileOffset;
     if (copyLocation) {
       fileUri = procedure.fileUri;
-      startFileOffset = procedure.startFileOffset;
+      startFileOffset = procedure.fileStartOffset;
       fileOffset = procedure.fileOffset;
     } else {
       fileUri = enclosingClass.fileUri;
@@ -690,7 +690,7 @@
       stubKind: ProcedureStubKind.MemberSignature,
       stubTarget: procedure.memberSignatureOrigin ?? procedure,
     )
-      ..startFileOffset = startFileOffset
+      ..fileStartOffset = startFileOffset
       ..fileOffset = fileOffset
       ..isNonNullableByDefault = containsNnbdTypes
       ..parent = enclosingClass;
diff --git a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
index 77159ce..1e6ea3e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constructor_tearoff_lowering.dart
@@ -295,7 +295,7 @@
 /// The [declarationConstructor] is the [Procedure] for the origin constructor
 /// and [implementationConstructorFunctionNode] is the [FunctionNode] for the
 /// implementation constructor. If the constructor is patched, these are not
-/// connected until [Builder.finishPatch].
+/// connected until [Builder.buildBodyNodes].
 FreshTypeParameters buildRedirectingFactoryTearOffProcedureParameters(
     {required Procedure tearOff,
     required Procedure implementationConstructor,
@@ -370,7 +370,7 @@
     Name name, Uri fileUri, int fileOffset, Reference? reference) {
   return new Procedure(name, ProcedureKind.Method, new FunctionNode(null),
       fileUri: fileUri, isStatic: true, isSynthetic: true, reference: reference)
-    ..startFileOffset = fileOffset
+    ..fileStartOffset = fileOffset
     ..fileOffset = fileOffset
     ..fileEndOffset = fileOffset
     ..isNonNullableByDefault = libraryBuilder.isNonNullableByDefault;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
index ffbbab7..f5ad8bd 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_helper.dart
@@ -325,7 +325,7 @@
   // TODO(ahe): restore file-offset once we track both origin and patch file
   // URIs. See https://github.com/dart-lang/sdk/issues/31579
   origin.fileUri = patch.fileUri;
-  origin.startFileOffset = patch.startFileOffset;
+  origin.fileStartOffset = patch.fileStartOffset;
   origin.fileOffset = patch.fileOffset;
   origin.fileEndOffset = patch.fileEndOffset;
   origin.annotations.forEach((m) => m.fileOffset = patch.fileOffset);
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 101ed7f..6986604 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -400,7 +400,8 @@
     loader.finishTypeVariables(
         augmentationLibraries, objectClassBuilder, dynamicType);
     for (SourceLibraryBuilder augmentationLibrary in augmentationLibraries) {
-      augmentationLibrary.build(loader.coreLibrary, modifyTarget: false);
+      augmentationLibrary.buildOutlineNodes(loader.coreLibrary,
+          modifyTarget: false);
     }
     loader.resolveConstructors(augmentationLibraries);
   }
@@ -471,7 +472,7 @@
       loader.createTypeInferenceEngine();
 
       benchmarker?.enterPhase(BenchmarkPhases.outline_buildComponent);
-      loader.buildComponent();
+      loader.buildOutlineNodes();
 
       benchmarker?.enterPhase(BenchmarkPhases.outline_installDefaultSupertypes);
       installDefaultSupertypes();
@@ -637,7 +638,7 @@
       loader.finishNativeMethods();
 
       benchmarker?.enterPhase(BenchmarkPhases.body_finishPatchMethods);
-      loader.finishPatchMethods();
+      loader.buildBodyNodes();
 
       benchmarker?.enterPhase(BenchmarkPhases.body_finishAllConstructors);
       finishAllConstructors(sourceClasses);
diff --git a/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart b/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart
index 7199ba7..dfe1513 100644
--- a/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/load_library_builder.dart
@@ -64,7 +64,7 @@
         fileUri: parent.library.fileUri,
         isStatic: true,
         reference: reference)
-      ..startFileOffset = charOffset
+      ..fileStartOffset = charOffset
       ..fileOffset = charOffset
       ..isNonNullableByDefault = parent.isNonNullableByDefault;
   }
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index f78f458..187af99 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -823,8 +823,14 @@
   }
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
-    assert(false, "Unexpected call to $runtimeType.buildMembers.");
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
+    assert(false, "Unexpected call to $runtimeType.buildOutlineNodes.");
+  }
+
+  @override
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
+    assert(false, "Unexpected call to $runtimeType.buildBodyNodes.");
+    return 0;
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index d5bf381..593d7b2 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -182,7 +182,7 @@
         } else if (declaration is SourceMemberBuilder) {
           SourceMemberBuilder memberBuilder = declaration;
           memberBuilder
-              .buildMembers((Member member, BuiltMemberKind memberKind) {
+              .buildOutlineNodes((Member member, BuiltMemberKind memberKind) {
             member.parent = cls;
             if (!memberBuilder.isPatch &&
                 !memberBuilder.isDuplicate &&
@@ -1390,24 +1390,57 @@
     }
   }
 
-  @override
-  int finishPatch() {
-    if (!isPatch) return 0;
-
+  int buildBodyNodes() {
     // TODO(ahe): restore file-offset once we track both origin and patch file
     // URIs. See https://github.com/dart-lang/sdk/issues/31579
-    cls.annotations.forEach((m) => m.fileOffset = origin.cls.fileOffset);
+    if (isPatch) {
+      cls.annotations.forEach((m) => m.fileOffset = origin.cls.fileOffset);
+    }
 
     int count = 0;
-    scope.forEach((String name, Builder declaration) {
-      count += declaration.finishPatch();
-    });
-    constructorScope.forEach((String name, Builder declaration) {
-      count += declaration.finishPatch();
-    });
+
+    void buildMembers(String name, Builder builder) {
+      if (builder.parent != this) {
+        return;
+      }
+      Builder? current = builder;
+      while (current != null) {
+        if (current is SourceMemberBuilder) {
+          count +=
+              current.buildBodyNodes((Member member, BuiltMemberKind kind) {
+            _buildMember(current as SourceMemberBuilder, member, kind);
+          });
+        }
+        current = current.next;
+      }
+    }
+
+    scope.forEach(buildMembers);
+    constructorScope.forEach(buildMembers);
     return count;
   }
 
+  void _buildMember(SourceMemberBuilder memberBuilder, Member member,
+      BuiltMemberKind memberKind) {
+    member.parent = cls;
+    if (!memberBuilder.isDuplicate &&
+        !memberBuilder.isConflictingSetter &&
+        !memberBuilder.isConflictingAugmentationMember) {
+      if (member is Procedure) {
+        cls.addProcedure(member);
+      } else if (member is Field) {
+        cls.addField(member);
+      } else if (member is Constructor) {
+        cls.addConstructor(member);
+      } else if (member is RedirectingFactory) {
+        cls.addRedirectingFactory(member);
+      } else {
+        unhandled("${member.runtimeType}", "getMember", member.fileOffset,
+            member.fileUri);
+      }
+    }
+  }
+
   /// Return a map whose keys are the supertypes of this [SourceClassBuilder]
   /// after expansion of type aliases, if any. For each supertype key, the
   /// corresponding value is the type alias which was unaliased in order to
diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
index 148e2b6..be790e8 100644
--- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
@@ -199,7 +199,7 @@
   }
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     _build();
     f(_constructor, BuiltMemberKind.Constructor);
     if (_constructorTearOff != null) {
@@ -708,7 +708,7 @@
   }
 
   @override
-  int finishPatch() {
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
     if (!isPatch) return 0;
     _finishPatch();
     return 1;
diff --git a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
index 578747e..874a967 100644
--- a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
@@ -101,6 +101,7 @@
 
     ClassBuilder objectClassBuilder =
         coreLibrary.lookupLocalMember('Object', required: true) as ClassBuilder;
+
     void buildBuilders(String name, Builder? declaration) {
       while (declaration != null) {
         Builder? objectGetter = objectClassBuilder.lookupLocalMember(name);
@@ -125,64 +126,9 @@
         } else if (declaration is SourceMemberBuilder) {
           SourceMemberBuilder memberBuilder = declaration;
           memberBuilder
-              .buildMembers((Member member, BuiltMemberKind memberKind) {
-            if (addMembersToLibrary &&
-                !memberBuilder.isPatch &&
-                !memberBuilder.isDuplicate &&
-                !memberBuilder.isConflictingSetter) {
-              ExtensionMemberKind kind;
-              String name = memberBuilder.name;
-              switch (memberKind) {
-                case BuiltMemberKind.Constructor:
-                case BuiltMemberKind.RedirectingFactory:
-                case BuiltMemberKind.Field:
-                case BuiltMemberKind.Method:
-                  unhandled(
-                      "${member.runtimeType}:${memberKind}",
-                      "buildMembers",
-                      memberBuilder.charOffset,
-                      memberBuilder.fileUri);
-                case BuiltMemberKind.ExtensionField:
-                case BuiltMemberKind.LateIsSetField:
-                  kind = ExtensionMemberKind.Field;
-                  break;
-                case BuiltMemberKind.ExtensionMethod:
-                  kind = ExtensionMemberKind.Method;
-                  break;
-                case BuiltMemberKind.ExtensionGetter:
-                case BuiltMemberKind.LateGetter:
-                  kind = ExtensionMemberKind.Getter;
-                  break;
-                case BuiltMemberKind.ExtensionSetter:
-                case BuiltMemberKind.LateSetter:
-                  kind = ExtensionMemberKind.Setter;
-                  break;
-                case BuiltMemberKind.ExtensionOperator:
-                  kind = ExtensionMemberKind.Operator;
-                  break;
-                case BuiltMemberKind.ExtensionTearOff:
-                  kind = ExtensionMemberKind.TearOff;
-                  break;
-              }
-              // ignore: unnecessary_null_comparison
-              assert(kind != null);
-              Reference memberReference;
-              if (member is Field) {
-                libraryBuilder.library.addField(member);
-                memberReference = member.fieldReference;
-              } else if (member is Procedure) {
-                libraryBuilder.library.addProcedure(member);
-                memberReference = member.reference;
-              } else {
-                unhandled("${member.runtimeType}", "buildBuilders",
-                    member.fileOffset, member.fileUri);
-              }
-              extension.members.add(new ExtensionMemberDescriptor(
-                  name: new Name(name, libraryBuilder.library),
-                  member: memberReference,
-                  isStatic: memberBuilder.isStatic,
-                  kind: kind));
-            }
+              .buildOutlineNodes((Member member, BuiltMemberKind memberKind) {
+            _buildMember(memberBuilder, member, memberKind,
+                addMembersToLibrary: addMembersToLibrary);
           });
         } else {
           unhandled("${declaration.runtimeType}", "buildBuilders",
@@ -197,6 +143,65 @@
     return _extension;
   }
 
+  void _buildMember(SourceMemberBuilder memberBuilder, Member member,
+      BuiltMemberKind memberKind,
+      {required bool addMembersToLibrary}) {
+    if (addMembersToLibrary &&
+        !memberBuilder.isPatch &&
+        !memberBuilder.isDuplicate &&
+        !memberBuilder.isConflictingSetter) {
+      ExtensionMemberKind kind;
+      String name = memberBuilder.name;
+      switch (memberKind) {
+        case BuiltMemberKind.Constructor:
+        case BuiltMemberKind.RedirectingFactory:
+        case BuiltMemberKind.Field:
+        case BuiltMemberKind.Method:
+          unhandled("${member.runtimeType}:${memberKind}", "buildMembers",
+              memberBuilder.charOffset, memberBuilder.fileUri);
+        case BuiltMemberKind.ExtensionField:
+        case BuiltMemberKind.LateIsSetField:
+          kind = ExtensionMemberKind.Field;
+          break;
+        case BuiltMemberKind.ExtensionMethod:
+          kind = ExtensionMemberKind.Method;
+          break;
+        case BuiltMemberKind.ExtensionGetter:
+        case BuiltMemberKind.LateGetter:
+          kind = ExtensionMemberKind.Getter;
+          break;
+        case BuiltMemberKind.ExtensionSetter:
+        case BuiltMemberKind.LateSetter:
+          kind = ExtensionMemberKind.Setter;
+          break;
+        case BuiltMemberKind.ExtensionOperator:
+          kind = ExtensionMemberKind.Operator;
+          break;
+        case BuiltMemberKind.ExtensionTearOff:
+          kind = ExtensionMemberKind.TearOff;
+          break;
+      }
+      // ignore: unnecessary_null_comparison
+      assert(kind != null);
+      Reference memberReference;
+      if (member is Field) {
+        libraryBuilder.library.addField(member);
+        memberReference = member.fieldReference;
+      } else if (member is Procedure) {
+        libraryBuilder.library.addProcedure(member);
+        memberReference = member.reference;
+      } else {
+        unhandled("${member.runtimeType}", "buildBuilders", member.fileOffset,
+            member.fileUri);
+      }
+      extension.members.add(new ExtensionMemberDescriptor(
+          name: new Name(name, libraryBuilder.library),
+          member: memberReference,
+          isStatic: memberBuilder.isStatic,
+          kind: kind));
+    }
+  }
+
   @override
   void applyPatch(Builder patch) {
     if (patch is SourceExtensionBuilder) {
@@ -230,13 +235,19 @@
     }
   }
 
-  @override
-  int finishPatch() {
-    if (!isPatch) return 0;
-
+  int buildBodyNodes({required bool addMembersToLibrary}) {
     int count = 0;
-    scope.forEach((String name, Builder declaration) {
-      count += declaration.finishPatch();
+    scope.forEach((String name, Builder? declaration) {
+      while (declaration != null) {
+        if (declaration is SourceMemberBuilder) {
+          count +=
+              declaration.buildBodyNodes((Member member, BuiltMemberKind kind) {
+            _buildMember(declaration as SourceMemberBuilder, member, kind,
+                addMembersToLibrary: addMembersToLibrary);
+          });
+        }
+        declaration = declaration.next;
+      }
     });
     return count;
   }
diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
index ec7ffb5..c90fe39 100644
--- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
@@ -75,7 +75,7 @@
             new FunctionNode(null),
             fileUri: libraryBuilder.fileUri,
             reference: procedureReference)
-          ..startFileOffset = startCharOffset
+          ..fileStartOffset = startCharOffset
           ..fileOffset = charOffset
           ..fileEndOffset = charEndOffset
           ..isNonNullableByDefault = libraryBuilder.isNonNullableByDefault,
@@ -132,7 +132,7 @@
   Iterable<Member> get exportedMembers => [_procedure];
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     _build();
     f(_procedureInternal, BuiltMemberKind.Method);
     if (_factoryTearOff != null) {
@@ -236,7 +236,7 @@
   }
 
   @override
-  int finishPatch() {
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
     if (!isPatch) return 0;
     _finishPatch();
     return 1;
@@ -338,7 +338,7 @@
   }
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     _build();
     f(_procedureInternal, BuiltMemberKind.RedirectingFactory);
     if (_factoryTearOff != null) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
index b05b07b..1fccff2 100644
--- a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
@@ -374,7 +374,7 @@
   Iterable<Member> get exportedMembers => _fieldEncoding.exportedMembers;
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     _build();
     _fieldEncoding.registerMembers(libraryBuilder, this, f);
   }
@@ -531,6 +531,11 @@
       SourceLibraryBuilder library, TypeEnvironment typeEnvironment) {
     library.checkTypesInField(this, typeEnvironment);
   }
+
+  @override
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
+    return 0;
+  }
 }
 
 /// Strategy pattern for creating different encodings of a declared field.
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index db9853c..5a845c0e 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -1038,7 +1038,8 @@
   }
 
   /// Builds the core AST structure of this library as needed for the outline.
-  Library build(LibraryBuilder coreLibrary, {bool modifyTarget: true}) {
+  Library buildOutlineNodes(LibraryBuilder coreLibrary,
+      {bool modifyTarget: true}) {
     // TODO(johnniwinther): Avoid the need to process patch libraries before
     // the origin. Currently, settings performed by the patch are overridden
     // by the origin. For instance, the `Map` class is abstract in the origin
@@ -1048,7 +1049,7 @@
     Iterable<SourceLibraryBuilder>? patches = this.patchLibraries;
     if (patches != null) {
       for (SourceLibraryBuilder patchLibrary in patches) {
-        patchLibrary.build(coreLibrary, modifyTarget: modifyTarget);
+        patchLibrary.buildOutlineNodes(coreLibrary, modifyTarget: modifyTarget);
       }
     }
 
@@ -1058,7 +1059,7 @@
 
     Iterator<Builder> iterator = this.iterator;
     while (iterator.moveNext()) {
-      buildBuilder(iterator.current, coreLibrary);
+      _buildOutlineNodes(iterator.current, coreLibrary);
     }
 
     if (!modifyTarget) return library;
@@ -3050,7 +3051,7 @@
   }
 
   /// Builds the core AST structures for [declaration] needed for the outline.
-  void buildBuilder(Builder declaration, LibraryBuilder coreLibrary) {
+  void _buildOutlineNodes(Builder declaration, LibraryBuilder coreLibrary) {
     String findDuplicateSuffix(Builder declaration) {
       if (declaration.next != null) {
         int count = 0;
@@ -3077,35 +3078,15 @@
         library.addExtension(extension);
       }
     } else if (declaration is SourceMemberBuilder) {
-      declaration.buildMembers((Member member, BuiltMemberKind memberKind) {
-        if (member is Field) {
-          member.isStatic = true;
-          if (!declaration.isPatch && !declaration.isDuplicate) {
-            library.addField(member);
-          }
-        } else if (member is Procedure) {
-          member.isStatic = true;
-          if (!declaration.isPatch &&
-              !declaration.isDuplicate &&
-              !declaration.isConflictingSetter) {
-            library.addProcedure(member);
-          }
-        } else {
-          unhandled("${member.runtimeType}:${memberKind}", "buildBuilder",
-              declaration.charOffset, declaration.fileUri);
-        }
+      declaration
+          .buildOutlineNodes((Member member, BuiltMemberKind memberKind) {
+        _addMemberToLibrary(declaration, member, memberKind);
       });
     } else if (declaration is SourceTypeAliasBuilder) {
       Typedef typedef = declaration.build();
       if (!declaration.isPatch && !declaration.isDuplicate) {
         library.addTypedef(typedef);
       }
-    } else if (declaration is SourceEnumBuilder) {
-      Class cls = declaration.build(coreLibrary);
-      if (!declaration.isPatch) {
-        cls.name += findDuplicateSuffix(declaration);
-        library.addClass(cls);
-      }
     } else if (declaration is PrefixBuilder) {
       // Ignored. Kernel doesn't represent prefixes.
       return;
@@ -3118,6 +3099,26 @@
     }
   }
 
+  void _addMemberToLibrary(SourceMemberBuilder declaration, Member member,
+      BuiltMemberKind memberKind) {
+    if (member is Field) {
+      member.isStatic = true;
+      if (!declaration.isPatch && !declaration.isDuplicate) {
+        library.addField(member);
+      }
+    } else if (member is Procedure) {
+      member.isStatic = true;
+      if (!declaration.isPatch &&
+          !declaration.isDuplicate &&
+          !declaration.isConflictingSetter) {
+        library.addProcedure(member);
+      }
+    } else {
+      unhandled("${member.runtimeType}:${memberKind}", "_buildMember",
+          declaration.charOffset, declaration.fileUri);
+    }
+  }
+
   void addNativeDependency(String nativeImportPath) {
     MemberBuilder constructor = loader.getNativeAnnotation();
     Arguments arguments =
@@ -3934,20 +3935,43 @@
     }
   }
 
-  int finishPatchMethods() {
+  /// Builds the AST nodes needed for the full compilation.
+  ///
+  /// This includes patching member bodies and adding augmented members.
+  int buildBodyNodes() {
     int count = 0;
 
     Iterable<SourceLibraryBuilder>? patches = this.patchLibraries;
     if (patches != null) {
       for (SourceLibraryBuilder patchLibrary in patches) {
-        count += patchLibrary.finishPatchMethods();
+        count += patchLibrary.buildBodyNodes();
       }
     }
 
-    if (isPatch) {
-      Iterator<Builder> iterator = this.iterator;
-      while (iterator.moveNext()) {
-        count += iterator.current.finishPatch();
+    Iterator<Builder> iterator = this.iterator;
+    while (iterator.moveNext()) {
+      Builder builder = iterator.current;
+      if (builder is SourceMemberBuilder) {
+        count +=
+            builder.buildBodyNodes((Member member, BuiltMemberKind memberKind) {
+          _addMemberToLibrary(builder, member, memberKind);
+        });
+      } else if (builder is SourceClassBuilder) {
+        count += builder.buildBodyNodes();
+      } else if (builder is SourceExtensionBuilder) {
+        count +=
+            builder.buildBodyNodes(addMembersToLibrary: !builder.isDuplicate);
+      } else if (builder is SourceClassBuilder) {
+        count += builder.buildBodyNodes();
+      } else if (builder is SourceTypeAliasBuilder) {
+        // Do nothing.
+      } else if (builder is PrefixBuilder) {
+        // Ignored. Kernel doesn't represent prefixes.
+      } else if (builder is BuiltinTypeDeclarationBuilder) {
+        // Nothing needed.
+      } else {
+        unhandled("${builder.runtimeType}", "buildBodyNodes",
+            builder.charOffset, builder.fileUri);
       }
     }
     return count;
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index d3b47de..6e7c3fe 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -1793,10 +1793,10 @@
     ticker.logMs("Finished $count native methods");
   }
 
-  void finishPatchMethods() {
+  void buildBodyNodes() {
     int count = 0;
     for (SourceLibraryBuilder library in sourceLibraryBuilders) {
-      count += library.finishPatchMethods();
+      count += library.buildBodyNodes();
     }
     ticker.logMs("Finished $count patch methods");
   }
@@ -2020,9 +2020,9 @@
   }
 
   /// Builds the core AST structure needed for the outline of the component.
-  void buildComponent() {
+  void buildOutlineNodes() {
     for (SourceLibraryBuilder library in sourceLibraryBuilders) {
-      Library target = library.build(coreLibrary);
+      Library target = library.buildOutlineNodes(coreLibrary);
       if (library.referencesFrom != null) {
         referenceFromIndex ??= new ReferenceFromIndex();
         referenceFromIndex!
diff --git a/pkg/front_end/lib/src/fasta/source/source_member_builder.dart b/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
index 429809d..822ea53 100644
--- a/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
@@ -29,13 +29,18 @@
   SourceLibraryBuilder get libraryBuilder;
 
   /// Builds the core AST structures for this member as needed for the outline.
-  void buildMembers(void Function(Member, BuiltMemberKind) f);
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f);
 
   void buildOutlineExpressions(
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners);
 
+  /// Builds the AST nodes for this member as needed for the full compilation.
+  ///
+  /// This includes adding patched bodies and augmented members.
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f);
+
   /// Checks the variance of type parameters [sourceClassBuilder] used in the
   /// signature of this member.
   void checkVariance(
@@ -60,11 +65,16 @@
       retainDataForTesting ? new MemberDataForTesting() : null;
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     assert(false, "Unexpected call to $runtimeType.buildMembers.");
   }
 
   @override
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
+    return 0;
+  }
+
+  @override
   bool get isAugmentation => false;
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
index 9588563..e6686bc 100644
--- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
@@ -14,6 +14,7 @@
 import '../builder/procedure_builder.dart';
 import '../builder/type_builder.dart';
 import '../builder/type_variable_builder.dart';
+import '../kernel/augmentation_lowering.dart';
 import '../kernel/hierarchy/class_member.dart';
 import '../kernel/hierarchy/members_builder.dart';
 import '../kernel/kernel_helper.dart';
@@ -96,7 +97,7 @@
         fileUri: libraryBuilder.fileUri,
         reference: procedureReference,
         isSynthetic: isSynthetic)
-      ..startFileOffset = startCharOffset
+      ..fileStartOffset = startCharOffset
       ..fileOffset = charOffset
       ..fileEndOffset = charEndOffset
       ..isNonNullableByDefault = libraryBuilder.isNonNullableByDefault;
@@ -231,7 +232,7 @@
   Iterable<Member> get exportedMembers => [procedure];
 
   @override
-  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+  void buildOutlineNodes(void Function(Member, BuiltMemberKind) f) {
     _build();
     if (isExtensionMethod) {
       switch (kind) {
@@ -467,11 +468,33 @@
   }
 
   @override
-  int finishPatch() {
-    if (!isPatch) return 0;
+  int buildBodyNodes(void Function(Member, BuiltMemberKind) f) {
+    List<SourceProcedureBuilder>? patches = _patches;
+    if (patches != null) {
+      Procedure augmentedProcedure = _procedure;
+      int index = 0;
+      for (SourceProcedureBuilder patch in patches) {
+        if (!augmentedProcedure.isExternal && !augmentedProcedure.isAbstract) {
+          Procedure newProcedure = new Procedure(
+              augmentedName(augmentedProcedure.name.text,
+                  libraryBuilder.library, index++),
+              augmentedProcedure.kind,
+              augmentedProcedure.function,
+              fileUri: augmentedProcedure.fileUri)
+            ..fileOffset = augmentedProcedure.fileOffset
+            ..fileEndOffset = augmentedProcedure.fileEndOffset
+            ..fileStartOffset = augmentedProcedure.fileStartOffset
+            ..signatureType = augmentedProcedure.signatureType
+            ..flags = augmentedProcedure.flags;
+          f(newProcedure, BuiltMemberKind.Method);
+        }
+        augmentedProcedure = patch.actualProcedure;
+      }
+      finishProcedurePatch(procedure, augmentedProcedure);
 
-    finishProcedurePatch(origin.procedure, _procedure);
-    return 1;
+      return patches.length;
+    }
+    return 0;
   }
 
   @override
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index 78f31b4..da9478c 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -1844,6 +1844,26 @@
   StringBuffer s = new StringBuffer();
   s.write(componentToString(c));
 
+  bool printedConstantCoverageHeader = false;
+  for (Source source in component.uriToSource.values) {
+    if (source.importUri?.scheme == "dart") continue;
+
+    if (source.constantCoverageConstructors != null &&
+        source.constantCoverageConstructors!.isNotEmpty) {
+      if (!printedConstantCoverageHeader) {
+        s.writeln("");
+        s.writeln("");
+        s.writeln("Constructor coverage from constants:");
+        printedConstantCoverageHeader = true;
+      }
+      s.writeln("${source.fileUri}:");
+      for (Reference reference in source.constantCoverageConstructors!) {
+        s.writeln("- ${reference.node} (from ${reference.node?.location})");
+      }
+      s.writeln("");
+    }
+  }
+
   if (dartUris.isNotEmpty) {
     s.writeln("");
     s.writeln("And ${dartUris.length} platform libraries:");
diff --git a/pkg/front_end/test/outline_extractor_suite.dart b/pkg/front_end/test/outline_extractor_suite.dart
index 42adf8c..a41a076 100644
--- a/pkg/front_end/test/outline_extractor_suite.dart
+++ b/pkg/front_end/test/outline_extractor_suite.dart
@@ -248,7 +248,7 @@
   }
 
   @override
-  bool checkProcedure_startFileOffset(
+  bool checkProcedure_fileStartOffset(
       EquivalenceVisitor visitor, Procedure node, Procedure other) {
     return true;
   }
diff --git a/pkg/front_end/test/outline_extractor_tester.dart b/pkg/front_end/test/outline_extractor_tester.dart
index 01fbca9..c77a98a 100644
--- a/pkg/front_end/test/outline_extractor_tester.dart
+++ b/pkg/front_end/test/outline_extractor_tester.dart
@@ -236,7 +236,7 @@
   }
 
   @override
-  bool checkProcedure_startFileOffset(
+  bool checkProcedure_fileStartOffset(
       EquivalenceVisitor visitor, Procedure node, Procedure other) {
     return true;
   }
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index eaad1d4..e401254 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -82,6 +82,7 @@
 augment
 augmentation
 augmentations
+augmented
 augmenting
 augments
 auto
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect
index 8014659..f9945e5 100644
--- a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.1.expect
@@ -49,3 +49,15 @@
   #C1 = lib::A {}
   #C2 = lib::C {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- C. (from org-dartlang-test:///lib.dart:11:9)
+- B. (from org-dartlang-test:///lib.dart:7:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- A. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect
index 36461a4..f994018 100644
--- a/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/changed_serialization_2.yaml.world.2.expect
@@ -45,3 +45,10 @@
 constants  {
   #C1 = lib::A {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- A. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/const_to_string.yaml.world.1.expect b/pkg/front_end/testcases/incremental/const_to_string.yaml.world.1.expect
index f842a13..fc57f00 100644
--- a/pkg/front_end/testcases/incremental/const_to_string.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/const_to_string.yaml.world.1.expect
@@ -31,3 +31,11 @@
   #C1 = "Instance of 'A'"
   #C2 = "Instance of 'B'"
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- A. (from org-dartlang-test:///a.dart:2:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- B. (from org-dartlang-test:///b.dart:2:9)
+
diff --git a/pkg/front_end/testcases/incremental/const_to_string.yaml.world.2.expect b/pkg/front_end/testcases/incremental/const_to_string.yaml.world.2.expect
index f842a13..fc57f00 100644
--- a/pkg/front_end/testcases/incremental/const_to_string.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/const_to_string.yaml.world.2.expect
@@ -31,3 +31,11 @@
   #C1 = "Instance of 'A'"
   #C2 = "Instance of 'B'"
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- A. (from org-dartlang-test:///a.dart:2:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- B. (from org-dartlang-test:///b.dart:2:9)
+
diff --git a/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect b/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
index bcb7537..04e1b36 100644
--- a/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/crash_05.yaml.world.1.expect
@@ -66,3 +66,12 @@
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
   #C17 = dart.core::pragma {name:#C1, options:#C16}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Uint32. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:91:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect b/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
index bcb7537..04e1b36 100644
--- a/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/crash_05.yaml.world.2.expect
@@ -66,3 +66,12 @@
   #C16 = dart.ffi::_FfiStructLayout {fieldTypes:#C15, packing:#C4}
   #C17 = dart.core::pragma {name:#C1, options:#C16}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Uint32. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:91:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
index e6e7693..b7e1762 100644
--- a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.1.expect
@@ -73,3 +73,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
index 7712ae2..655f66e 100644
--- a/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/ffi_01.yaml.world.2.expect
@@ -77,3 +77,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
index 99eefd4..8606c08 100644
--- a/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/ffi_02.yaml.world.1.expect
@@ -74,3 +74,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.1.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.1.expect
index 4000948..1168c24 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.1.expect
@@ -70,3 +70,10 @@
   #C5 = "Foo"
   #C6 = wid::_Location {file:#C2, line:#C3, column:#C4, name:#C5, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:9:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.2.expect
index 4000948..1168c24 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform.yaml.world.2.expect
@@ -70,3 +70,10 @@
   #C5 = "Foo"
   #C6 = wid::_Location {file:#C2, line:#C3, column:#C4, name:#C5, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:9:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
index ff0ff25..6347d3f6 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.1.expect
@@ -157,3 +157,22 @@
   #C47 = 20.0
   #C48 = wid::_Location {file:#C38, line:#C11, column:#C47, name:#C32, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Bar._ (from org-dartlang-test:///foo.dart:5:7)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:5:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Foo._ (from org-dartlang-test:///foo.dart:3:7)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:5:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+- Baz.__ (from org-dartlang-test:///foo.dart:8:7)
+- Boz._ (from org-dartlang-test:///foo.dart:10:7)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
index 47c45a0..47f4225 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.2.expect
@@ -140,3 +140,15 @@
   #C36 = 10.0
   #C37 = wid::_Location {file:#C2, line:#C36, column:#C11, name:#C32, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Foo._ (from org-dartlang-test:///foo.dart:3:7)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:5:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+- Baz.__ (from org-dartlang-test:///foo.dart:8:7)
+- Boz._ (from org-dartlang-test:///foo.dart:10:7)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
index ff0ff25..a2b9291 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_const.yaml.world.3.expect
@@ -157,3 +157,22 @@
   #C47 = 20.0
   #C48 = wid::_Location {file:#C38, line:#C11, column:#C47, name:#C32, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Foo._ (from org-dartlang-test:///foo.dart:3:7)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:5:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+- Baz.__ (from org-dartlang-test:///foo.dart:8:7)
+- Boz._ (from org-dartlang-test:///foo.dart:10:7)
+
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Bar._ (from org-dartlang-test:///foo.dart:5:7)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:5:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.1.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.1.expect
index f4d0275..9227139 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.1.expect
@@ -60,3 +60,10 @@
   #C5 = "Foo"
   #C6 = wid::_Location {file:#C2, line:#C3, column:#C4, name:#C5, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:8:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.2.expect
index 3fdfb87..b970314 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transform_nnbd.yaml.world.2.expect
@@ -66,3 +66,17 @@
   #C10 = wid::_Location {file:#C7, line:#C8, column:#C9, name:#C5, parameterLocations:#C1}
   #C11 = foo::Foo {_location:#C10}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:8:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:8:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+- Foo. (from org-dartlang-test:///foo.dart:2:34)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:6:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml.world.2.expect
index 64a1fbd..4d8c8bd 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transformer_43371.yaml.world.2.expect
@@ -69,3 +69,13 @@
   #C1 = null
   #C2 = foo::Foo {key:#C1, _location:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///foo.dart:6:9)
+- StatelessWidget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:10:9)
+- Widget. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:7:9)
+- Bar. (from org-dartlang-test:///flutter/lib/src/widgets/framework.dart:2:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.1.expect b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.1.expect
index a6fb1d9..02db06b 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.1.expect
@@ -61,3 +61,10 @@
   #C5 = "Foo"
   #C6 = wid::_Location {file:#C2, line:#C3, column:#C4, name:#C5, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.2.expect b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.2.expect
index e6b030d..292e661 100644
--- a/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/flutter_widget_transformer_non_const.yaml.world.2.expect
@@ -66,3 +66,14 @@
   #C9 = 15.0
   #C10 = wid::_Location {file:#C7, line:#C8, column:#C9, name:#C5, parameterLocations:#C1}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///foo.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
+org-dartlang-test:///main.dart:
+- _Location. (from org-dartlang-test:///flutter/lib/src/widgets/widget_inspector.dart:7:9)
+- Object. (from org-dartlang-sdk:///lib/core/object.dart:-1:-1)
+
diff --git a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
index a889a57..2b8f16d 100644
--- a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.1.expect
@@ -124,3 +124,11 @@
   #C29 = 1000000
   #C30 = dart.core::Duration {_duration:#C29}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///b.dart:
+- Duration. (from org-dartlang-sdk:///sdk/lib/core/duration.dart:173:9)
+- Duration._microseconds (from org-dartlang-sdk:///sdk/lib/core/duration.dart:189:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
index a889a57..2b8f16d 100644
--- a/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/issue_46666.yaml.world.2.expect
@@ -124,3 +124,11 @@
   #C29 = 1000000
   #C30 = dart.core::Duration {_duration:#C29}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///b.dart:
+- Duration. (from org-dartlang-sdk:///sdk/lib/core/duration.dart:173:9)
+- Duration._microseconds (from org-dartlang-sdk:///sdk/lib/core/duration.dart:189:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.1.expect
index b41916b..e74b105 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.1.expect
@@ -36,3 +36,10 @@
 constants  {
   #C1 = lib2::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib2.dart:4:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.2.expect
index 6e5e4a9..a4182de 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_13.yaml.world.2.expect
@@ -37,3 +37,10 @@
 constants  {
   #C1 = lib2::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib2.dart:4:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
index 90a9879..7d10cb3 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.1.expect
@@ -76,3 +76,11 @@
   #C13 = main::CompilationStrategy {index:#C11, _name:#C12}
   #C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:18:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
index 7373cee..586df3a 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_2.yaml.world.2.expect
@@ -76,3 +76,11 @@
   #C13 = main::CompilationStrategy {index:#C11, _name:#C12}
   #C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:18:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
index 5858d2a..fa9019c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
@@ -36,3 +36,10 @@
   #C1 = dart.core::_Override {}
   #C2 = main::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///main.dart:5:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
index 39a1eee..e0d18ed 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
@@ -37,3 +37,10 @@
   #C1 = dart.core::_Override {}
   #C2 = main::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///main.dart:5:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
index e6e7693..b7e1762 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.1.expect
@@ -73,3 +73,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
index 1134f3c..ff06ff1 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.2.expect
@@ -74,3 +74,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
index e52f835..9f42aec 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_35.yaml.world.3.expect
@@ -75,3 +75,12 @@
   #C18 = 20
   #C19 = <dart.core::int*>[#C17, #C17, #C18, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C18, #C17, #C17, #C17, #C17, #C17, #C17, #C17, #C17]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib.dart:
+- Double. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:115:9)
+- _NativeDouble. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:35:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
index a86189c..d73f0fe 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.1.expect
@@ -105,3 +105,19 @@
   #C30 = 28
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
index a9302fa..2f12464 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_48_ffi.yaml.world.2.expect
@@ -105,3 +105,19 @@
   #C30 = 36
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
index a86189c..d73f0fe 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.1.expect
@@ -105,3 +105,19 @@
   #C30 = 28
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
index a9302fa..2f12464 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_49_ffi.yaml.world.2.expect
@@ -105,3 +105,19 @@
   #C30 = 36
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
index d8895e9..e65d991 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
@@ -32,3 +32,10 @@
   #C1 = dart.core::_Override {}
   #C2 = main::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///main.dart:5:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
index 443a189c..5267571 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
@@ -32,3 +32,10 @@
   #C1 = dart.core::_Override {}
   #C2 = main::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///main.dart:5:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
index e7549e8..e291aa1 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
@@ -33,3 +33,10 @@
   #C1 = dart.core::_Override {}
   #C2 = main::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Foo. (from org-dartlang-test:///main.dart:5:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
index b64cce3..3285a00 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.1.expect
@@ -291,3 +291,19 @@
   #C30 = 28
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
index e760406..ef80737 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_50_ffi.yaml.world.2.expect
@@ -291,3 +291,19 @@
   #C30 = 36
   #C31 = <dart.core::int*>[#C29, #C29, #C30, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C30, #C29, #C29, #C29, #C29, #C29, #C29, #C29, #C29]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib.dart:
+- Uint8. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:75:9)
+- _NativeInteger. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:27:9)
+- NativeType. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:12:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+- Uint64. (from org-dartlang-sdk:///sdk/lib/ffi/native_type.dart:99:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
index 59e6822..2cc160f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.1.expect
@@ -83,3 +83,11 @@
   #C13 = main::CompilationStrategy {index:#C11, _name:#C12}
   #C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:18:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
index 9008ffe..f4b7e7b 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.2.expect
@@ -83,3 +83,11 @@
   #C13 = main::CompilationStrategy {index:#C11, _name:#C12}
   #C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:18:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
index bc00082..f45163f 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_6.yaml.world.3.expect
@@ -76,3 +76,11 @@
   #C13 = main::CompilationStrategy {index:#C11, _name:#C12}
   #C14 = <main::CompilationStrategy*>[#C4, #C7, #C10, #C13]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:18:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
index 69f385d..0b471c1 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.1.expect
@@ -95,3 +95,11 @@
   #C14 = main::CompilationStrategy {index:#C12, _name:#C13}
   #C15 = <main::CompilationStrategy*>[#C5, #C8, #C11, #C14]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:33:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
index 69f385d..0b471c1 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_7.yaml.world.2.expect
@@ -95,3 +95,11 @@
   #C14 = main::CompilationStrategy {index:#C12, _name:#C13}
   #C15 = <main::CompilationStrategy*>[#C5, #C8, #C11, #C14]
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///main.dart:
+- CompilationStrategy. (from org-dartlang-test:///main.dart:33:6)
+- _Enum. (from org-dartlang-sdk:///sdk/lib/core/enum.dart:103:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
index dfaa047..88a3567 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.2.expect
@@ -69,3 +69,12 @@
     dart.core::print(invalid-expression "This assertion failed.");
   }
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
+org-dartlang-test:///lib3.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
index cde8746..8f13ae6 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.3.expect
@@ -59,3 +59,13 @@
 constants  {
   #C1 = lib::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib3.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
index d0d6582..f0e49e5 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.4.expect
@@ -59,3 +59,13 @@
 constants  {
   #C1 = lib::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
+org-dartlang-test:///lib3.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
index 2d91ec1..2268375 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_10.yaml.world.5.expect
@@ -46,3 +46,14 @@
 constants  {
   #C1 = lib::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
+org-dartlang-test:///lib3.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
index 3cac950..ad41429 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.2.expect
@@ -62,3 +62,9 @@
     lib2::bar();
   }
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
index ae3bfe7..0c12219 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_11.yaml.world.3.expect
@@ -55,3 +55,10 @@
 constants  {
   #C1 = lib::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
index 15f54b2..0c6d913 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_8.yaml.world.2.expect
@@ -47,3 +47,9 @@
     lib::foo();
   }
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
index 1ba9798..bad435a 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.2.expect
@@ -69,3 +69,9 @@
     dart.core::print(invalid-expression "This assertion failed.");
   }
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+
diff --git a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
index dc713d3..c5b8118 100644
--- a/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/reissue_errors_9.yaml.world.3.expect
@@ -46,3 +46,10 @@
 constants  {
   #C1 = lib::Foo {}
 }
+
+
+Constructor coverage from constants:
+org-dartlang-test:///lib2.dart:
+- Foo. (from org-dartlang-test:///lib.dart:3:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
+
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart b/pkg/front_end/testcases/macros/augment_concrete.dart
new file mode 100644
index 0000000..821e483
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import augment 'augment_concrete_lib1.dart';
+import augment 'augment_concrete_lib2.dart';
+
+void topLevelMethod() {
+  print('topLevelMethod original');
+}
+
+external void externalTopLevelMethod();
+
+class Class {
+  void instanceMethod() {
+    print('instanceMethod original');
+  }
+
+  static void staticMethod() {
+    print('staticMethod original');
+  }
+
+  external void externalInstanceMethod();
+}
+
+main() {
+  topLevelMethod();
+  new Class().instanceMethod();
+  Class.staticMethod();
+  new Class().externalInstanceMethod();
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.strong.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.strong.expect
new file mode 100644
index 0000000..83a035a
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.strong.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ instanceMethod() → void {
+    core::print("instanceMethod augmentation 2");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ staticMethod() → void {
+    core::print("staticMethod augmentation 2");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ externalInstanceMethod() → void {
+    core::print("externalInstanceMethod augmentation 2");
+  }
+  method _#instanceMethod#augment0() → void {
+    core::print("instanceMethod original");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#instanceMethod#augment1() → void {
+    core::print("instanceMethod augmentation 1");
+  }
+  static method _#staticMethod#augment0() → void {
+    core::print("staticMethod original");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#staticMethod#augment1() → void {
+    core::print("staticMethod augmentation 1");
+  }
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ topLevelMethod() → void {
+  core::print("topLevelMethod augmentation 2");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ externalTopLevelMethod() → void {
+  core::print("externalTopLevelMethod augmentation 1");
+}
+static method main() → dynamic {
+  self::topLevelMethod();
+  new self::Class::•().{self::Class::instanceMethod}(){() → void};
+  self::Class::staticMethod();
+  new self::Class::•().{self::Class::externalInstanceMethod}(){() → void};
+}
+static method _#topLevelMethod#augment0() → void {
+  core::print("topLevelMethod original");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#topLevelMethod#augment1() → void {
+  core::print("topLevelMethod augmentation 1");
+}
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.strong.transformed.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.strong.transformed.expect
new file mode 100644
index 0000000..83a035a
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.strong.transformed.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ instanceMethod() → void {
+    core::print("instanceMethod augmentation 2");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ staticMethod() → void {
+    core::print("staticMethod augmentation 2");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ externalInstanceMethod() → void {
+    core::print("externalInstanceMethod augmentation 2");
+  }
+  method _#instanceMethod#augment0() → void {
+    core::print("instanceMethod original");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#instanceMethod#augment1() → void {
+    core::print("instanceMethod augmentation 1");
+  }
+  static method _#staticMethod#augment0() → void {
+    core::print("staticMethod original");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#staticMethod#augment1() → void {
+    core::print("staticMethod augmentation 1");
+  }
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ topLevelMethod() → void {
+  core::print("topLevelMethod augmentation 2");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ externalTopLevelMethod() → void {
+  core::print("externalTopLevelMethod augmentation 1");
+}
+static method main() → dynamic {
+  self::topLevelMethod();
+  new self::Class::•().{self::Class::instanceMethod}(){() → void};
+  self::Class::staticMethod();
+  new self::Class::•().{self::Class::externalInstanceMethod}(){() → void};
+}
+static method _#topLevelMethod#augment0() → void {
+  core::print("topLevelMethod original");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#topLevelMethod#augment1() → void {
+  core::print("topLevelMethod augmentation 1");
+}
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.textual_outline.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.textual_outline.expect
new file mode 100644
index 0000000..68a15f5
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+import augment 'augment_concrete_lib1.dart';
+import augment 'augment_concrete_lib2.dart';
+void topLevelMethod() {}
+external void externalTopLevelMethod();
+class Class {
+  void instanceMethod() {}
+  static void staticMethod() {}
+  external void externalInstanceMethod();
+}
+main() {}
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.weak.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.expect
new file mode 100644
index 0000000..83a035a
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ instanceMethod() → void {
+    core::print("instanceMethod augmentation 2");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ staticMethod() → void {
+    core::print("staticMethod augmentation 2");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ externalInstanceMethod() → void {
+    core::print("externalInstanceMethod augmentation 2");
+  }
+  method _#instanceMethod#augment0() → void {
+    core::print("instanceMethod original");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#instanceMethod#augment1() → void {
+    core::print("instanceMethod augmentation 1");
+  }
+  static method _#staticMethod#augment0() → void {
+    core::print("staticMethod original");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#staticMethod#augment1() → void {
+    core::print("staticMethod augmentation 1");
+  }
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ topLevelMethod() → void {
+  core::print("topLevelMethod augmentation 2");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ externalTopLevelMethod() → void {
+  core::print("externalTopLevelMethod augmentation 1");
+}
+static method main() → dynamic {
+  self::topLevelMethod();
+  new self::Class::•().{self::Class::instanceMethod}(){() → void};
+  self::Class::staticMethod();
+  new self::Class::•().{self::Class::externalInstanceMethod}(){() → void};
+}
+static method _#topLevelMethod#augment0() → void {
+  core::print("topLevelMethod original");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#topLevelMethod#augment1() → void {
+  core::print("topLevelMethod augmentation 1");
+}
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.weak.modular.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.modular.expect
new file mode 100644
index 0000000..83a035a
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.modular.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ instanceMethod() → void {
+    core::print("instanceMethod augmentation 2");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ staticMethod() → void {
+    core::print("staticMethod augmentation 2");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ externalInstanceMethod() → void {
+    core::print("externalInstanceMethod augmentation 2");
+  }
+  method _#instanceMethod#augment0() → void {
+    core::print("instanceMethod original");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#instanceMethod#augment1() → void {
+    core::print("instanceMethod augmentation 1");
+  }
+  static method _#staticMethod#augment0() → void {
+    core::print("staticMethod original");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#staticMethod#augment1() → void {
+    core::print("staticMethod augmentation 1");
+  }
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ topLevelMethod() → void {
+  core::print("topLevelMethod augmentation 2");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ externalTopLevelMethod() → void {
+  core::print("externalTopLevelMethod augmentation 1");
+}
+static method main() → dynamic {
+  self::topLevelMethod();
+  new self::Class::•().{self::Class::instanceMethod}(){() → void};
+  self::Class::staticMethod();
+  new self::Class::•().{self::Class::externalInstanceMethod}(){() → void};
+}
+static method _#topLevelMethod#augment0() → void {
+  core::print("topLevelMethod original");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#topLevelMethod#augment1() → void {
+  core::print("topLevelMethod augmentation 1");
+}
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.weak.outline.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.outline.expect
new file mode 100644
index 0000000..0c99b32
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.outline.expect
@@ -0,0 +1,21 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    ;
+  method instanceMethod() → void
+    ;
+  static method staticMethod() → void
+    ;
+  external method externalInstanceMethod() → void;
+}
+static method topLevelMethod() → void
+  ;
+external static method externalTopLevelMethod() → void;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/macros/augment_concrete.dart.weak.transformed.expect b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.transformed.expect
new file mode 100644
index 0000000..83a035a
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete.dart.weak.transformed.expect
@@ -0,0 +1,51 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_concrete.dart";
+import "org-dartlang-testcase:///augment_concrete.dart";
+
+class Class extends core::Object {
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ instanceMethod() → void {
+    core::print("instanceMethod augmentation 2");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ staticMethod() → void {
+    core::print("staticMethod augmentation 2");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ externalInstanceMethod() → void {
+    core::print("externalInstanceMethod augmentation 2");
+  }
+  method _#instanceMethod#augment0() → void {
+    core::print("instanceMethod original");
+  }
+  method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#instanceMethod#augment1() → void {
+    core::print("instanceMethod augmentation 1");
+  }
+  static method _#staticMethod#augment0() → void {
+    core::print("staticMethod original");
+  }
+  static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#staticMethod#augment1() → void {
+    core::print("staticMethod augmentation 1");
+  }
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib2.dart */ topLevelMethod() → void {
+  core::print("topLevelMethod augmentation 2");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ externalTopLevelMethod() → void {
+  core::print("externalTopLevelMethod augmentation 1");
+}
+static method main() → dynamic {
+  self::topLevelMethod();
+  new self::Class::•().{self::Class::instanceMethod}(){() → void};
+  self::Class::staticMethod();
+  new self::Class::•().{self::Class::externalInstanceMethod}(){() → void};
+}
+static method _#topLevelMethod#augment0() → void {
+  core::print("topLevelMethod original");
+}
+static method /* from org-dartlang-testcase:///augment_concrete_lib1.dart */ _#topLevelMethod#augment1() → void {
+  core::print("topLevelMethod augmentation 1");
+}
diff --git a/pkg/front_end/testcases/macros/augment_concrete_lib1.dart b/pkg/front_end/testcases/macros/augment_concrete_lib1.dart
new file mode 100644
index 0000000..e036435
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete_lib1.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+augment void topLevelMethod() {
+  print('topLevelMethod augmentation 1');
+}
+
+augment void externalTopLevelMethod() {
+  print('externalTopLevelMethod augmentation 1');
+}
+
+augment class Class {
+  augment void instanceMethod() {
+    print('instanceMethod augmentation 1');
+  }
+
+  augment static void staticMethod() {
+    print('staticMethod augmentation 1');
+  }
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/macros/augment_concrete_lib2.dart b/pkg/front_end/testcases/macros/augment_concrete_lib2.dart
new file mode 100644
index 0000000..de1bc9b
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_concrete_lib2.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+augment void topLevelMethod() {
+  print('topLevelMethod augmentation 2');
+}
+
+augment class Class {
+  augment void instanceMethod() {
+    print('instanceMethod augmentation 2');
+  }
+
+  augment static void staticMethod() {
+    print('staticMethod augmentation 2');
+  }
+
+  augment void externalInstanceMethod() {
+    print('externalInstanceMethod augmentation 2');
+  }
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.strong.expect b/pkg/front_end/testcases/macros/augment_super.dart.strong.expect
index d309789..fa16fcc 100644
--- a/pkg/front_end/testcases/macros/augment_super.dart.strong.expect
+++ b/pkg/front_end/testcases/macros/augment_super.dart.strong.expect
@@ -122,6 +122,11 @@
     augment; // Error
     ^^^^^^^" in this{<unresolved>}.augment;
   }
+  method _#instanceMethod#augment0() → void {}
+  method _#instanceMethodErrors#augment0() → void {}
+  get _#instanceProperty#augment0() → core::int
+    return 42;
+  set _#instanceProperty#augment0(core::int value) → void {}
 }
 static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
   (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
@@ -162,3 +167,7 @@
   augment; // Error
   ^^^^^^^";
 }
+static method _#topLevelMethod#augment0() → void {}
+static get _#topLevelProperty#augment0() → core::List<core::int>
+  return <core::int>[42];
+static set _#topLevelProperty#augment0(core::List<core::int> value) → void {}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect b/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect
index e1236aa..7334815 100644
--- a/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect
@@ -122,6 +122,11 @@
     augment; // Error
     ^^^^^^^" in this{<unresolved>}.augment;
   }
+  method _#instanceMethod#augment0() → void {}
+  method _#instanceMethodErrors#augment0() → void {}
+  get _#instanceProperty#augment0() → core::int
+    return 42;
+  set _#instanceProperty#augment0(core::int value) → void {}
 }
 static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
   (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
@@ -168,6 +173,10 @@
   augment; // Error
   ^^^^^^^";
 }
+static method _#topLevelMethod#augment0() → void {}
+static get _#topLevelProperty#augment0() → core::List<core::int>
+  return core::_GrowableList::_literal1<core::int>(42);
+static set _#topLevelProperty#augment0(core::List<core::int> value) → void {}
 
 
 Extra constant evaluation status:
@@ -177,4 +186,4 @@
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:15 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:30 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:20:3 -> NullConstant(null)
-Extra constant evaluation: evaluated: 31, effectively constant: 6
+Extra constant evaluation: evaluated: 32, effectively constant: 6
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.expect
index d309789..fa16fcc 100644
--- a/pkg/front_end/testcases/macros/augment_super.dart.weak.expect
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.expect
@@ -122,6 +122,11 @@
     augment; // Error
     ^^^^^^^" in this{<unresolved>}.augment;
   }
+  method _#instanceMethod#augment0() → void {}
+  method _#instanceMethodErrors#augment0() → void {}
+  get _#instanceProperty#augment0() → core::int
+    return 42;
+  set _#instanceProperty#augment0(core::int value) → void {}
 }
 static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
   (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
@@ -162,3 +167,7 @@
   augment; // Error
   ^^^^^^^";
 }
+static method _#topLevelMethod#augment0() → void {}
+static get _#topLevelProperty#augment0() → core::List<core::int>
+  return <core::int>[42];
+static set _#topLevelProperty#augment0(core::List<core::int> value) → void {}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect
index d309789..fa16fcc 100644
--- a/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect
@@ -122,6 +122,11 @@
     augment; // Error
     ^^^^^^^" in this{<unresolved>}.augment;
   }
+  method _#instanceMethod#augment0() → void {}
+  method _#instanceMethodErrors#augment0() → void {}
+  get _#instanceProperty#augment0() → core::int
+    return 42;
+  set _#instanceProperty#augment0(core::int value) → void {}
 }
 static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
   (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
@@ -162,3 +167,7 @@
   augment; // Error
   ^^^^^^^";
 }
+static method _#topLevelMethod#augment0() → void {}
+static get _#topLevelProperty#augment0() → core::List<core::int>
+  return <core::int>[42];
+static set _#topLevelProperty#augment0(core::List<core::int> value) → void {}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect
index 6d9c5f8..c063461 100644
--- a/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect
@@ -122,6 +122,11 @@
     augment; // Error
     ^^^^^^^" in this{<unresolved>}.augment;
   }
+  method _#instanceMethod#augment0() → void {}
+  method _#instanceMethodErrors#augment0() → void {}
+  get _#instanceProperty#augment0() → core::int
+    return 42;
+  set _#instanceProperty#augment0(core::int value) → void {}
 }
 static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
   (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
@@ -168,6 +173,10 @@
   augment; // Error
   ^^^^^^^";
 }
+static method _#topLevelMethod#augment0() → void {}
+static get _#topLevelProperty#augment0() → core::List<core::int>
+  return core::_GrowableList::_literal1<core::int>(42);
+static set _#topLevelProperty#augment0(core::List<core::int> value) → void {}
 
 
 Extra constant evaluation status:
@@ -177,4 +186,4 @@
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:15 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:30 -> NullConstant(null)
 Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:20:3 -> NullConstant(null)
-Extra constant evaluation: evaluated: 30, effectively constant: 6
+Extra constant evaluation: evaluated: 31, effectively constant: 6
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 7be4428..d19b28b 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -112,6 +112,7 @@
 inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1: FormatterCrash
 late_lowering/later: FormatterCrash
 macros/augment_class: FormatterCrash
+macros/augment_concrete: FormatterCrash
 macros/augment_super: FormatterCrash
 macros/class_members: FormatterCrash
 macros/inject_constructor: FormatterCrash
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 93f8ea9..ae11a58 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -2904,7 +2904,7 @@
   /// Valid values are from 0 and up, or -1 ([TreeNode.noOffset]) if the file
   /// start offset is not available (this is the default if none is specifically
   /// set).
-  int startFileOffset = TreeNode.noOffset;
+  int fileStartOffset = TreeNode.noOffset;
 
   final ProcedureKind kind;
   int flags = 0;
@@ -2912,31 +2912,6 @@
   @override
   FunctionNode function;
 
-  // The function node's body might be lazily loaded, meaning that this value
-  // might not be set correctly yet. Make sure the body is loaded before
-  // returning anything.
-  @override
-  int get transformerFlags {
-    function.body;
-    return super.transformerFlags;
-  }
-
-  // The function node's body might be lazily loaded, meaning that this value
-  // might get overwritten later (when the body is read). To avoid that read the
-  // body now and only set the value afterwards.
-  @override
-  void set transformerFlags(int newValue) {
-    function.body;
-    super.transformerFlags = newValue;
-  }
-
-  // This function will set the transformer flags without loading the body.
-  // Used when reading the binary. For other cases one should probably use
-  // `transformerFlags = value;`.
-  void setTransformerFlagsWithoutLazyLoading(int newValue) {
-    super.transformerFlags = newValue;
-  }
-
   ProcedureStubKind stubKind;
   Reference? stubTargetReference;
 
@@ -3025,6 +3000,31 @@
         "$memberSignatureOrigin for $this.");
   }
 
+  // The function node's body might be lazily loaded, meaning that this value
+  // might not be set correctly yet. Make sure the body is loaded before
+  // returning anything.
+  @override
+  int get transformerFlags {
+    function.body;
+    return super.transformerFlags;
+  }
+
+  // The function node's body might be lazily loaded, meaning that this value
+  // might get overwritten later (when the body is read). To avoid that read the
+  // body now and only set the value afterwards.
+  @override
+  void set transformerFlags(int newValue) {
+    function.body;
+    super.transformerFlags = newValue;
+  }
+
+  // This function will set the transformer flags without loading the body.
+  // Used when reading the binary. For other cases one should probably use
+  // `transformerFlags = value;`.
+  void setTransformerFlagsWithoutLazyLoading(int newValue) {
+    super.transformerFlags = newValue;
+  }
+
   @override
   void bindCanonicalNames(CanonicalName parent) {
     parent.getChildFromProcedure(this).bindTo(reference);
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
index cc22844..a4fd2ba 100644
--- a/pkg/kernel/lib/binary/ast_from_binary.dart
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart
@@ -1706,7 +1706,7 @@
     }
     int transformerFlags = getAndResetTransformerFlags();
     assert(((_) => true)(debugPath.removeLast()));
-    node.startFileOffset = startFileOffset;
+    node.fileStartOffset = startFileOffset;
     node.fileOffset = fileOffset;
     node.fileEndOffset = fileEndOffset;
     node.flags = flags;
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 781c8ba..6b7c969 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -1348,7 +1348,7 @@
     writeByte(Tag.Procedure);
     _writeNonNullCanonicalName(canonicalName);
     writeUriReference(node.fileUri);
-    writeOffset(node.startFileOffset);
+    writeOffset(node.fileStartOffset);
     writeOffset(node.fileOffset);
     writeOffset(node.fileEndOffset);
     writeByte(node.kind.index);
diff --git a/pkg/kernel/lib/clone.dart b/pkg/kernel/lib/clone.dart
index d8f5c67b..2de4631 100644
--- a/pkg/kernel/lib/clone.dart
+++ b/pkg/kernel/lib/clone.dart
@@ -917,7 +917,7 @@
       ..annotations = cloneAnnotations && !node.annotations.isEmpty
           ? node.annotations.map(super.clone).toList()
           : const <Expression>[]
-      ..startFileOffset = _cloneFileOffset(node.startFileOffset)
+      ..fileStartOffset = _cloneFileOffset(node.fileStartOffset)
       ..fileOffset = _cloneFileOffset(node.fileOffset)
       ..fileEndOffset = _cloneFileOffset(node.fileEndOffset)
       ..flags = node.flags;
diff --git a/pkg/kernel/lib/src/equivalence.dart b/pkg/kernel/lib/src/equivalence.dart
index a5efbee..a1f334a 100644
--- a/pkg/kernel/lib/src/equivalence.dart
+++ b/pkg/kernel/lib/src/equivalence.dart
@@ -1786,7 +1786,7 @@
     }
     visitor.pushNodeState(node, other);
     bool result = true;
-    if (!checkProcedure_startFileOffset(visitor, node, other)) {
+    if (!checkProcedure_fileStartOffset(visitor, node, other)) {
       result = visitor.resultOnInequivalence;
     }
     if (!checkProcedure_kind(visitor, node, other)) {
@@ -5172,10 +5172,10 @@
     return checkMember_fileOffset(visitor, node, other);
   }
 
-  bool checkProcedure_startFileOffset(
+  bool checkProcedure_fileStartOffset(
       EquivalenceVisitor visitor, Procedure node, Procedure other) {
     return visitor.checkValues(
-        node.startFileOffset, other.startFileOffset, 'startFileOffset');
+        node.fileStartOffset, other.fileStartOffset, 'fileStartOffset');
   }
 
   bool checkProcedure_kind(
diff --git a/samples/ffi/async/async_test.dart b/samples/ffi/async/async_test.dart
index f438582..3210140 100644
--- a/samples/ffi/async/async_test.dart
+++ b/samples/ffi/async/async_test.dart
@@ -9,7 +9,10 @@
 import 'sample_async_callback.dart' as sample0;
 import 'sample_native_port_call.dart' as sample1;
 
-main() {
-  sample0.main();
-  sample1.main();
+main() async {
+  print('==========');
+  await sample0.main();
+  print('==========');
+  await sample1.main();
+  print('==========');
 }
diff --git a/samples_2/ffi/async/async_test.dart b/samples_2/ffi/async/async_test.dart
index 297a76e..5470052 100644
--- a/samples_2/ffi/async/async_test.dart
+++ b/samples_2/ffi/async/async_test.dart
@@ -11,7 +11,10 @@
 import 'sample_async_callback.dart' as sample0;
 import 'sample_native_port_call.dart' as sample1;
 
-main() {
-  sample0.main();
-  sample1.main();
+main() async {
+  print('==========');
+  await sample0.main();
+  print('==========');
+  await sample1.main();
+  print('==========');
 }
diff --git a/tools/VERSION b/tools/VERSION
index cb3be23..f2683d3 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 236
+PRERELEASE 237
 PRERELEASE_PATCH 0
\ No newline at end of file
